Skip to content

List conversations

GET
/v1/conversations
curl --request GET \
--url 'https://app.mondochat.io/v1/conversations?limit=50' \
--header 'Authorization: Bearer <token>'

Returns the caller’s inbox: conversations that have a message, the pinned ones first, then the rest by latest message, 50 per page and at most 500 in total. With changed_since it returns instead the conversations whose summary changed after that sequence, oldest change first, with removed, next and has_more; keep latest_seq from the first page without it. view other than all, and q, need workspace.queue; where it is on, all leaves archived conversations out, and the first page carries counts. Needs a session token.

Errors: 422 validation for changed_since with cursor, view or q, for q with a view other than all, or an unknown view; 403 policy_denied with reason queue when workspace.queue is off; 410 gone with reason stale_cursor when changed_since is below the caller’s floor or above latest_seq: reload the inbox, then sync from the new latest_seq.

Guide: Conversations.

cursor
Any of:
string
limit
Limit
integer
default: 50 >= 1 <= 50
changed_since
Any of:
integer
view
Any of:
string
Allowed values: all to_answer follow_up archived
q
Any of:
string
>= 1 characters <= 100 characters

Successful Response

Media typeapplication/json
InboxPage

A page of the viewer’s inbox, or the changes since a sequence.

object
counts
Any of:
Counts

How many conversations each work-queue view holds.

object
follow_up
required
Follow Up

Conversations where the viewer wrote last and got nothing for 24 hours.

integer
to_answer
required
To Answer

Conversations the peer waits on the viewer in.

integer
has_more
Has More

With changed_since, whether more changes remain.

boolean
items
required
Items

The entries on this page.

Array<object>
ConversationSummary

A conversation as an inbox row, from the viewer’s side.

object
alias
Any of:
string
archived
Archived

Whether the viewer archived it; needs workspace.queue.

boolean
id
required
Id

The conversation id.

string format: uuid
last_message
required
Any of:
LastMessage

The latest message of a conversation, as the viewer sees it.

object
auto
Auto

True for an away reply.

boolean
card_type
Any of:
string
Allowed values: call_invite call_ended call_missed purchase offer system signup_invite
created_at
required
Created At

When the message was sent.

string format: date-time
deleted
Deleted

True when deleted for everyone.

boolean
delivered_to_peer
Delivered To Peer

True only for the viewer’s own message once the peer received or read it.

boolean
duration_ms
Any of:
integer
id
required
Id

The message id.

string format: uuid
kind
required
Kind

text, photo, video, voice, system or card.

string
Allowed values: text photo video voice system card
once
Once

True for a view-once message.

boolean
preview
required
Preview

The text or caption up to 140 characters; empty for a message deleted for everyone; removed by moderation for a redacted one.

string
read_by_peer
Read By Peer

True only for the viewer’s own message once the peer has read it, and false while either participant has read_receipts off.

boolean
sender_id
required
Any of:
string format: uuid
peer
required
Peer

The other user.

object
avatar
Any of:
string
external_id
required
External Id

The user’s id on your site.

string
id
required
Id

The user’s id in mondochat.

string format: uuid
last_seen_at
Any of:
string format: date-time
name
required
Name

Display name.

string
online
Any of:
boolean
presence_pass
Any of:
string
role
required
Role

A role key from the app’s roles.

string
tier
Any of:
string
pinned
Pinned

Whether the viewer pinned it; false while workspace.pins is off.

boolean
seq
required
Seq

The viewer’s inbox sequence for this row; keep the higher seq.

integer
spent
Any of:
Money

An amount of money.

object
amount_minor
required
Amount Minor

The amount in minor units, such as cents.

integer
currency
required
Currency

ISO 4217 currency code.

string
unread_count
required
Unread Count

Messages from the peer the viewer has not read.

integer
waiting_since
Any of:
string format: date-time
latest_seq
required
Latest Seq

The viewer’s latest inbox sequence; keep the one from the first page.

integer
next
Any of:
integer
next_cursor
Any of:
string
removed
Removed

With changed_since, the ids no longer listed; else empty.

Array<string>
default:

Example

{
"has_more": false,
"items": [
{
"archived": false,
"id": "0199d6a0-2000-7000-8000-000000000001",
"last_message": {
"auto": false,
"created_at": "2026-11-01T09:58:30Z",
"deleted": false,
"delivered_to_peer": false,
"id": "0199d6a0-3000-7000-8000-000000000001",
"kind": "text",
"once": false,
"preview": "Hi Alice",
"read_by_peer": false,
"sender_id": "0199d6a0-1000-7000-8000-000000000002"
},
"peer": {
"avatar": "https://example.test/bob.jpg",
"external_id": "bob",
"id": "0199d6a0-1000-7000-8000-000000000002",
"last_seen_at": "2026-11-01T09:58:00Z",
"name": "Bob",
"online": true,
"presence_pass": "example-presence-pass",
"role": "member"
},
"pinned": false,
"seq": 7,
"unread_count": 1
}
],
"latest_seq": 7,
"removed": []
}

Problem

Media typeapplication/problem+json

An RFC 9457 problem: the body of every error answer.

object
code
required

The stable error code to branch on, such as policy_denied.

string
detail

What went wrong this time, when there is more to say.

string | null
errors

For validation, one entry per invalid field.

Array<object>

One invalid field.

object
loc

The path to the field.

array
msg

What is wrong with it.

string
instance

The path of the request.

string
reason

For policy_denied and limit_reached, the rule or limit that refused the request; for forbidden, a short cause such as you_blocked; for banned, temporary when the ban expires.

string
status
required

The HTTP status code.

integer
title
required

A short summary of the problem.

string
type
required

A URL that names the problem, https://app.mondochat.io/problems/<code>.

string

Example

{
"code": "policy_denied",
"detail": null,
"instance": "/v1/conversations/0199d6a0-2000-7000-8000-000000000001",
"reason": "pins",
"status": 403,
"title": "Policy denied",
"type": "https://app.mondochat.io/problems/policy_denied"
}