Post a message to a ticket

Adds a message to a ticket conversation. Requires scope messages:write (tickets:write alone does not grant it), and the endpoint must be enabled for your MSP — otherwise it returns 403 FEATURE_NOT_AVAILABLE.

Content rules. body is capped at 64 KiB of UTF-8 and validated against body_format. Unsafe or unsupported markup is rejected, never silently stripped, so an accepted message is stored as submitted apart from link hardening (rel="noopener noreferrer") and, for text bodies, HTML escaping. The 422 responses distinguish UNSAFE_CONTENT_DETECTED, INVALID_MESSAGE_FORMAT, EMPTY_MESSAGE_BODY and MESSAGE_TOO_LARGE.

Duplicates. Supports X-Idempotency-Key (replays return the original message with X-Idempotent-Replayed: true). Separately, reusing an external_ref returns 409 DUPLICATE_MESSAGE — unlike ticket creation, it does not replay, because a message cannot be read back individually.

Notification of the customer is automatic for public messages and governed by that customer's notification settings; it cannot be requested or suppressed per message.

Note: request-validation failures return 422 VALIDATION_ERROR, the convention across this API.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
Path Params
string
required

Ticket mapping_id.

Body Params
string
enum
Defaults to public

Who can see the message. public is visible to the customer and may trigger notification; private is internal to the MSP. The underlying store has a third value, self, which is a resource-only note with no public-API meaning — sending it is rejected rather than remapped. Omit to default to public.

Allowed:
string
required
length ≤ 65536

Message content. Limited to 65536 bytes of UTF-8. Interpreted according to body_format. Unsafe or unsupported markup is rejected, never silently stripped — see the 422 error codes.

string
enum
Defaults to text

How body is interpreted. html is validated against a small allowed subset (p, br, strong, b, em, i, u, ul, ol, li, a); text is treated as literal text and HTML-escaped so it renders inertly. Stored by the gateway and echoed back — the message store itself has no text/HTML discriminator.

Allowed:
string
required
length ≤ 255

Team member (resource) id posting the message. Must be an active resource in your MSP.

string
length ≤ 128

Opaque reference to the message in your own system. Stored by the gateway and echoed back as source.external_ref; it is not persisted in the message store. Reusing a value returns 409 DUPLICATE_MESSAGE.

Responses

Language
Credentials
Bearer
JWT
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json