Skip to main content

API Reference

Webhooks

Configure outbound webhooks and receive inbound events from WhatsApp and Twilio.

Event Types

Subscribe a webhook to any of these event types (pass them in the events array on create/update):

Conversations & messagesconversation.started, conversation.ended, message.received, message.sent

Voice sessionsvoice_session.started, voice_session.ended, voice_session.failed

Billing & accountbudget.alert, budget.exceeded, credits.low, api_key.expired, invoice.created, payment.succeeded, payment.failed

All outbound webhook payloads are signed with HMAC-SHA256 using the webhook secret (verify the X-CallMissed-Signature header). Deliveries are retried with backoff; inspect attempts via the delivery-log endpoints.

GET/api/v1/webhooks Auth

List configured outbound webhook endpoints

POST/api/v1/webhooks Auth

Create outbound webhook — auto-generates HMAC secret

Request Body

urlstring (required)
eventsarray of event types
PUT/api/v1/webhooks/:id Auth

Update webhook url, events, or is_active

Request Body

urlstring
eventsarray
is_activeboolean
DELETE/api/v1/webhooks/:id Auth

Delete a webhook

POST/api/v1/webhooks/:id/test Auth

Send a test payload (HMAC-SHA256 signed)

GET/api/v1/webhooks/:id/deliveries Auth

List recent delivery attempts with status and response

GET/api/v1/webhooks/whatsapp

Meta webhook verification (hub.challenge)

POST/api/v1/webhooks/whatsapp

Receive WhatsApp messages from Meta

POST/api/v1/webhooks/twilio/voice

Twilio inbound call — returns TwiML

POST/api/v1/webhooks/twilio/status

Twilio call status updates

WS/ws/call/:call_id?api_key=cm_xxx Auth

WebSocket for real-time voice audio streaming (requires API key query param)

Was this page helpful?