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": "RESOLVED"
}Responses
200Success
{
"id": "3f2b1c9a-7d4e-4b21-9c33-0a1b2c3d4e5f",
"status": "PROCESSING",
"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).- Setting
ESCALATINGrequires a non-emptyescalation_reasonand pages your operators. - 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.