GET
/api/public/v1/conversations

List conversations

The channels, direct messages and group chats the token’s employee belongs to, most recent activity first. Membership is the access rule rather than the scope: this is that person’s inbox, not the company’s, and a channel they are not in is simply absent. `threads:admin` additionally keeps archived channels visible, so a moderator can still reach one to restore or delete it. `title` is derived rather than stored — a DM or group has no name of its own, so it is built from who is in it, from the reader’s point of view. A DIRECT or GROUP conversation somebody opened in the composer but never sent to stays invisible to everyone but its initiator until the first message goes.

Required scope

The access token must carry this scope. A token missing it gets 403 Forbidden. Grant them to an API client under Settings → Company → API, and to a teammate under Employee → Permissions.

threads:read

Query Parameters

NameTypeRequiredDescription
limitnumberOptionalMaximum number of items to return (1-100).Default: 20
offsetnumberOptionalNumber of items to skip before starting to collect the result set.Default: 0
sortBystringOptionalField to sort by. Allowed values vary by endpoint.Default: createdAt
sortOrderstring
asc
desc
OptionalSort direction.Default: desc
searchstringOptionalFree-text search across the resource’s primary fields.
createdAfterstringOptionalISO 8601 timestamp — only return items created after this time.
createdBeforestringOptionalISO 8601 timestamp — only return items created before this time.
updatedAfterstringOptionalISO 8601 timestamp — only return items updated after this time.
typestring
CHANNEL
DIRECT
GROUP
OptionalCHANNEL is a named room; DIRECT is 1:1; GROUP is a multi-person DM.
GETExample request
curl
curl -X GET "https://www.pxb.app/api/public/v1/conversations" \
  -H "Authorization: Bearer your_access_token"
200Example response
json
{
  "message": "Conversations retrieved successfully!",
  "content": {
    "conversations": [
      {
        "id": "cnv_5150",
        "referenceId": 88,
        "type": "CHANNEL",
        "title": "engineering",
        "name": "engineering",
        "topic": "Shipping things",
        "description": null,
        "visibility": "PUBLIC",
        "isArchived": false,
        "lastMessageAt": "2026-08-29T18:22:00.000Z",
        "memberEmployeeIds": [
          "emp_12ab",
          "emp_44f1"
        ],
        "createdAt": "2026-01-08T09:00:00.000Z"
      }
    ],
    "pagination": {
      "total": 42,
      "limit": 20,
      "offset": 0,
      "hasMore": true
    }
  }
}

In the console

The same thing done by hand, for anyone comparing the API against the screen they already use.

Threads
/threads