Documentation Index
Fetch the complete documentation index at: https://www.quo.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
This is the beta webhook API, available in open beta. For the existing webhook system, see Legacy webhooks.
Before you start
You’ll need:- A Quo Public API key with permission to manage webhooks.
- An HTTPS endpoint you control. For local development, use a tunnel such as
ngrokorcloudflared. - A runtime that gives you the raw, unparsed request body. This is required for signature verification — see Validate webhook signatures for framework-specific notes.
1. Create the webhook
Pin the subscription to the current API version withx-quo-api-version. The version is recorded once when the webhook is created and used for every subsequent delivery.
key field from the response — that’s your whsec_… signing secret. Treat it like a credential: store it as an environment variable, never in source.
2. Receive the delivery
Each delivery sets three headers and a JSON body. Verify the signature against the raw bytes of the body, then parse.| Header | Purpose |
|---|---|
webhook-id | Stable delivery identifier. Use as your idempotency key. |
webhook-timestamp | Unix seconds when Quo signed the request. |
webhook-signature | Space-separated v1,<base64-signature> entries. |
3. Verify and handle the event
The Svix SDK accepts Quo’s headers andwhsec_… key format unchanged. Reject any delivery whose timestamp is more than five minutes off from your server clock to defeat replay.
200 to acknowledge. Any non-2xx response triggers a retry.
4. Send a test event
Trigger a real, signed delivery to your endpoint without waiting for a real call or message. The response also includes the sample payload inline so you can confirm what your endpoint received.5. Inspect deliveries
Every delivery is recorded. Use these endpoints to debug a missing or failing event:GET /webhooks/:id/events— recent deliveries with status.GET /webhooks/:id/events/:eventId— request body, all attempts, response codes.POST /webhooks/:id/events/:eventId/retry— manually retry a failed delivery.
Next steps
- Overview — delivery semantics, idempotency, retries, ordering.
- Webhook event payloads — schemas and examples for every event type.
- Validate webhook signatures — manual HMAC, framework gotchas, test vector.
- Migrating from legacy — numbered rollout if you have existing legacy webhooks.