List conversations▾
GET

List conversations

The inbox as an API: open, pending and closed threads with their session state.

One conversation exists per contact per connected number. session_expires_at tells you whether a free-form reply is still allowed.

GET/v1/conversations

Query parameters

statusenum

Filter by thread status.

openpendingclosed

assignee_idstring

Only threads assigned to this user. Pass unassigned for the queue.

has_unreadboolean

Only threads with unread inbound messages.

limitintegerdefault 25

Page size, 1–100.

cursorstring

From the previous page's next_cursor.

curl -X GET https://api.sendport.tech/v1/conversations \
  -H "Authorization: Bearer $SENDPORT_KEY"

Responses

200OK
{
  "object": "list",
  "data": [
    {
      "object": "conversation",
      "id": "conv_01JZQ3F8X0QG7T2S4N8V1PZAKD",
      "contact": { "wa_id": "201005550123", "name": "Nadia Haddad" },
      "channel_number": "+15550100200",
      "status": "open",
      "assignee": { "id": "usr_01JZQ0A1", "name": "Amina R.", "email": "amina@example.com" },
      "unread_count": 2,
      "session_expires_at": "2026-09-07T03:41:02.000Z",
      "last_message_at": "2026-09-06T09:41:02.000Z",
      "created_at": "2026-08-30T10:02:11.000Z"
    }
  ],
  "has_more": false,
  "next_cursor": null
}
401Unauthorized
{
  "error": {
    "type": "authentication_error",
    "code": "missing_api_key",
    "message": "No API key provided.",
    "doc_url": "https://sendport.tech/docs/errors#missing_api_key",
    "request_id": "req_9f3c2a7b41de08c5b2e6"
  }
}
Try itsandbox