Register a webhook endpoint

Registers a webhook endpoint and returns its signing secret.

Requires the webhooks:write ability. It does not require a verified account.

This is the only response on the API that carries secret, apart from the rotate operation. Store it the moment you read it; no later request can retrieve it. It is 64 lowercase hexadecimal characters with no prefix — do not validate it against a prefix and do not split it on a separator.

A URL can be registered once per account, not once per key. Registering a URL that another of your keys already holds is refused with 422 WEBHOOK_ALREADY_EXISTS, and the refusal does not name which key holds it.

The endpoint outlives the API key that created it. Deleting that API key does not delete the endpoint: it is left with no key associated, keeps the same secret, stays in the list and goes on receiving deliveries. Do not re-register it under the replacement key — that is refused with 422 WEBHOOK_ALREADY_EXISTS, because the URL is already registered on the account.

Revoking a compromised API key therefore does not close the endpoints registered with it. Stopping deliveries to an endpoint is its own operation: deactivate it with the update operation, delete it, or rotate its secret. Any key of the account with webhooks:write can do that, including one created afterwards.

An endpoint is created active. is_active is not accepted here; deactivate an endpoint later with the update operation.

Refusals past the shared ones: 422 VALIDATION_FAILED, 422 WEBHOOK_ALREADY_EXISTS — which carries no errors key — and 500 SYSTEM_DATABASE_ERROR.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
Body Params

is_active is not accepted here — an endpoint is created active. The signing secret cannot be supplied either: it is generated for you and returned once, in the create response.

uri
required
length ≤ 500

Your endpoint's URL. Publish it over HTTPS: a delivery carries the payer data your payload contains.

A URL can only be registered once per account, not once per API key: registering one that another of your keys already holds is refused with 422 WEBHOOK_ALREADY_EXISTS, and the refusal does not name which key holds it.

string | null

A label for your own use.

events
array of objects
required
length ≥ 1

At least one event. Values outside the enum are refused.

events*
Allowed:
Responses

Language
Credentials
URL
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json