List an agent's conversations
GET/v1/agents/:agentId/conversations
x-scope: "conversations:read"
The agent's conversations, the most recently active first (pinning is a dashboard view
and doesn't change the order). Each one carries its last message, who wrote it and when,
whether the team has read it, its attention flags, the AI's state and its assignee, so you
can tell which ones have new messages without reading them: poll with active_since
set a few minutes before the newest last_message_at you have seen (messages sent from
the WhatsApp or Meta apps carry the platform's earlier time), page while has_more, and
drop messages you already have by id. active_since follows last_message_at only: a
change of status, read state, flags or assignee doesn't bring a conversation back, and
neither does a customer's photo, voice note, sticker or file sent without a caption until
a later message, such as the AI's answer, moves last_message_at. A conversation with no
message yet (such as a website chat the visitor opened but hasn't written in) isn't
listed; getConversation reads it.
search matches the customer's name or the last message only; nothing searches inside
message history. Deleted conversations never appear. Filtered by status, channel,
is_read, urgent or assigned_to without active_since (and without contact_id), the
list covers the last 90 days of activity before active_before or now; send active_since
to reach further back.
Request
Responses
- 200
- 401
- 403
- 404
- 422
- 429
- 500
- 503
A page of conversations.
Response Headers
Correlation id for this request — paste into support tickets.
Authentication failed. Single code (invalid_api_key) covers every
sub-case: missing header, wrong scheme, malformed, unknown, revoked or
expired key. The message field disambiguates for humans debugging.
One exception: when the key could not be checked because of a server-side
fault, the status is still 401 but type is internal_error and code
is internal_server_error; retry with backoff.
Response Headers
Correlation id for this request — paste into support tickets.
Authenticated, but not allowed: insufficient_scope (the key lacks the scope in this
operation's x-scope) or agent_not_authorized (the key is limited to other agents).
Response Headers
Correlation id for this request — paste into support tickets.
agent_not_found when the agent is not one of your company's agents (the API never confirms
whether another company's agent exists); endpoint_not_found for a path or method no
endpoint serves, including an id that is not a UUID.
Response Headers
Correlation id for this request — paste into support tickets.
invalid_request_body when the body isn't valid JSON, a field has the wrong type or format, or a field breaks a limit in its schema; param names the field. A query parameter that doesn't parse is invalid_request_body too.
invalid_request for a rule beyond the format, such as a note that is only spaces or a
cursor this list didn't give out.
Response Headers
Correlation id for this request — paste into support tickets.
Per-key rate limit hit. Default is 60/min/key; an endpoint with an
x-rate-limit-per-minute of its own counts in a budget of its own
(today listWhatsAppTemplates, which allows 10/min/key, and
sendConversationMessage, which allows 20/min/key), and its 429
reports that limit in X-RateLimit-Limit. Retry-After tells you when to retry;
X-RateLimit-Reset is the Unix timestamp of the next window.
Per-success-response
X-RateLimit-*headers are a known gap; on 2xx responses these headers are NOT currently emitted. Customers should rely on 429 +Retry-Afterfor backoff signals.
Response Headers
Correlation id for this request — paste into support tickets.
Seconds to wait before retrying.
The per-minute request limit of the endpoint called. Every key has the same limits today.
Remaining requests in the current window. 0 on rejection.
Unix timestamp at which the current window resets.
Unexpected server-side failure. Retry with exponential backoff. If
the failure persists, send us the correlation_id.
Response Headers
Correlation id for this request — paste into support tickets.
Mojeeb couldn't check access because of a temporary fault: the key's,
or on assignLead and assignConversation the teammate's. Nothing was
changed. Retry with backoff.
Response Headers
Correlation id for this request — paste into support tickets.