Create webhook
Register a webhook endpoint to receive event notifications.
The response includes signing_secret — a per-webhook HMAC secret returned
exactly once. Store it immediately; GET /v1/webhooks responses do not
include it. Use it to verify the Relay-Signature header on incoming
deliveries. See the webhook security guide.
Request Body
urlstring · uri · requiredHTTPS endpoint to deliver events to. Must not resolve to a private network.
eventsstring[] · minItems: 1 · requiredEnum values:message.sentmessage.deliveredmessage.failedmessage.status.updatedExample: ["message.status.updated"]
Responses
Webhook created. The signing_secret field is returned only in this response.
idstring · uuidworkspace_idstring · uuidurlstring · urieventsstring[]Enum values:message.sentmessage.deliveredmessage.failedmessage.status.updatedcreated_atstring · date-timeupdated_atstring · date-timesigning_secretstringHMAC-SHA256 signing secret for this webhook. Returned exactly once at create / rotate time.
Example: whsec_3a7b1f9c4d2e8b6a5c0d9e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1bsigning_secret_warningstringHuman-readable reminder that this is a one-shot value.
Update webhook
path Parameters
idstring · uuid · required
Request Body
urlstring · uri · requiredHTTPS endpoint to deliver events to. Must not resolve to a private network.
eventsstring[] · minItems: 1 · requiredEnum values:message.sentmessage.deliveredmessage.failedmessage.status.updatedExample: ["message.status.updated"]
Responses
Webhook updated
idstring · uuidworkspace_idstring · uuidurlstring · urieventsstring[]Enum values:message.sentmessage.deliveredmessage.failedmessage.status.updatedcreated_atstring · date-timeupdated_atstring · date-time
Rotate webhook signing secret
Invalidate the current signing secret and return a new one. In-flight deliveries signed with the prior secret will fail verification on the consumer side once the new secret is in effect. Plan rotations during low-traffic windows.
path Parameters
idstring · uuid · required
Responses
New signing secret issued. Returned only in this response.
idstring · uuidworkspace_idstring · uuidurlstring · urieventsstring[]Enum values:message.sentmessage.deliveredmessage.failedmessage.status.updatedcreated_atstring · date-timeupdated_atstring · date-timesigning_secretstringHMAC-SHA256 signing secret for this webhook. Returned exactly once at create / rotate time.
Example: whsec_3a7b1f9c4d2e8b6a5c0d9e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1bsigning_secret_warningstringHuman-readable reminder that this is a one-shot value.
List webhook delivery attempts
Returns a bare array of delivery records (not a { data, pagination } envelope).
The page and limit parameters control the range query but the response does
not include pagination metadata.
path Parameters
idstring · uuid · required
query Parameters
pageintegerDefault: 1limitintegerItems per page. Defaults to 50 (higher than the standard 20) because delivery logs are typically scanned in bulk during debugging.
Default: 50
Responses
Delivery log entries
idstring · uuidUnique delivery attempt identifier.
webhook_idstring · uuideventstring · enumEnum values:message.sentmessage.deliveredmessage.failedmessage.status.updatedtest.webhook.sentstatus_codeinteger | nullHTTP response code, or null if the request failed at the network layer.
response_bodystringTruncated response body (max 1000 chars).
delivered_atstring · date-timetestboolean | null