SautiDesk
SautiDesk API
Direct messages, notifications and live events

List direct-message threads

GET
/v1/desk/dm/threads

Lists the caller's private conversations with teammates, with the latest message and the unread count for each. These are internal chats that customers never see.

Requires: desk.read scope.

Authorization

bearerAuth
AuthorizationBearer <token>

A SautiDesk API key. An owner or admin makes it under Settings in SautiDesk for a named person and picks the scopes. The key is shown once. Send it as Authorization: Bearer <key>. It acts as that person and as nobody else.

In: header

Query Parameters

cursor?string

next_cursor from the previous page. Leave it out for the first page.

limit?integer

Page size: 100 by default, 100 at most.

Response

OK

Example

{  "data": [    {      "id": "3f2b8c1e-5a4d-4e7b-9c10-2d6a8e4f1b37",      "peer_user_id": "95e86c60-905b-4810-982b-252a6d0ea91b",      "peer_name": "Brian Otieno",      "peer_former": false,      "last_message_at": "2026-10-14T08:30:00Z",      "last_message_preview": "Hi Amina, your order has shipped.",      "unread": 1    }  ],  "next_cursor": "eyJvIjoyNX0",  "has_more": false,  "unread_total": 1}
FieldTypeDescription
datarequiredobject[]
idrequiredstring (uuid)
peer_user_idrequiredstring (uuid) | nullThe id of the teammate to start a conversation with.
peer_namerequiredstring
peer_formerrequiredboolean
last_message_atrequiredstring (date-time) | null
last_message_previewrequiredstring
unreadrequiredinteger
next_cursorrequiredstring | null
has_morerequiredboolean
unread_totalrequiredinteger
curl -X GET "https://api.sautidesk.com/v1/desk/dm/threads"