Delete a webhook subscription
Permanently deletes the webhook and stops all delivery to it, returning 204 No Content with an empty body.
Permanently deletes the webhook and stops all delivery to it, returning 204 No Content with an empty body. The {webhook} path segment accepts either the webhook id or the exact registered url (URL-encoded), which is convenient when you track endpoints by address rather than id. The delete is scoped to your organization and idempotent: deleting an id or URL that does not exist still returns 204. To stop delivery temporarily without losing the subscription or its signing secret, pause the webhook instead of deleting it. Rate limited to 20 deletes per hour; requires the webhooks:write scope.
Scope: webhooks:write. Send the API key as a bearer token; Scopes lists what each one reaches.
Request
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
webhook | string | yes | The webhook's ID. |
Response
200 Success. Body: application/json, DeleteResponse.
| Field | Type | Required | Description |
|---|---|---|---|
deleted | boolean | yes |
Errors
Every error has the same body, {"error": {"type", "code", "message", "param"}}; branch on code. Errors lists every code.
| Status | Meaning |
|---|---|
400 | The request is malformed or a value is invalid (invalid_request, invalid_domain, idempotency_key_mismatch). |
401 | The API key is missing or invalid. |
403 | The key lacks the scope this endpoint needs (scope_missing) or may not do this (not_permitted). |
404 | No such resource in this account (resource_not_found). |
422 | The request is well-formed but a field failed validation (validation_failed). |
429 | Rate limit, plan limit, budget or spend cap reached (rate_limited, plan_limit_reached, budget_exceeded, spend_cap_reached). |
500 | An unexpected error; retry with backoff, then contact support (internal_error). |