Get Conversation by ID
Fetch a previously stored question/answer turn by its conversation_id.
GET /chat/conversation/{conversation_id}/ to retrieve a single question/answer turn that was created by an earlier POST /chat/query/ call. The response uses the same shape as the non-streaming /chat/query/ response, so the same client code that consumes a fresh agent answer can also display a stored one.
Send your API key in the X-API-KEY header. The only input is the conversation_id path parameter.
When to use
- Re-fetch after a stream disconnect. If an SSE client lost the connection mid-stream, the agent pipeline still finishes and persists the result. Call this endpoint with the
conversation_idfrom thestartevent to retrieve the final answer. - Re-display a prior turn without re-running the agent.
- Async workflows that hand the
conversation_idbetween systems.
Where to get a conversation_id
Every POST /chat/query/ response includes a conversation_id:
- In the JSON response body (
conversation_idfield). - In both the SSE
startanddoneevents when streaming.
conversation_id is assigned for every /chat/query/ call, including follow-ups inside the same chat_id.
Response Notes
- The response body matches
POST /chat/query/(JSON path) field-for-field:final_answer,thinking,chat_id,chat_url,conversation_id,sources,mode,tools,content. final_answeris recovered from the persisted answer text and cleaned the same way the live path cleans it (<answer>,<ref>,<abbr>, and citation markup are stripped).toolsandcontentreproduce the agent’s reasoning trail: every tool call the agent made (with its arguments, output, and status) plus the ordered text/tool transcript. These are populated from the stored conversation state.sourcesincludes the same per-entryid,type,display_name, and (for paginated docs)pagefields as the live/chat/query/response.thinkingis populated from the legacy agent-logs side panel when the turn was answered by the legacy orchestrator; for turns produced by the current agent pipeline it is always""(inspecttools/contentinstead).modereflects the value echoed back when the conversation was answered.- The endpoint is read-only. It does not run the agent, does not consume floating-session capacity, and is not subject to the per-
(API key, user_id)concurrency limit. - Returns 404 if no conversation with this ID exists in the API key’s organization (including conversations whose chat has been deleted).
Example Response
Authorizations
Path Parameters
The integer identifier returned in conversation_id from a prior /chat/query/ response (or the start / done SSE events).
Response
Stored conversation, in the same shape as the JSON response from POST /chat/query/.
Agent response.
Cleaned answer text returned by the agent. Internal markup (<answer>, <ref>, <abbr>, citation tokens) is stripped.
Aggregated reasoning string from the legacy multi-agent orchestrator: per-agent entries are concatenated in execution order, each prefixed by a header line and separated by a blank line. Empty under the current agent pipeline — use tools and content to inspect the reasoning trail instead.
Thread identifier: the Chat UUID for this conversation. Reuse this value in subsequent requests to continue the same thread.
Web UI link to this thread: https://voltai.ai/{organization_name}/chat/{chat_id} using the resolved organization's name.
Identifier of the specific question/answer turn within the thread. A new conversation_id is generated for every /chat/query/ request. Use it with GET /chat/conversation/{conversation_id}/ to fetch this exact turn later.
Evidence cited by the agent. Each entry is annotated with the tool that surfaced it (display_name) and a stable id for joining back to citation tokens in final_answer.
Echo of the request mode. Retained for backwards compatibility; current agent behavior does not depend on it.
Every tool call the agent made while answering this turn, in execution order. Lets non-streaming clients see the same reasoning trail that SSE clients receive as live tool_call / tool_output frames.
Raw agent transcript for the turn: an ordered list of text and tool items as the agent produced them. text items concatenate to final_answer; tool items mirror the entries in tools.
Text fragment emitted by the agent (main agent or a subagent). Concatenate all main-agent text items in order to reconstruct the agent's prose.
- Option 1
- Option 2