Skip to main content
Add a message to an existing ticket — a customer-facing reply or an internal note. Requires the tickets:write scope. Rate limit: 30 requests / minute (see Rate limits).

Prerequisites

  1. API key with tickets:write — create or update under Settings → API.
  2. An existing ticket — get its ticket_number from Create a ticket or GET /public/v1/tickets.
  3. HTTP client — curl, Postman, or any server that can send POST with JSON.

Request

Send only the fields listed below. Extra fields in the JSON body return an error.

Request body

Leave channel unset for the common case — the message is sent on whichever channel the ticket already uses.

Idempotency (optional)

Add an Idempotency-Key header with any unique value you generate per real send attempt (for example a UUID) to safely retry a request — for example after a timeout — without sending the same message twice.
  • First request with a key: processed normally. The response is cached for 1 hour.
  • Same key, same body, within 1 hour: no new message is sent. You get back the exact same response as the first request.
  • Same key, different body: rejected with a 400 IDEMPOTENCY_KEY_CONFLICT error — reuse a key only for retries of the identical request.
  • No key: works exactly as described above, with no duplicate protection.

Attachments

Attach a file in three calls: request an upload URL, upload the file, then confirm it before referencing it here. See Create a ticket → Attachments for the full flow and limits.

Minimal example

Reply on the ticket’s own channel:

Full example

Reply sent from a named agent, with metadata:
Internal note, never sent to the customer:

Response

201 Created — standard v1 success envelope:
status reflects delivery state (queued, sent, delivered, failed, …). A reply is born queued and picked up by the existing send pipeline; a note is delivered immediately since it is never sent out.

Errors

See Errors for the full catalog and request_id usage.
Every successful request creates a new message. Use the optional Idempotency-Key header to safely retry without duplicating it.

Try it first

  1. In Settings → API, create a key with tickets:write.
  2. Create a test ticket (see Create a ticket), then send a message to it using the examples above.
  3. Confirm the message appears in the ticket thread with the expected channel and sender.
Revoke the test key when you are finished.

OpenAPI reference

Interactive schema and Try it for POST /tickets/:ticketNumber/messages.

Create a ticket

Start a ticket, including its first message.

Authentication

Scopes, key rotation, and least privilege.

Rate limits

Write tier (30/min) and backoff on 429.