Create webhook
Create a new webhook configuration. Maximum 50 webhooks per user.
name, url and events are required. url must be a valid URL and events must contain at least one event. Whitespace is trimmed from url before validation.
Webhooks are auto-disabled only once the endpoint has had no successful delivery for 3 days AND has either reached 20 consecutive terminal failures (each one an event that exhausted the full retry ladder) or been failing continuously for 3 days. The owner is emailed; re-enable it with isActive: true.
A restricted (zrk_) API key can only subscribe to events whose resource group the key holds; an event outside the key's groups is rejected with 403, so a restricted key can never create a subscription broader than itself.
disabledResourceGroups restricts the subscription itself, independently of
which key or session later reads it. Events in a disabled group are dropped
before delivery to this endpoint, on live delivery and on every replay path
(test fire, redelivery, dead-letter requeue), even if they are listed in
events. Omit it to receive everything in events, which is how existing
subscriptions behave. A restricted key's own disabled groups are always
unioned in.
Authorization
bearerAuth API key authentication: send your Zernio API key in the Authorization header, prefixed with Bearer.
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
{ "success": true, "webhook": { "_id": "string", "name": "string", "url": "http://example.com", "secret": "string", "events": [ "post.scheduled" ], "isActive": true, "lastFiredAt": "2019-08-24T14:15:22Z", "failureCount": 0, "customHeaders": { "property1": "string", "property2": "string" }, "disabledResourceGroups": [ "publishing" ] }}Verify credential
Checks whether the bearer credential on this request is valid, without reading any data. Accepts an API key or an OAuth access token. Intended for clients that must validate a credential before use (for example an MCP server verifying an incoming token) so they do not have to call a data endpoint to do it.
List webhook delivery logs
Retrieve recorded webhook delivery attempts for the authenticated user, most recent first. Logs are retained for 30 days. Supports filtering by status, event type, webhook ID, and event ID, plus offset-based pagination. For a restricted (zrk_) API key, rows for events outside the key's resource groups are omitted (`pagination.total` may over-count), and an `event` filter naming such an event is rejected with 403. Events blocked by a subscription's own `disabledResourceGroups` are dropped before delivery, so they produce no log rows for anyone; the exception is the five-minute tail after a denylist change, where an already-queued event can still be delivered and logged.