Skip to main content

Delivery

The request we send

POST /your/endpoint HTTP/1.1
Content-Type: application/json

{ … the event body … }
MethodPOST, always
Content-Typeapplication/json
Timeout30 seconds, including connection setup and TLS
RetriesNone
SignatureNone — see Verifying
OrderingNot guaranteed
RedirectsFollowed
TLShttps recommended; http is accepted

Your response body is ignored.

No retry

danger

If your endpoint is down, unreachable, or slower than 30 seconds when an event fires, the event is lost permanently. There is no retry, no dead-letter queue, and no way to ask for it again.

Backfill from the REST API for anything you cannot lose:

EventBackfill with
AccountSMSSMS history
AccountEndedCalls, UserEndedCallsCall history / reports
AccountAITranscriptionTranscription reports
AccountRealTimeCallsNothing. Live state is not recoverable after the fact.

No ordering, no event id

A …RealTimeCalls event can arrive after the …EndedCalls event for the same call. Sort on the timestamps in the payload, not arrival order.

There is no delivery id to deduplicate on. Build a key from the payload — callId + status for calls, id for SMS.

Testing a receiver

There is no test-event button and no sandbox generator. Point a subscription at a capture service (webhook.site, ngrok to your laptop), then trigger the event for real — send yourself a text, make a call — and read what arrives.