Skip to main content
Register an HTTPS endpoint and Originalis POSTs a signed event when an action reaches a terminal state — no polling, no open connection.

Register

The response carries the signing secret (whsec_...) once — store it immediately. Endpoints must be HTTPS on a public address.

Payloads are thin — fetch the resource for truth

Verify signatures

Deliveries follow the Standard Webhooks scheme — off-the-shelf verifier libraries work. Each delivery carries webhook-id, webhook-timestamp, and webhook-signature (v1,base64(HMAC-SHA256(secret, "{id}.{timestamp}.{body}"))):

Delivery semantics

At-least-once. Failed deliveries retry with exponential backoff — up to 11 attempts over roughly 30 minutes. A 4xx from your receiver stops retries immediately (except 408 and 429, which retry like a 5xx).
  • Deduplicate on webhook-id — it is stable across retries.
  • Answer with a 2xx within 10 seconds; do slow work after acknowledging.
  • Inspect recent deliveries at GET /api/v1/webhooks/{webhook_id}/deliveries — status, attempts, and your receiver’s last response code.
Known gap (documented, not silent): a run failed by the background stale-timeout sweep may not produce a webhook — the poll endpoints remain the source of truth.