Get a chat
Fetch one text conversation, transcript included.
turn_count and a rate_per_reply cost instead. Voice conversations live at
/v1/calls.transcript is the stored conversation as { "turns": [...] }, oldest turn first, each turn a
role and a text. A conversation with no turns 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 chat's id, from GET /v1/chats.
Response
Successful Response
One text conversation — a widget chat or a WhatsApp thread.
Separate from a call because a chat has no numbers, no duration, no recording and no transfer, and is priced per assistant reply rather than per minute.
Read-only. A chat begins when someone opens your widget or messages your WhatsApp number, so there is no endpoint that starts one.
The chat's id.
Which agent handled it.
The agent's name as it was at the time — snapshotted, so a later rename does not rewrite history.
Which version of the agent answered.
Where the chat got to — started, in_progress, or completed. A chat has no failure state: it cannot ring, be declined or reach voicemail. completed means no longer active, which includes a visitor simply closing the tab.
widget for a real end user on your site, dashboard for our own chat test button. null means unknown on older rows.
Assistant replies in the session. This is the billing unit for text — voice bills on duration_seconds, which is always null here — so it is published rather than left for you to count out of the transcript and get a different answer than the invoice.
When the chat started (UTC, ISO 8601).
When it ended. null while still open.
Your own passthrough, unchanged.
The chat's own variables. Only your custom bag.
What the chat cost. Priced per assistant reply, not per minute.
Everything your analysis groups extracted, keyed by group then item.
The conversation. Omitted (null) on the LIST unless you pass ?include=transcript.
Deep link to this chat in the Vocily dashboard.