Get a call
Fetch one call’s full record - transcript, cost, recording, and analysis.
/v1/chats/{chat_id}; passing a chat id here returns
404 call_not_found. A malformed id returns the same 404.transcript is the stored conversation as { "turns": [...] }, oldest turn first, each turn a
role and a text. A call that produced no turns at all - a no-answer, a voicemail, or a caller
who hung up on the greeting - stores {}, with no turns key, so check for the key before
walking it.Authorizations
Your API key as a Bearer token, e.g. Authorization: Bearer vk_….
Path Parameters
The call whose contribution to memory you want.
Response
Successful Response
One call: what it was, how it went, and what it cost.
The call's id. Use it on GET /v1/calls/{id} and to join webhook events to this call.
Which agent handled it.
Where the call got to. Mid-call: started (placed, ringing), in_progress, transferring, transfer_answered. Finished: completed, voicemail, no_answer, busy, declined, failed, transfer_completed, transfer_failed. Open set — treat it as a string rather than switching exhaustively.
Which way the call went: inbound, outbound, or web for a call that happened in a browser rather than on a phone. For WHO started it, read origin.
Which campaign placed it, when origin is batch; null otherwise. The join key for a campaign's calls.
WHO started it: widget, dashboard, api, batch, inbound, demo. Answers "is this real traffic or one of my own test clicks?". Nullable, and null means unknown — never treat it as a channel: the column postdates some rows, and a call whose origin was never captured is unattributable forever.
The number dialled from, E.164. null for a web call.
The number dialled, E.164. null for a web call.
How long the call lasted. null until it ends.
When the call was placed or received (UTC, ISO 8601).
When it was answered. null if it never was.
When it ended. null while it is still running.
Exactly what you sent as metadata on POST /v1/calls, unchanged. Your id-to-our-id join key.
The call's own variables — what you sent as variables, or what was resolved for an inbound call. Only the values you can set — the custom namespace.
What the call cost. null until it is finalised after the call.
Everything your analysis groups extracted, keyed by group then item: custom_analysis["Lead QA"]["Lead Temperature"]. Vocily's own summary, sentiment and outcome arrive here too, under "Default Analysis" — there is no separate analysis object.
The conversation. Omitted (null) on the LIST unless you pass ?include=transcript, because it is heavy; always present on get-by-id.
Human-transfer detail — state (transferring, answered, failed), target, reason. null unless a transfer happened.
A stable Vocily URL, never a raw storage link. null until the recording is ready. Fetching it (authenticated) redirects to a short-lived download.
Deep link to this call in the Vocily dashboard — paste it into a bug report.
Which version of the agent answered. The difference between "the agent said something wrong" and "V4 said something wrong" after a deploy. null when that version has since been deleted.