Skip to content

Reply to a ticket

Request

You can reply to a ticket with a message from an admin or on behalf of a contact, or with a note for admins.

Security
bearerAuth
Path
ticket_idstring(Ticket ID)required

The id of the ticket to target.

Not the Inbox ticket ID

This is the internal id field from the API response, not the ticket_id displayed in the Intercom Inbox (e.g., #12345). Use the id value from the ticket object returned by the API.

Example:123
Headers
Intercom-Versionstring(intercom_version)

Intercom API version.
By default, it's equal to the version set in the app package.

Default:"2.16"
Enum:"1.0""1.1""1.2""1.3""1.4""2.0""2.1""2.2""2.3""2.4"
Example:2.16
Bodyapplication/json
One of:
One of:

Payload of the request to reply on behalf of a contact using their intercom_user_id

message_typestringrequired
Value:"comment"
typestringrequired
Value:"user"
bodystringrequired

The text body of the comment.

created_atinteger

The time the reply was created. If not provided, the current time will be used.

Example:1590000000
attachment_urlsArray of strings, (uri), <= 10 items(Attachment URLs)

A list of image URLs that will be added as attachments. You can include up to 10 URLs.

reply_optionsArray of objects(Contact Quick Reply)

The quick reply selection the contact wishes to respond with. These map to buttons displayed in the Messenger UI if sent by a bot, or the reply options sent by an Admin via the API.

intercom_user_idstringrequired

The identifier for the contact as given by Intercom.

curl -i -X POST \
  https://api.intercom.io/tickets/123/reply \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -H 'Intercom-Version: 2.16' \
  -d '{
    "message_type": "comment",
    "type": "admin",
    "admin_id": 991267940,
    "body": "<p>Thanks for reaching out, we'\''re looking into it!</p>"
  }'

Responses

Admin Reply to send Quick Reply Options

Bodyapplication/json
typestring

Always ticket_part

Value:"ticket_part"
Example:"ticket_part"
idstring

The id representing the part.

Example:"3"
part_typestring

Type of the part

Enum:"note""comment""quick_reply"
Example:"note"
bodystring or null

The message body, which may contain HTML.

Example:"<p>Okay!</p>"
created_atinteger, (date-time)

The time the note was created.

Example:1663597223
updated_atinteger, (date-time)

The last time the note was updated.

Example:1663597260

The author that wrote or triggered the part. Can be a bot, admin, team or user.

attachmentsArray of objects(Ticket part attachments)

A list of attachments for the part.

redactedboolean

Whether or not the ticket part has been redacted.

Example:false
translationsobject or null

A map of the reply text keyed by locale code. Backs the ticket.admin.replied.translated webhook topic. original holds the locale code the reply was written in; every other key holds the reply translated into that locale.

Example:
{ "original": "en", "en": "<p>Hello</p>", "fr": "<p>Bonjour</p>" }
Response
{ "type": "ticket_part", "id": "155", "part_type": "comment", "body": "<p>Thanks for reaching out, we're looking into it!</p>", "created_at": 1734537880, "updated_at": 1734537880, "author": { "id": "991267940", "type": "admin", "name": "Ciaran418 Lee", "email": "admin418@email.com" }, "attachments": [], "redacted": false, "app_package_code": "test-integration", "translations": { "original": "en", "en": "<p>Thanks for reaching out, we're looking into it!</p>", "fr": "<p>Merci de nous avoir contactés, nous nous en occupons !</p>" } }