Direct messages, notifications and live events
List a thread's messages
Lists the messages in a direct-message thread, with their attachments. Page backwards with before; limit defaults to 100 and is capped at 100.
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
Path Parameters
id*string
The thread's id (a UUID).
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", "thread_id": "35d0bbe4-0406-4c99-9c19-73bab32a78b7", "sender_user_id": "5452a94c-7311-4fcc-9fa8-ef6527f42b16", "sender_name": "Amina Wanjiru", "sender_former": false, "body": "Hi Amina, your order has shipped.", "ticket_id": "b1e8bf6f-7f06-4c91-96dd-a1eb7abe504b", "ticket": { "ticket_id": "b1e8bf6f-7f06-4c91-96dd-a1eb7abe504b", "ref": "TCK-4471", "title": "Order 1182 has not arrived", "contact_name": "Amina Wanjiru", "transferred_to": "Brian Otieno" }, "client_id": "642d75b7-2106-4687-96a3-70539952a466", "created_at": "2026-10-14T08:30:00Z", "attachments": [ { "id": null, "filename": null, "content_type": null, "size": null, "url": null } ], "kind": "billing", "call": { "caller_user_id": "320ad1ba-40a4-4403-9f51-d9dbff8d97bc", "callee_user_id": "f1c23795-89a4-4ac5-9719-6c07c8bcf095", "started_at": "2026-10-14T08:30:00Z", "answered_at": "2026-10-14T08:30:00Z", "ended_at": "2026-10-14T08:30:00Z", "outcome": "billing", "seconds": 60 } } ], "next_cursor": "eyJvIjoyNX0", "has_more": false}FieldTypeDescription
datarequiredobject[]idrequiredstring (uuid)thread_idrequiredstring (uuid)sender_user_idrequiredstring (uuid) | nullsender_namerequiredstringsender_formerrequiredbooleanbodyrequiredstringThe message text.ticket_idrequiredstring (uuid) | nullThe id of the ticket this is about.ticketanyThe ticket the call belongs to, by id or reference such as TCK-4471.ticket_idrequiredstring (uuid)The id of the ticket this is about.refrequiredstringtitlerequiredstringA short title.contact_namerequiredstringtransferred_torequiredstringclient_idstring | nullAn id you make up for this request. Send the same id when you retry and the server will not add it twice.created_atrequiredstring (date-time)attachmentsrequiredobject[]idrequiredstring (uuid)filenamerequiredstringcontent_typerequiredstringsizerequiredintegerurlrequiredstringkindrequiredstringWhat kind it is.callanycaller_user_idrequiredstring (uuid)callee_user_idrequiredstring (uuid)started_atrequiredstring (date-time)answered_atstring (date-time) | nullended_atstring (date-time) | nulloutcomerequiredstringHow it ended: the name or id of one of your outcomes.secondsrequiredintegernext_cursorrequiredstring | nullhas_morerequiredbooleancurl -X GET "https://api.sautidesk.com/v1/desk/dm/threads/string/messages"