Get call
The call record. status moves queued → dialing → in_progress, then lands on one final value: completed, voicemail, no_answer, busy, failed, timeout or aborted. A final status never changes. ended_reason says why it ended.
cost is settled when the call ends. Only calls that connected are billed. analysis appears once the post-call analysis has settled (see Get call analysis), and a call run by a node-based agent also carries flow.
Webhooks are the better way to follow a call. If you poll, poll every 5 seconds at most. A call id from another workspace is a 404, the same as one that never existed.
Authorizations
Your workspace secret key, sk_live_ followed by 32 hex characters. Create one in the console under Developers.
Path Parameters
The call's id (call_…), from the 202 that created it.
Response
A finished call
Partial call response schema documenting additive fields; other existing call fields are retained.
Analysis embedded on a call and in result/processed events. status preserves the legacy processing state; durable extraction adds state, generation and agent_revision when available. success is explicitly null when unknown.
How an outbound phone call's number was chosen: request (the call's own phone_number_id, or its campaign's), agent (the agent's calls_from), shared (the Mirai shared line, shared with other customers and showing as Mirai) or trunk (a carrier line from a campaign's caller_ids). Absent on inbound, web and WhatsApp calls.
request, agent, shared, trunk The campaign that placed the call. Present on every view and event of a campaign call; absent on every other call.
How the call was held: phone (dialled out, answered inbound, or a WhatsApp call), web (a browser session), text (the console's typed test chat) or realtime (a Realtime API session). The same vocabulary as GET /v2/calls/summary's by_channel. Present wherever created_at is.
phone, web, text, realtime The campaign contact the call was to: the id you sent with the contact, or the one minted for it. Present wherever campaign_id is.
When the call was accepted (RFC 3339, UTC): the time GET /v2/calls orders by and its from/to filter on. Present on GET and list, and in data.call of the ending event (call.completed, call.failed, call.voicemail, call.aborted) and call.processed; not on call.queued or call.started. Absent only on a call stored without one.
A flow agent's call outcome. Present on GET /v2/calls/{id}, GET /v2/calls and call.processed data.call once the call's flow report has arrived (normally within seconds of the call ending); absent before that and on every prompt agent's call.
Phone calls only. The number the call rang from: your phone number (phone_number_id), the campaign's caller ID, or the shared line the call was dialled through. Present once the call has been dialled, and on every event from call.started on; absent on web and realtime calls.
The metadata sent when the call was created — or, for a campaign call, the contact's metadata — echoed unchanged here and in every webhook's data.call. Never given to the agent. Absent when the call has none.
The id of your phone number the call rang from or was answered on. Absent when it rang from the shared line.
pending until the call has ended and its transcript is settled; ready when GET /v2/calls/{id}/transcript returns turns; empty when nobody spoke or media never started; failed when the transcript was lost. Present on GET and list.
pending, ready, empty, failed