Skip to main content
This guide reads the conversations of one contact, and assigns a conversation to a teammate. Use it to show a “Conversations” panel on a customer page in your CRM, or to route work from your own rules. Reading needs the conversations:read permission. Assignment needs conversations:write.

Read the conversations of a contact

The list is newest first. status=open returns the live threads. closed and archived return those states. Omit the parameter for all of them. A conversation holds one of five states: open, ai and human are the live states. The status=open filter returns all three. assigned_via tells you who made the current assignment. member is a person in Kai. api is a call to this API. null is Kai’s own routing.
Read the list with status=open before your send button fires. When a live thread exists and a teammate holds it, a template from your system can arrive in the middle of their conversation.

Assign a conversation

The response is the updated conversation, with assigned_via set to api. Kai does not answer on an assigned conversation. The thread appears in the inbox of the teammate, and Kai invites them to the Matrix room of the thread.
This call moves a conversation that another teammate already holds. Read assigned_member_id first when that matters for your flow.

Release a conversation

The conversation returns to the shared queue. Kai’s own routing does not pick it up again: a released thread waits for a person.

Assignment and account owners

This endpoint moves one conversation. It does not change the account owner of the contact. To route the future conversations of a customer to one teammate, set the account owner instead. See Sync account owners.