For the complete documentation index, see llms.txt. This page is also available as Markdown.

Add a ticket message

Adds a reply or internal note to a ticket

Create a new message for a ticket

post

Creates a new message associated with a specific ticket

Authorizations
AuthorizationstringRequired

Harmony access key, sent as Authorization: AccessKey <your-key>. Create keys in Settings > Access Keys. The tenant is resolved from the key.

Path parameters
ticket_idstringRequired
Header parameters
x-idempotency-keystring · nullableOptional
Body
contentstringRequired
sender_idstring · min: 1 · max: 100Required
message_typestring · enumOptionalDefault: textPossible values:
is_internalbooleanOptionalDefault: false
sourcestring · enum · nullableOptionalPossible values:
attachment_idsstring[]Optional
mentioned_employee_idsstring[] · nullableOptional

Pre-resolved employee IDs to add as watchers. When provided, skips content-based mention parsing.

agent_should_processboolean · nullableOptional

Override for agent processing. True=process, False=skip, None=use agent default processing logic. Only takes effect on threads with an assigned agent.

canned_response_idinteger · nullableOptional

Quick response template the content was composed from. Must belong to the ticket's desk. Publishes a ticket-quick-response-added event alongside the message event.

Responses
201

Successful Response

application/json
idintegerRequired
thread_message_idstring · uuid · nullableOptional
sender_idstringRequired
ticket_idstringRequired
contentstringRequired
message_typestring · enumRequiredPossible values:
is_internalbooleanRequired
edited_atstring · date-time · nullableOptional
sourcestring · enum · nullableOptionalPossible values:
created_atstring · date-timeRequired
updated_atstring · date-timeRequired
deleted_atstring · date-time · nullableOptional
deleted_bystring · nullableOptional
rolestring · nullableOptional
post/api/v1/tickets/{ticket_id}/messages
POST /service-desk/api/v1/tickets/{ticket_id}/messages HTTP/1.1
Host: api.harmony.io
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 207

{
  "content": "text",
  "sender_id": "text",
  "message_type": "text",
  "is_internal": false,
  "source": "slack",
  "attachment_ids": [
    "text"
  ],
  "mentioned_employee_ids": [
    "text"
  ],
  "agent_should_process": true,
  "canned_response_id": 1
}
{
  "id": 1,
  "thread_message_id": "123e4567-e89b-12d3-a456-426614174000",
  "sender_id": "text",
  "ticket_id": "text",
  "content": "text",
  "message_type": "text",
  "is_internal": true,
  "edited_at": "2026-01-01T00:00:00.000Z",
  "attachments": [
    {
      "id": "text",
      "filename": "text",
      "content_type": "text",
      "file_size": 1,
      "upload_status": "pending",
      "created_at": "2026-01-01T00:00:00.000Z",
      "updated_at": "2026-01-01T00:00:00.000Z"
    }
  ],
  "source": "slack",
  "message_metadata": {
    "ANY_ADDITIONAL_PROPERTY": "anything"
  },
  "created_at": "2026-01-01T00:00:00.000Z",
  "updated_at": "2026-01-01T00:00:00.000Z",
  "deleted_at": "2026-01-01T00:00:00.000Z",
  "deleted_by": "text",
  "role": "text"
}

Last updated

Was this helpful?