Create a webhook endpoint
POST/v1/webhooks
Registers an HTTPS endpoint for delivery events. The signing secret is shown once, in this response. Requests to private network addresses are refused.
Required scope: webhooks:manage
Request body
| Field | Type |
|---|---|
urloptional | string |
endpointoptional | string |
eventsoptional | "email.sent" | "email.delivered" | "email.bounced" | "email.complained" | "email.failed" | "email.opened" | "email.clicked" | "email.delivery_delayed" | "email.scheduled" | "email.suppressed" | "email.received"[] |
Unknown fields are rejected, so a typo never silently does nothing.
Example
curl -X POST 'https://api.sendsend.email/v1/webhooks' \
-H "Authorization: Bearer $SENDSEND_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"url": "https://acme.com/hooks/sendsend",
"events": [
"email.delivered",
"email.bounced"
]
}'Response 201
{
"id": "whe_3Hq…",
"object": "webhook_endpoint",
"url": "https://acme.com/hooks/sendsend",
"events": [
"email.delivered",
"email.bounced"
],
"active": true,
"created_at": "2026-10-06T15:00:00.000Z",
"secret": "whsec_…"
}Errors
| Status | Code | When |
|---|---|---|
| 400 | validation_error | The request body or parameters are invalid. The message says which field. |
| 403 | plan_limit_reached | Your plan’s webhook limit is reached. |
| 401 | unauthorized | The API key is missing, invalid or revoked. |
| 403 | forbidden | The key does not have the scope this endpoint needs. |
Every error has the same shape. See Errors.