GET /v1/studio/conversations/{id}/analysis
The analysis of one Studio conversation, with its summary, satisfaction, follow-up, questions and your custom fields.
After a conversation with one of your Studio agents ends, Studio analyses it: a summary, the customer's satisfaction, whether it was resolved, its priority, whether a person should step in, the follow-up you owe, the questions the customer asked, and the custom fields and success criteria you set on the agent. This endpoint returns that analysis.
Where you corrected a label in Studio, you get your correction, as the inbox and the CSV export show it. That covers the sentiment at the end, the contact type, the resolution, the priority, whether a person should step in, and the lead temperature. Conversations from the agent test panel are not returned.
curl https://api.addisassistant.com/v1/studio/conversations/c1000000-0000-4000-8000-000000000010/analysis \
-H "x-api-key: $ADDIS_API_KEY"Path parameters
Prop
Type
Response
{
"conversation_id": "c1000000-0000-4000-8000-000000000010",
"agent_id": "a1000000-0000-4000-8000-000000000010",
"channel": "phone",
"status": "completed",
"skip_reason": null,
"summary": "A new customer asked about the price of the 200 watt home solar kit and paying in instalments. The agent explained the price, the three month plan and what is included, and will send the plan on WhatsApp today.",
"contact_reason": "Wants to buy a home solar kit and pay in instalments.",
"contact_type": "pricing",
"customer_status": "new",
"sentiment": {
"start": "neutral",
"end": "positive",
"reason": "Neutral while comparing prices, then thanked the agent after hearing about installation and the warranty."
},
"friction": [],
"resolution": "resolved",
"priority": "normal",
"needs_human": false,
"needs_human_reason": null,
"follow_up": {
"needed": true,
"action": "Send the instalment plan on WhatsApp",
"when": "today",
"due_at": "2026-10-24T21:00:00+00:00"
},
"lead_temperature": "hot",
"pack": {
"buying_conversation": true,
"need": "strong",
"fit": "some",
"timeline": "strong",
"intent": "strong",
"buying_signals": [{ "text": "Asked about paying in instalments", "turns": [3] }],
"objections": [{ "text": "Has a cheaper quote from another shop", "turns": [5] }],
"interest": "200 watt home solar kit",
"budget": "",
"next_step": "Send the instalment plan on WhatsApp"
},
"addon": {},
"questions": [
{
"question": "How much is the 200 watt home solar kit?",
"topic": "Solar kit prices",
"topic_id": "70000000-0000-4000-8000-000000000001",
"answered": "answered"
}
],
"schema_version": 1,
"profile_version": 1,
"custom_fields": {
"kit_size": "200 watt",
"wants_installation": true,
"budget_etb": null,
"visit_date": null,
"objection": "Has a cheaper quote from another shop"
},
"criteria": [
{
"key": "explained_plan",
"name": "Explained the instalment plan",
"result": "met",
"rationale": "The agent explained the three month plan and what it includes."
}
],
"summary_language": "en",
"started_at": "2026-10-25T06:10:00+00:00",
"analysed_at": "2026-10-25T07:10:30+00:00"
}Prop
Type
The same shape as the webhook
The call.analyzed webhook sends this shape too, without started_at, analysed_at and each question's topic_id. The webhook always carries the labels as Studio first worked them out; this endpoint also shows your corrections. A conversation is analysed again when you ask for it in Studio, and this endpoint always returns the latest analysis.
Errors
| Status | Code | Meaning |
|---|---|---|
| 401 | unauthorized, invalid_api_key | The x-api-key header is missing or not a valid key. |
| 404 | analysis_not_found | No analysis of this conversation in your account: the ID is wrong, the conversation is not yours, it has not been analysed yet, or it came from the agent test panel. |
| 429 | risk_rate_limited | Your account is temporarily limited. See Rate Limits. |
Errors use the error object.
Last updated on