conversations:read for listing and reading, conversations:write for replying and changing state. A key that lacks a scope gets an auth error naming the missing capability — that is an enforced boundary, not a bug.
Conversations are addressed by their display id — the per-account number shown in the dashboard URL and UI — not the global database id. Every tool below takes
conversation_id as that display id.Lists page at 25 per page (
page is 1-based). Messages are cursor-paginated by message id (newest ~20 by default). Counts in list/search/filter results come back under meta.Read tools
Scope:conversations:read.
list_conversations
List conversations in the account, newest activity first (25 per page).
Returns
{data:{meta:{...counts}, payload:[conversation,...]}}.
count_conversations
Return only the conversation counts for a filter, without the conversation list. Use this when you only need totals.
Returns
{meta:{mine_count, assigned_count, unassigned_count, all_count}}.
search_conversations
Full-text search conversations by message content.
Returns
{meta:{...counts}, payload:[conversation,...]}.
filter_conversations
Advanced conversation filtering with structured predicates.
Each predicate is shaped like:
{meta:{...counts}, payload:[conversation,...]}.
get_conversation
Fetch a single conversation by its display id.
Returns the full conversation object —
meta.sender/assignee/team, status, labels, priority, and the most recent message.
get_conversation_messages
List messages in a conversation (cursor-paginated by message id, newest ~20 by default).
Returns
{meta:{contact, assignee, ...}, payload:[message,...]}.
Write tools
Scope:conversations:write.
reply_to_conversation
Post a message to a conversation — a customer-visible reply or an internal note.
Returns the created message object.
assign_conversation
Assign a conversation to an agent and/or a team. Provide at least one ofassignee_id / team_id.
Returns the assigned agent/team object (or
{} when unassigned). Calling with neither argument raises an error.
set_conversation_status
Resolve, reopen, mark pending, or snooze a conversation.
Returns
{payload:{success, conversation_id, current_status, snoozed_until}}.
set_conversation_priority
Set (or clear) a conversation’s priority.
Returns
{} on success.
add_conversation_labels
Set the labels on a conversation.
Returns
{payload:[label,...]}.
Related
Authentication & Scopes
How agent keys authenticate and the default-deny scope model.
Contact Tools
Find, create, update, and label contacts.
REST API
Call the same endpoints directly with a scoped token.

