WhatsApp Gateway
API referenceChats

List chats

Returns a page of the session's chats, served from the gateway's **stored copy** (not a live WhatsApp query), ordered for display. Page through results with `limit` and `cursor`: send the `nextCursor` from the previous response back as `cursor` to fetch the next page. When `nextCursor` is `null` there are no more chats. Requires the `read` capability. **Errors** - `not_found` (404): the session does not exist or is not owned by the caller's organization. - `forbidden` (403): the caller lacks the `read` capability.

GET
/api/v1/sessions/{session}/chats

Authorization

AuthorizationBearer <token>

Send Authorization: Bearer <token>. The router accepts two kinds of token and tries each in turn: a frontend-minted login JWT (verified against the frontend JWKS; the person's org + role are read from it), or an api-key for a script/service (carrying a fixed set of gateway permissions). The bearerFormat: JWT label describes the person-login case.

In: header

Path Parameters

session*string

The WhatsApp session id (a session is one attached WhatsApp number). The session must be owned by the caller's organization or the request fails with not_found.

Query Parameters

limit?integer

Maximum number of chats to return on one page. Clamped to the range 1–200; a missing or zero value defaults to 50.

Formatint64
cursor?string

Opaque pagination cursor. Pass the nextCursor value from the previous response to fetch the next page; treat it as a token and do not parse it. Omit it to get the first page.

Response Body

application/json

application/json

curl -X GET "https://example.com/api/v1/sessions/01HF.../chats"
{  "data": [    {      "archived": false,      "id": 3344,      "jid": "6281234567890@s.whatsapp.net",      "lastMessageAt": 1719662400000,      "mutedUntil": 1751198400000,      "name": "Alice",      "pinned": false,      "sessionId": "01J9ZX8K2QHV0M3T6R7P4N5W8C",      "type": "dm",      "unreadCount": 3    }  ],  "nextCursor": "string"}
{  "error": {    "code": "not_found",    "details": {      "property1": null,      "property2": null    },    "message": "session not found"  }}