Get a conversation
Return one conversation with its transcript, activity, and analysis result.
Endpoint
GET
/api/v1/workspaces/{workspace_id}/conversations/{conversation_id}Authentication
| Operation class | Authentication | Minimum role | API key |
|---|---|---|---|
| customer-api | Bearer API key or dashboard session cookie; dashboard mutations also require X-CX-Request: 1. | member | Allowed |
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
workspace_id | path | string | Yes | — |
conversation_id | path | string | Yes | — |
Request body
This operation has no request body.
Example
curl --request GET 'https://operade.ai/api/v1/workspaces/ws_demo/conversations/conv_demo' \ --header 'Authorization: Bearer YOUR_API_KEY'
Responses
| Status | Description | Content |
|---|---|---|
4XX | Handled client error | application/json: ErrorResponse |
200 | Successful Response | application/json: ConversationDetailResponse |
4XX application/json response schema
| Field path | Type | Reference | Format | Nullable | Required | Enum | Description |
|---|---|---|---|---|---|---|---|
$ | object | ErrorResponse | — | No | Yes | — | — |
error | object | ErrorItem | — | No | Yes | — | — |
error.code | string | — | — | No | Yes | — | — |
error.details | object | — | — | No | No | — | — |
error.message | string | — | — | No | Yes | — | — |
200 application/json response schema
| Field path | Type | Reference | Format | Nullable | Required | Enum | Description |
|---|---|---|---|---|---|---|---|
$ | object | ConversationDetailResponse | — | No | Yes | — | — |
agent_id | string | — | — | No | Yes | — | — |
agent_name | string | — | — | No | Yes | — | — |
analysis | object or null | — | — | Yes | Yes | — | — |
analysis_status | string | — | — | No | Yes | "pending", "processing", "done", "skipped", "failed" | — |
branch_id | string or null | — | — | Yes | Yes | — | — |
branch_name | string | — | — | No | Yes | — | — |
call_successful | boolean or null | — | — | Yes | Yes | — | — |
cost_usd | string | — | — | No | Yes | — | — |
duration_seconds | integer | — | — | No | Yes | — | — |
end_reason | string or null | — | — | Yes | Yes | — | — |
ended_at | string or null | — | date-time | Yes | Yes | — | — |
events | array<ConversationEvent> | — | — | No | Yes | — | — |
events[] | object | ConversationEvent | — | No | Yes | — | — |
events[].created_at | string | — | date-time | No | Yes | — | — |
events[].payload | object | — | — | No | Yes | — | — |
events[].seq | integer | — | — | No | Yes | — | — |
events[].type | string | — | — | No | Yes | — | — |
external_user_id | string or null | — | — | Yes | Yes | — | — |
id | string | — | — | No | Yes | — | — |
input_tokens | integer | — | — | No | Yes | — | — |
is_draft_run | boolean | — | — | No | Yes | — | — |
output_tokens | integer | — | — | No | Yes | — | — |
procedures | array<object> | — | — | No | Yes | — | — |
procedures[] | object | — | — | No | Yes | — | — |
source | string | — | — | No | Yes | "test_chat", "widget", "api", "channel", "agent_test" | — |
started_at | string | — | date-time | No | Yes | — | — |
status | string | — | — | No | Yes | "active", "ended", "failed" | — |
title | string or null | — | — | Yes | Yes | — | — |
transcript | array<TranscriptItem> | — | — | No | Yes | — | — |
transcript[] | object | TranscriptItem | — | No | Yes | — | — |
transcript[].role | string | — | — | No | Yes | "user", "agent" | — |
transcript[].seq | integer | — | — | No | Yes | — | — |
transcript[].text | string | — | — | No | Yes | — | — |
turn_count | integer | — | — | No | Yes | — | — |
version_id | string | — | — | No | Yes | — | — |
workflow | object or null | — | — | Yes | Yes | — | — |
Response example
{
"title": "string",
"id": "string",
"agent_id": "string",
"agent_name": "string",
"status": "active",
"source": "test_chat",
"is_draft_run": false,
"started_at": "2026-01-01T00:00:00Z",
"ended_at": "2026-01-01T00:00:00Z",
"end_reason": "string",
"analysis_status": "pending",
"call_successful": false,
"duration_seconds": 0,
"turn_count": 0,
"input_tokens": 0,
"output_tokens": 0,
"cost_usd": "string",
"external_user_id": "string",
"branch_id": "string",
"branch_name": "string",
"version_id": "string",
"transcript": [],
"events": [],
"analysis": {},
"workflow": {},
"procedures": []
}Errors
Reviewed common and route-declared errors are summarized here; the list is not exhaustive. Start with the distributed error index to find each code's canonical domain page.
| Status | Code | Description |
|---|---|---|
401 | unauthenticated | Authentication is missing, invalid, or revoked. |
403 | forbidden | The authenticated caller does not have access to this operation. |
404 | not_found | The requested workspace resource was not found. |
