Skip to main content
Webhook subscriptions can be managed via the dashboard UI or programmatically via these endpoints. Both use Supabase JWT authentication (not API keys).
These endpoints use dashboard (JWT) authentication, not the /api/v1/* API key surface. Your Supabase session must have the webhooks:manage permission.

Create a subscription

Auth: Supabase JWT + webhooks:manage  |  Status: 201 Created

Request body

Available event types

Response

The response includes a signing_secret field that is shown only once. Store it securely — you’ll need it to verify webhook signatures.
Test tenants can only point webhooks at localhost, 127.0.0.1, *.ngrok.io, or *.test.yotel.in. Production URLs are rejected for test tenants.

List subscriptions

Auth: Supabase JWT + webhooks:manage  |  Status: 200 OK Query parameter: include_disabled (boolean, default false) — set to true to include auto-disabled subscriptions. The signing_secret field is not returned on list/get — only on create and rotate.

Delete a subscription

Auth: Supabase JWT + webhooks:manage  |  Status: 204 No Content

Rotate signing secret

Issues a new signing secret for an existing subscription. A 24-hour grace window accepts signatures from both the old and new secret, giving you time to deploy the new secret without downtime.
Auth: Supabase JWT + webhooks:manage  |  Status: 200 OK The response includes the new signing_secret (shown once). During the grace window, the X-Yotel-Signature header contains both signatures: sha256=OLD,sha256=NEW — your verification code should accept either.

Test a subscription

Sends a synchronous test event to your endpoint and reports the result immediately. This is a dry-run — it bypasses the delivery log.
Auth: Supabase JWT + webhooks:manage  |  Status: 200 OK

Request body

Response


View delivery log

Inspect recent deliveries for a subscription — status, response codes, timing, and retry schedule.
Auth: Supabase JWT + webhooks:manage  |  Status: 200 OK

Query parameters

Response


Subscription response fields