Update a webhook endpoint
PATCH/v1/webhooks/{id}
Change where the endpoint points or which events it receives. Its secret and delivery history are kept. The new URL goes through the same safety checks as when you create one.
Required scope: webhooks:manage
Parameters
| Name | In | Description |
|---|---|---|
idrequired | path | The webhook endpoint id. |
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 PATCH 'https://api.sendsend.email/v1/webhooks/ID' \
-H "Authorization: Bearer $SENDSEND_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"events": [
"email.bounced",
"email.complained"
]
}'Response 200
{
"id": "whe_3Hq…",
"object": "webhook_endpoint",
"url": "https://acme.com/hooks/sendsend",
"events": [
"email.bounced",
"email.complained"
],
"active": true,
"created_at": "2026-10-06T15:00:00.000Z"
}Errors
| Status | Code | When |
|---|---|---|
| 400 | validation_error | The request body or parameters are invalid. The message says which field. |
| 404 | not_found | No such resource in this project. |
| 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.