webhooks permission and is scoped to your partner account.
The subscription object
uuid
Subscription id.
enum
string | null
Your HTTPS receiver URL. Present for
PUSH, null for PULL.string[]
The types you receive.
["*"] means all of them.string
Version of the delivered payload. Defaults to
"1.0".enum
ACTIVE, PAUSED, SUSPENDED, or DELETED.string
A non-sensitive fingerprint of the signing secret.
string
The plaintext signing secret. Returned only on create and rotate.
date-time
When the subscription was created.
Create a subscription
Registers a subscription —PUSH by default, or PULL — and returns your signing secret once.
Body
enum
default:"PUSH"
PUSH or PULL. See delivery modes.string
required
Required for
PUSH; ignored for PULL, where it is stored as null. Must be an absolute https:// URL on a public host, using an allowed port, with no embedded credentials. Maximum 512 characters.string[]
default:"[\"*\"]"
The event types to receive.
string
default:"1.0"
Payload version to deliver.
Create a PULL subscription
Omittarget and set "deliveryMode": "PULL". A PULL subscription never delivers anything — it authorizes and configures the event feed, carrying the eventFilter and schemaVersion that feed reads.
You may have one live PULL subscription per partner, and it requires the events permission. A signing secret is still returned: PULL responses are unsigned, but rotation and the secret hint stay consistent across both modes.
Status codes
Status codes
201 created · 400 invalid or blocked target, target missing for PUSH, or missing permission · 409 duplicate target, active cap of 5 reached, or a live PULL subscription already exists · 422 SQS or SSE requested · 401 / 503 authenticationList subscriptions
Returns all your non-deleted subscriptions, newest first, asdata.subscriptions[] with data.totalCount. Never includes webhook_secret. There is no pagination — you get everything.
Status codes
Status codes
200 · 400 missing permission · 401 / 503 authenticationGet a subscription
Fetches one subscription by its UUID.Status codes
Status codes
200 · 404 not found, not yours, or deleted · 400 non-UUID id or missing permission · 401 / 503 authenticationUpdate a subscription
A partial update: anull or omitted field is left unchanged. You can change the status and the event filter.
Body
enum
PAUSED holds events, ACTIVE resumes delivery, DELETED soft-deletes. SUSPENDED is rejected with a 400 — only Endl sets it.string[]
Replaces the current filter. An empty list resets it to
["*"].Status codes
Status codes
200 · 400 SUSPENDED requested, target supplied, or missing permission · 404 not found · 409 resuming would exceed the active cap · 401 / 503 authenticationRotate the signing secret
Issues a new signing secret and returns it once. This is the only endpoint besides create that returnswebhook_secret.
Status codes
Status codes
200 rotated · 404 not found · 400 missing permission · 401 / 503 authenticationDelete a subscription
Soft-deletes the subscription. It returns200 with status: "DELETED", not an empty 204. In-flight deliveries are cancelled, delivery history is kept, and the URL can be registered again later.
Status codes
Status codes
200 · 404 not found or already deleted · 400 missing permission · 401 / 503 authenticationSend an event to a subscription
Manually sends an already-recorded event to this subscription. This is useful for a subscription that did not exist when the event first occurred. It queues a delivery rather than sending synchronously, and returns adeliveryId you can follow in Deliveries.
Body
string
required
The event id — the value delivered as
X-WEBHOOK-EVENT-ID. Maximum 64 characters.A
200 here means the delivery was queued, not received. Track the returned deliveryId to find out what actually happened.Status codes
Status codes
200 queued · 400 bad eventId, a PULL subscription, a send rate limit, or missing permission · 404 subscription or event not found · 409 conflicting delivery · 401 / 503 authentication