Skip to content
Linq

Create a webhook endpoint

POST/v1/webhook_endpoints

Registers a URL and returns its signing secret.

The secret is returned once, here. Nothing reads it back afterwards.

A brand may hold up to 16 endpoints; a seventeenth is refused 409 endpoint_limit_reached.

Body ParametersJSONExpand Collapse
enabled_events: array of string

The events this endpoint should receive. Must be non-empty, and every name must be one this API emits: a name we do not emit is refused rather than accepted and then matching nothing.

url: string

Absolute https URL. A private or loopback address is refused here rather than failing silently later.

description: optional string

Your own label, ≤200 bytes.

ReturnsExpand Collapse
WebhookEndpointWithSecret object { id, created_at, description, 4 more }

A newly created or newly rotated endpoint. The secret is on this response and on no other; store it now; it is never readable again, and a lost secret is replaced by rotating rather than by looking it up.

id: string

wh_….

created_at: string
formatdate-time
description: string

Your own label. Free text, ≤200 bytes, never interpreted.

enabled_events: array of string

The event types this endpoint receives. Exact names: no wildcards.

secret: string

whsec_…. Sign-verify every delivery with it. Shown once.

status: "enabled" or "disabled"

enabled while it receives deliveries, disabled once you turn it off. A disabled endpoint keeps its secret and its history and resumes on PATCH {"disabled": false}.

One of the following:
"enabled"
"disabled"
url: string

Absolute https URL every delivery for this endpoint is POSTed to.

Create a webhook endpoint

curl https://messages.api.linqapp.com/v1/webhook_endpoints \
    -H 'Content-Type: application/json' \
    -H "Authorization: Bearer $LINQ_AMB_API_KEY" \
    -d '{
          "enabled_events": [
            "message.received",
            "message.sent",
            "message.failed"
          ],
          "url": "https://hooks.example.com/messages"
        }'
{
  "id": "wh_7f3a1c9e",
  "url": "https://hooks.example.com/messages",
  "description": "production receiver",
  "enabled_events": [
    "message.received",
    "message.sent",
    "message.failed"
  ],
  "status": "enabled",
  "created_at": "2026-08-13T02:41:09Z",
  "secret": "whsec_9Qm2ZK8vTn1xR4pL7bYcW0sHdJfA6eUg3iOtN5rXvBk="
}
Returns Examples
{
  "id": "wh_7f3a1c9e",
  "url": "https://hooks.example.com/messages",
  "description": "production receiver",
  "enabled_events": [
    "message.received",
    "message.sent",
    "message.failed"
  ],
  "status": "enabled",
  "created_at": "2026-08-13T02:41:09Z",
  "secret": "whsec_9Qm2ZK8vTn1xR4pL7bYcW0sHdJfA6eUg3iOtN5rXvBk="
}