Update a conversation
Change a conversation’s status and/or priority. Status changes go through the same rules as the operator dashboard.
PATCH/api/v1/conversations/{id}/
Update status and/or priority.
Request
Body
{
"status": "CLOSED",
"priority": "HIGH"
}Responses
200Success
{
"id": "3f2b1c9a-7d4e-4b21-9c33-0a1b2c3d4e5f",
"status": "CLOSED",
"priority": "HIGH",
"subject": "Refund request",
"source": "CHANNEL",
"channel_id": "9a1c5f30-2b6d-4c71-8e42-1a2b3c4d5e6f",
"channel_type": "TELEGRAM",
"ticket_number": 1042,
"detected_language": "en",
"message_count": 7,
"contact": { "id": "7c4e9b02-1a55-4e88-b0d1-2f3a4b5c6d7e", "display_name": "Jane Doe" },
"created_at": "2026-07-01T10:12:00+00:00",
"updated_at": "2026-07-01T10:40:00+00:00",
"last_message_at": "2026-07-01T10:40:00+00:00"
}400Invalid transition
{ "detail": "Cannot transition from NEW to WAITING" }Body fields
- status — optional; target status.
- priority — optional;
LOW/MEDIUM/HIGH/URGENT. - escalation_reason — required when setting status to
ESCALATING.
Rules
PROCESSINGcannot be set here — it’s reached only by assigning an operator (400 use_assignment_to_reach_processing).RESOLVEDcannot be set here either — it’s applied automatically when the AI confirms with the customer that their issue is solved (and the customer can reopen the conversation just by replying). To finish a conversation via the API, setCLOSED.- Setting
ESCALATINGrequires a non-emptyescalation_reasonand pages your operators. - Telegram group conversations: status cannot be changed via this endpoint (
400 status_change_not_supported_for_group). A group conversation’s status is rolled up automatically from its per-topic threads, which are managed in the operator dashboard. Priority updates still work. - Only valid transitions are allowed; an illegal one returns
400with a descriptive message. - Rate limit: 60 requests/minute per API key.
A
conversation.status_changedwebhook fires for every status change — including ones you make through this endpoint.