Skip to main content
GET
Check Webhooks
Auth: TokenAccount or TokenInstanceRate limit: Global (100/min) • Idempotent: yes

Description

Read endpoint. Without query, returns all webhooks (enabled and disabled) on the instance. With ?label=<name>, returns the single webhook with that label (or 404).

Examples

List all

Without a query string, returns the webhooks[] array with all webhooks on the instance (enabled and disabled), sorted alphabetically by label.

A specific one

Passing ?label=analytics-pipeline, returns just the webhook with that label in the envelope’s webhook field (or 404 if it doesn’t exist).

Explicit default

Fetches the default webhook by passing ?label=default. Useful when you created the webhook without specifying a label and want to read just that entry instead of the full list.

Success response

Without ?label=, returns webhooks[] (sorted alphabetically by label, always present, comes back as [] if no webhook exists, and also includes the ones with enabled=false for operational inspection). With ?label=<name>, returns the single object in webhook (same shape as POST). The authorization is decrypted when ENCRYPTION_KEY is configured; if the key was rotated and some value cannot be decrypted, the field is returned encrypted instead of failing the request.
200 OK (list, no ?label=)
200 OK (?label=analytics-pipeline)
array
Present only when there is no ?label=. Sorted alphabetically by label. Always returned even when no webhook exists (webhooks: []).
object
Present only when ?label=<name> is used. Same shape as POST.

Path parameters

string
required
Instance name.

Headers

string
required
TokenAccount or TokenInstance.

Query parameters

string
When present, returns a single webhook (webhook in the envelope). When absent, returns the list (webhooks[]).Passing ?label= (empty) is still considered “present” → it becomes "default" and looks up the row with that label.
  • Listing includes enabled=false, operators see the full history. To list only active ones, filter on the client by w.enabled === true.
  • authorization decrypted: if ENCRYPTION_KEY is configured and the value is encrypted at rest, the repository decrypts it before returning. If the key was rotated and a value cannot be decrypted, the field is returned encrypted (with a warning in the log) instead of failing the request.

Delivery: queue, retry, DLQ

Webhook delivery is async and persisted. Every event that matches a webhook is enqueued in webhook_queue and processed by parallel workers.

Flow

Exponential backoff

After max_attempts (default 5), status becomes failed (DLQ). The row is not deleted automatically, operators can inspect last_error and re-enqueue manually (UPDATE webhook_queue SET status='pending', next_retry_at=now()).

webhook_queue table (ops summary)

Delivered headers

Each POST to your webhook arrives with:
There is no automatic HMAC. Origin validation is the consumer’s responsibility, configure an authorization (Bearer token, API key) and validate it on your endpoint.

Errors

Envelope:

Next

Configure webhook

POST /api/events/webhook/:instance

Event catalog

Schemas of the 6 event types.