Add a ticket message
Adds a reply or internal note to a ticket
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:
falsesourcestring · 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
422
Validation Error
application/json
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?
