SautiDesk
SautiDesk API
Direct messages, notifications and live events

Send a direct message

POST
/v1/desk/dm/threads/{id}/messages

Sends a message in a direct-message thread, with optional ticket_id and attachment_ids for files uploaded first. Send a client_id so a retry does not send the message twice.

Requires: desk.write 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).

Request Body

application/json

Response

OK

Example

{  "message": {    "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": "3f2b8c1e-5a4d-4e7b-9c10-2d6a8e4f1b37",        "filename": "invoice-1182.pdf",        "content_type": "application/pdf",        "size": 1,        "url": "https://example.com/file"      }    ],    "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    }  }}
FieldTypeDescription
messagerequiredobjectA short note for the person receiving the ticket.
idrequiredstring (uuid)
thread_idrequiredstring (uuid)
sender_user_idrequiredstring (uuid) | null
sender_namerequiredstring
sender_formerrequiredboolean
bodyrequiredstringThe 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.
refrequiredstring
titlerequiredstringA short title.
contact_namerequiredstring
transferred_torequiredstring
client_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)
filenamerequiredstring
content_typerequiredstring
sizerequiredinteger
urlrequiredstring
kindrequiredstringWhat kind it is.
callany
caller_user_idrequiredstring (uuid)
callee_user_idrequiredstring (uuid)
started_atrequiredstring (date-time)
answered_atstring (date-time) | null
ended_atstring (date-time) | null
outcomerequiredstringHow it ended: the name or id of one of your outcomes.
secondsrequiredinteger
curl -X POST "https://api.sautidesk.com/v1/desk/dm/threads/string/messages" \  -H "Content-Type: application/json" \  -d '{    "body": "Hi Amina, your order has shipped.",    "ticket_id": "b1e8bf6f-7f06-4c91-96dd-a1eb7abe504b",    "client_id": "642d75b7-2106-4687-96a3-70539952a466",    "attachment_ids": [      "b168aa81-6f59-4ff2-9d3e-1df4c17cff50"    ]  }'