- Webhook endpoints receive
telephony.complete(phone calls) orweb.complete(web calls and builder mic test calls) with the stable payload documented below, a per-deliveryevent_id, a 30 s timeout, and retries for up to 24 h. - The legacy single-URL webhook receives one synchronous attempt (10 s timeout, no retries) with a slightly different payload — see Legacy payload differences.
Request payload (endpoint deliveries)
End reasons
Transcript format
Each entry intranscripts is one conversational turn. Roles are
user (caller speech), model (agent speech and tool calls),
tool (tool results), and system (call events such as language
switches).
For the fully structured turn history (with interruption markers,
ack-prompts, and raw positions), use
GET /v1/calls/{call_id}/history.
Legacy payload differences
The legacy single-URL webhook envelope is{"type": "telephony.complete" | "web.complete", "data": {…}} with
no event_id, and its data differs from the endpoint payload:
- The turn array is under
history, nottranscripts(same turn schema as above). - The field set is the raw end-of-call report and can include additional internal fields beyond the table above — treat unknown fields as informational.
- Web calls (
direction: "web") omitfrom_number/to_numberand addorigin_domain. - Builder mic test calls report as
telephony.completeon the legacy path (the endpoint system maps them toweb.complete). - Transfer coordination: when a call ends in a transfer, the
legacy webhook is called synchronously and may answer
{"transfer_ready": false}to signal the handoff target isn’t ready. Any other response (or no legacy webhook) lets the transfer proceed. Endpoint deliveries are never consulted for this.
Example handler
Common use cases
CRM integration
Persist each call’s transcript + recording URL alongside your
customer records.
Analytics
Stream transcripts to a pipeline for topic modeling, CSAT signal
extraction, or transfer-rate monitoring.
Quality review
Open calls in a QA tool for human review, or run them through your
own evaluation model.
Notifications
Trigger a human teammate on transfer / failure.
Related
telephony.incoming / web.incoming
The blocking counterpart that runs at call start.
Events catalog
Other event types you can subscribe to.
Call history API
Same data accessible via REST for backfill / replay.