Skip to main content
Webhooks deliver asynchronous API events to your HTTPS endpoint. They are the preferred way to process call completion without aggressive polling.

Lifecycle

  1. Create Webhook with an HTTPS URL, supported event names, and a long random secret.
  2. Store the secret immediately. It is shown only in the create response.
  3. Verify the signature against the raw request body before parsing JSON.
  4. Return a success response quickly and process durable work asynchronously.
  5. Update the URL, events, active state, or secret.
  6. Delete subscriptions that are permanently retired.

Delivery-safe consumer design

  • Treat deliveries as at least once and make handlers tolerant of duplicates.
  • Do not assume events arrive in business-time order.
  • Store an event or resource identifier before triggering downstream work.
  • Keep the raw body available for signature verification.
  • Use Get Webhook and List Webhooks to confirm configuration.

Event names

The OpenAPI request schema and event catalog are the source of truth for supported event strings. Do not convert dots to underscores or infer new events from payload fields. The current examples use call.completed and call.failed.