Create a webhook subscription
Changed onCreates a new webhook subscription and returns the signing secret ONCE in the response body. Store it securely — it cannot be retrieved later. Use POST /webhooks/{id}/rotate-secret to issue a new one.
Supply an Idempotency-Key header (any unique string, max 255 chars) to safely retry on network errors. Replays with the same key return the original response; replays with a different body return 409 idempotency_conflict.
Request
- Base URL: https://app.sendmux.ai/api/v1
- URL: https://app.sendmux.ai/api/v1/webhooks
- Auth: one of:
- HTTP bearer
- OAuth 2 (authorization code, authorization URL https://app.sendmux.ai/oauth/authorize, token URL https://app.sendmux.ai/oauth/token, scopes: webhook.create)
Headers
Client-chosen unique key to safely retry the request. Cached for 24h per (team, endpoint, key). Different body with same key returns 409 idempotency_conflict.
Request body
Example request
{
"enabled": true,
"event_types": [
"message.bounced",
"message.received"
],
"filters": {
"mailbox_ids": [
"mbx_clxxxxxxxxxxxxxxxxxxxxxxxxx"
]
},
"name": "Acme inbound forwarder",
"url": "https://hooks.acme.com/sendmux"
}Response
Subscription created, including the signing secret. The response carries a Location header pointing at the canonical GET URL for the new subscription.
Example response
{
"meta": {
"request_id": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx"
},
"data": {
"created_at": "2026-04-23T09:12:00Z",
"enabled": true,
"event_types": [
"message.bounced",
"message.received"
],
"filters": {
"mailbox_ids": [
"mbx_clxxxxxxxxxxxxxxxxxxxxxxxxx"
]
},
"id": "whk_clxxxxxxxxxxxxxxxxxxxxxxxxx",
"name": "Acme inbound forwarder",
"secret": "whsec_a9f3c2…",
"updated_at": "2026-04-23T09:12:00Z",
"url": "https://hooks.acme.com/sendmux"
}
}Changes
- breaking
the
/response's property type changed from no type toobjectfor status - info
removed
subschema #2from the/response propertyallOflist for the response status - info
added the required property
//to the response with the status - info
added the required property
//to the response with the status - info
added the required property
//to the response with the status - info
added the required property
//to the response with the status - info
added the required property
//to the response with the status - info
added the required property
//to the response with the status - info
added the required property
//to the response with the status - info
added the required property
//to the response with the status - info
added the required property
//to the response with the status - info
added the required property
//to the response with the status
- breaking
- info
the endpoint scheme security
oauth2was added to the API
- info