Skip to content

Endpoints

Conversations

Open, close, assign and hand over conversations, pause the AI, and leave team comments.

Paths are relative to the base URL. Each card lists the permission the call needs and every parameter, with its type and limits.

GET
/conversations

List conversations, most recently updated first.

Permission: inbox
Legacy response format

Query parameters

  • limitoptionalinteger

    1–100, default 20.

  • offsetoptionalinteger

    Number of conversations to skip, default 0.

  • Returns a plain JSON array (offset pagination, not the list envelope).
GET
/conversations/:id

Retrieve a conversation with its messages, as { conversation, messages }.

Permission: inbox
Legacy response format

Path parameters

  • idrequiredinteger

    Conversation ID.

GET
/conversations/:id/messages

Poll the AI replies of an API-channel conversation. Returns { conversationId, messages, cursor } with assistant messages newer than since.

Permission: inbox
Legacy response format

Path parameters

  • idrequiredinteger

    Conversation ID.

Query parameters

  • sinceoptionalinteger

    Return only messages with a larger ID (pass the previous cursor). Default 0.

  • For every message of any conversation, use GET /messages?conversation_id= instead.
PUT
/conversations/:id/status

Open or close a conversation, with an optional closing note.

Permission: inbox

Path parameters

  • idrequiredinteger

    Conversation ID.

JSON body

  • statusrequiredenum

    New status.

    Allowed values:openclosed

  • closing_note_idoptionalinteger | null

    A closing note from GET /closing-notes. Only when closing.

  • closing_note_textoptionalstring | null

    Free-text closing note, up to 2,000 characters. Only when closing.

  • allow_reopenoptionalboolean

    When closing: whether a new customer message reopens this conversation (true) or starts a new one (false).

PUT
/conversations/:id/assignee

Assign the conversation to a team member, or unassign it.

Permission: inbox

Path parameters

  • idrequiredinteger

    Conversation ID.

JSON body

  • user_idoptionalstring | null

    A user from GET /users. Omit or send null to unassign.

POST
/conversations/:id/ai/pause

Stop AI replies on a conversation.

Permission: inbox

Path parameters

  • idrequiredinteger

    Conversation ID.

JSON body

  • untiloptionalstring (ISO 8601 date-time with offset) | null

    Resume automatically at this time (must be in the future). Omit to pause until resumed.

  • reasonoptionalstring

    Up to 100 characters, passed to the conversation.ai_paused event.

POST
/conversations/:id/ai/resume

Turn AI replies back on.

Permission: inbox

Path parameters

  • idrequiredinteger

    Conversation ID.

POST
/conversations/:id/handover/resolve

Mark the conversation's open handover requests as handled. Returns resolved_count.

Permission: inbox

Path parameters

  • idrequiredinteger

    Conversation ID.

GET
/conversations/:id/comments

List internal team comments on a conversation, newest first.

Permission: inbox
Paginated

Path parameters

  • idrequiredinteger

    Conversation ID.

POST
/conversations/:id/comments

Add an internal team comment. It is never sent to the customer.

Permission: inbox

Path parameters

  • idrequiredinteger

    Conversation ID.

JSON body

  • bodyrequiredstring

    1–5,000 characters.

  • mentionsoptionalarray of strings

    Up to 20 user IDs from GET /users to notify.