Skip to main content

Delete a Subscription

Request​

POST ~/api/webhook/delete/:id
danger
This is a POST, and delete comes before the id

Two things are surprising here, and both are real:

  1. The verb is POST, not DELETE. These APIs accept only GET and POST; sending DELETE ~/api/webhook/:id returns 405 Method Not Allowed.
  2. delete is a path segment before the id. It is /api/webhook/delete/:id, not /api/webhook/:id/delete.

Getting the path shape wrong is worse than getting the verb wrong: POST ~/api/webhook/:id is the update endpoint, so a mis-formed delete will not fail — it will succeed as an update, quietly overwriting the subscription with whatever body you sent (or with an empty configuration if you sent none).

:id is the server-assigned UUID from create, not your webhookId.

Request
curl -X POST "https://{host}/{instance}/api/webhook/delete/336d997f-d9fa-4612-80e8-9f41a4b41352" \
-H "Authorization: Bearer <access-token>" \
-H "Accept: application/json"

No request body is required.

Response​

The deleted subscription is returned, so you have a record of what was removed:

200 OK
{
"id": "336d997f-d9fa-4612-80e8-9f41a4b41352",
"webhookId": "Webhook identifier",
"url": "https://externalsystem.com",
"description": "Short description of the webhook subscription",
"enabled": true,
"eventTypes": [],
"lastResponseAt": "0001-01-01T00:00:00Z",
"retryCount": 0,
"createdAt": "2018-09-27T20:28:41.3829451Z",
"updatedAt": "2018-09-27T20:28:41.3829451Z",
"createdBy": "Member:20"
}

Keep this response if you might need to recreate the subscription. Note that authorizationHeader and secret are not included — they are write-only, so restoring a deleted subscription requires your own copy of those values.

Delete Versus Disable​

Deleting is usually the wrong tool for "stop these notifications for now". Prefer "enabled": false — it preserves the id, the event type definitions and the credentials, and it is a one-field change to reverse.

Delete when the integration is genuinely retired.

Deleting Every Subscription​

POST ~/api/webhook/delete

The same route with no id deletes subscriptions in bulk.

This deletes every subscription in the instance

POST ~/api/webhook/delete marks all webhook subscriptions in the instance as deleted. It is not scoped to the subscriptions you created, and it is not scoped to a project — it iterates every subscription in the registry.

Every integration in the instance stops receiving events, including ones owned by other teams. There is no confirmation step and no bulk undo.

Note how close it is to the single-subscription form: omitting the id — a trailing-slash bug, an empty variable in a URL template — turns "delete this one" into "delete them all". Guard against an empty id in client code before the request is built.

This route was undocumented in the published reference material.

If you need it, capture the full list first with query so you can reconstruct.