Unfortunately, this feature is not supported on mobile devices. For the best experience, please use a computer.

Intercom API (2.9)

The intercom API reference.

Download OpenAPI description
Languages
Servers
The production API server
https://api.intercom.io/
The european API server
https://api.eu.intercom.io/
The australian API server
https://api.au.intercom.io/

Admins

Everything about your Admins

Operations

Articles

Everything about your Articles

Operations

Companies

Everything about your Companies

Operations

Contacts

Everything about your contacts

Operations

Conversations

Everything about your Conversations

Operations

Data Attributes

Everything about your Data Attributes

Operations

Data Events

Everything about your Data Events

Operations

Data Export

Everything about your Data Exports

Operations

Help Center

Everything about your Help Center

Operations

Messages

Everything about your messages

Operations

News

Everything about your News

Operations

Notes

Everything about your Notes

Operations

Segments

Everything about your Segments

Operations

Subscription Types

Everything about subscription types

Operations

Switch

Everything about Switch

Operations

Tags

Everything about tags

Operations

Teams

Everything about your Teams

Operations

Ticket Type Attributes

Everything about your ticket type attributes

Operations

Ticket Types

Everything about your ticket types

Operations

Tickets

Everything about your tickets

Operations

Ticket

Tickets are how you track requests from your users.

typestring

Always ticket

Default "ticket"
Value"ticket"
Example:

"ticket"

idstring

The unique identifier for the ticket which is given by Intercom.

Example:

"1295"

ticket_idstring

The ID of the Ticket used in the Intercom Inbox and Messenger. Do not use ticket_id for API queries.

Example:

"1390"

ticket_attributesobject(Ticket Attributes)

An object containing the different attributes associated to the ticket as key-value pairs. For the default title and description attributes, the keys are _default_title_ and _default_description_.

Example:

{"default_title":"Found a bug","default_description":"The button's not working"}

ticket_statestring

The state the ticket is currenly in

Enum"submitted""in_progress""waiting_on_customer""resolved"
Example:

"submitted"

ticket_state_internal_labelstring

The state the ticket is currently in, in a human readable form - visible in Intercom

ticket_state_external_labelstring

The state the ticket is currently in, in a human readable form - visible to customers, in the messenger, email and tickets portal.

ticket_typeobject or null(Ticket Type)

A ticket type, used to define the data fields to be captured in a ticket.

contactsobject(Contacts)

The list of contacts affected by a ticket.

admin_assignee_idstring

The id representing the admin assigned to the ticket.

Example:

"1295"

team_assignee_idstring

The id representing the team assigned to the ticket.

Example:

"1295"

created_atinteger(date-time)

The time the ticket was created as a UTC Unix timestamp.

Example:

1663597223

updated_atinteger(date-time)

The last time the ticket was updated as a UTC Unix timestamp.

Example:

1663597260

ticket_partsobject(Ticket Parts)

A list of Ticket Part objects for each note and event in the ticket. There is a limit of 500 parts.

is_sharedboolean

Whether or not the ticket is shared with the customer.

Example:

true

{ "type": "ticket", "id": "1295", "ticket_id": "1390", "ticket_attributes": { "_default_title_": "Found a bug", "_default_description_": "The button's not working" }, "ticket_state": "submitted", "ticket_state_internal_label": "string", "ticket_state_external_label": "string", "ticket_type": { "type": "ticket_type", "id": "1295", "name": "Bug", "description": "A bug that has been reported.", "icon": "🐞", "workspace_id": "ecahpwf5", "ticket_type_attributes": {}, "archived": false, "created_at": 0, "updated_at": 0 }, "contacts": { "type": "contact.list", "contacts": [] }, "admin_assignee_id": "1295", "team_assignee_id": "1295", "created_at": 1663597223, "updated_at": 1663597260, "ticket_parts": { "type": "ticket_part.list", "ticket_parts": [], "total_count": 2 }, "is_shared": true }

Contacts

The list of contacts affected by a ticket.

typestring

always contact.list

Value"contact.list"
Example:

"contact.list"

contactsArray of objects(Contact Reference)

The list of contacts affected by this ticket.

{ "type": "contact.list", "contacts": [ {} ] }

Ticket Part

A Ticket Part represents a message in the ticket.

typestring

Always ticket_part

Example:

"ticket_part"

idstring

The id representing the ticket part.

Example:

"3"

part_typestring

The type of ticket part.

Example:

"comment"

bodystring or null

The message body, which may contain HTML.

Example:

"<p>Okay!</p>"

previous_ticket_statestring

The previous state of the ticket.

Enum"submitted""in_progress""waiting_on_customer""resolved"
Example:

"submitted"

ticket_statestring

The state of the ticket.

Enum"submitted""in_progress""waiting_on_customer""resolved"
Example:

"submitted"

created_atinteger(date-time)

The time the ticket part was created.

Example:

1663597223

updated_atinteger(date-time)

The last time the ticket part was updated.

Example:

1663597260

assigned_toobject(Reference)

reference to another object

authorobject(Ticket part author)

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.

external_idstring or null

The external id of the ticket part

Example:

"abcd1234"

redactedboolean

Whether or not the ticket part has been redacted.

Example:

false

{ "type": "ticket_part", "id": "3", "part_type": "comment", "body": "<p>Okay!</p>", "previous_ticket_state": "submitted", "ticket_state": "submitted", "created_at": 1663597223, "updated_at": 1663597260, "assigned_to": { "type": "contact", "id": "1a2b3c" }, "author": { "type": "admin", "id": "274", "name": "Operator", "email": "operator+abcd1234@intercom.io" }, "attachments": [ {} ], "external_id": "abcd1234", "redacted": false }

Ticket Type

A ticket type, used to define the data fields to be captured in a ticket.

typestring

String representing the object's type. Always has the value ticket_type.

Example:

"ticket_type"

idstring

The id representing the ticket type.

Example:

"1295"

namestring

The name of the ticket type

Example:

"Bug"

descriptionstring

The description of the ticket type

Example:

"A bug that has been reported."

iconstring

The icon of the ticket type

Example:

"🐞"

workspace_idstring

The id of the workspace that the ticket type belongs to.

Example:

"ecahpwf5"

ticket_type_attributesobject(Ticket Type Attributes)

A list of attributes associated with a given ticket type.

archivedboolean

Whether the ticket type is archived or not.

Example:

false

created_atinteger(timestamp)

The date and time the ticket type was created.

updated_atinteger(timestamp)

The date and time the ticket type was last updated.

{ "type": "ticket_type", "id": "1295", "name": "Bug", "description": "A bug that has been reported.", "icon": "🐞", "workspace_id": "ecahpwf5", "ticket_type_attributes": { "type": "string", "ticket_type_attributes": [] }, "archived": false, "created_at": 0, "updated_at": 0 }

Reply to a ticket

Request

You can reply to a ticket with a note from an admin.

Path
idstring(Ticket ID)required

The id of the ticket to target.

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.9
Enum"1.0""1.1""1.2""1.3""1.4""2.0""2.1""2.2""2.3""2.4"
Example:

2.9

Bodyapplication/json
bodystringrequired

The message body of the note, which may contain HTML.

Example:

"<p>Okay!</p>"

message_typestring

The type of the reply. Only note is supported at the moment.

Default "note"
Example:

"note"

admin_idstringrequired

The id of the admin who is making the note.

Example:

"1234"

curl -i -X POST \
  'https://api.intercom.io/tickets/{id}/reply' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -H 'Intercom-Version: 2.9' \
  -d '{
    "message_type": "note",
    "type": "admin",
    "admin_id": 991267687,
    "body": "<html> <body>  <h2>An Unordered HTML List</h2>  <ul>   <li>Coffee</li>   <li>Tea</li>   <li>Milk</li> </ul>    <h2>An Ordered HTML List</h2>  <ol>   <li>Coffee</li>   <li>Tea</li>   <li>Milk</li> </ol>   </body> </html>"
  }'
Experience it firsthand in the API Explorer!

Responses

Admin note reply

Bodyapplication/json
typestring

Always ticket_part

Value"ticket_part"
Example:

"ticket_part"

idstring

The id representing the note.

Example:

"3"

part_typestring

Always note

Value"note"
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

authorobject(Ticket part author)

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

Response
application/json
{ "type": "ticket_part", "id": "98", "part_type": "note", "body": "<h2>An Unordered HTML List</h2>\n<ul>\n<li>Coffee</li>\n<li>Tea</li>\n<li>Milk</li>\n</ul>\n<h2>An Ordered HTML List</h2>\n<ol>\n<li>Coffee</li>\n<li>Tea</li>\n<li>Milk</li>\n</ol>", "created_at": 1717021664, "updated_at": 1717021664, "author": { "id": "991267687", "type": "admin", "name": "Ciaran382 Lee", "email": "admin382@email.com" }, "attachments": [], "redacted": false }

Create a ticket

Request

You can create a new ticket.

Headers
Intercom-Versionstring(intercom_version)

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

Default 2.9
Enum"1.0""1.1""1.2""1.3""1.4""2.0""2.1""2.2""2.3""2.4"
Example:

2.9

Bodyapplication/json
ticket_type_idstringrequired

The ID of the type of ticket you want to create

Example:

"1234"

contactsArray of ID (object) or External ID (object) or Email (object)required

The list of contacts (users or leads) affected by this ticket. Currently only one is allowed

Example:

[{"id":"1234"}]

One of:
contacts[].idstringrequired

The identifier for the contact as given by Intercom.

company_idstring

The ID of the company that the ticket is associated with. The ID that you set upon company creation.

Example:

"1234"

ticket_attributesobject(Ticket Attributes)

The attributes set on the ticket. When setting the default title and description attributes, the attribute keys that should be used are _default_title_ and _default_description_. When setting ticket type attributes of the list attribute type, the key should be the attribute name and the value of the attribute should be the list item id, obtainable by listing the ticket type. For example, if the ticket type has an attribute called priority of type list, the key should be priority and the value of the attribute should be the guid of the list item (e.g. de1825a0-0164-4070-8ca6-13e22462fa7e).

Example:

{"default_title":"Found a bug","default_description":"The button is not working"}

curl -i -X POST \
  https://api.intercom.io/tickets \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -H 'Intercom-Version: 2.9' \
  -d '{
    "ticket_type_id": 69,
    "contacts": [
      {
        "id": "6657abe46abd0164c24b0df2"
      }
    ],
    "ticket_attributes": {
      "_default_title_": "example",
      "_default_description_": "there is a problem"
    }
  }'
Experience it firsthand in the API Explorer!

Responses

Successful response

Bodyapplication/json
typestring

Always ticket

Default "ticket"
Value"ticket"
Example:

"ticket"

idstring

The unique identifier for the ticket which is given by Intercom.

Example:

"1295"

ticket_idstring

The ID of the Ticket used in the Intercom Inbox and Messenger. Do not use ticket_id for API queries.

Example:

"1390"

ticket_attributesobject(Ticket Attributes)

An object containing the different attributes associated to the ticket as key-value pairs. For the default title and description attributes, the keys are _default_title_ and _default_description_.

Example:

{"default_title":"Found a bug","default_description":"The button's not working"}

ticket_statestring

The state the ticket is currenly in

Enum"submitted""in_progress""waiting_on_customer""resolved"
Example:

"submitted"

ticket_state_internal_labelstring

The state the ticket is currently in, in a human readable form - visible in Intercom

ticket_state_external_labelstring

The state the ticket is currently in, in a human readable form - visible to customers, in the messenger, email and tickets portal.

ticket_typeobject or null(Ticket Type)

A ticket type, used to define the data fields to be captured in a ticket.

contactsobject(Contacts)

The list of contacts affected by a ticket.

admin_assignee_idstring

The id representing the admin assigned to the ticket.

Example:

"1295"

team_assignee_idstring

The id representing the team assigned to the ticket.

Example:

"1295"

created_atinteger(date-time)

The time the ticket was created as a UTC Unix timestamp.

Example:

1663597223

updated_atinteger(date-time)

The last time the ticket was updated as a UTC Unix timestamp.

Example:

1663597260

ticket_partsobject(Ticket Parts)

A list of Ticket Part objects for each note and event in the ticket. There is a limit of 500 parts.

is_sharedboolean

Whether or not the ticket is shared with the customer.

Example:

true

Response
application/json
{ "type": "ticket", "id": "446", "ticket_attributes": { "_default_title_": "example", "_default_description_": "there is a problem" }, "ticket_state": "submitted", "ticket_state_internal_label": "Submitted", "ticket_state_external_label": "Submitted", "ticket_type": { "type": "ticket_type", "id": "69", "name": "my-ticket-type-6", "description": "my ticket type description is awesome.", "icon": "🦁", "workspace_id": "this_is_an_id643_that_should_be_at_least_", "archived": false, "created_at": 1717021667, "updated_at": 1717021667, "is_internal": false, "ticket_type_attributes": {} }, "contacts": { "type": "contact.list", "contacts": [] }, "admin_assignee_id": "0", "team_assignee_id": "0", "created_at": 1717021669, "updated_at": 1717021669, "ticket_parts": { "type": "ticket_part.list", "ticket_parts": [], "total_count": 1 } }

Update a ticket

Request

You can update a ticket.

Path
idstringrequired

The unique identifier for the ticket which is given by Intercom

Headers
Intercom-Versionstring(intercom_version)

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

Default 2.9
Enum"1.0""1.1""1.2""1.3""1.4""2.0""2.1""2.2""2.3""2.4"
Example:

2.9

Bodyapplication/json
ticket_attributesobject

The attributes set on the ticket.

Example:

{"default_title":"example","default_description":"having a problem"}

statestring

The state of the ticket.

Enum"in_progress""waiting_on_customer""resolved"
Example:

"submitted"

is_sharedboolean

Specify whether the ticket is visible to users.

Example:

true

assignmentobject
curl -i -X PUT \
  'https://api.intercom.io/tickets/{id}' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -H 'Intercom-Version: 2.9' \
  -d '{
    "ticket_attributes": {
      "_default_title_": "example",
      "_default_description_": "there is a problem"
    },
    "state": "in_progress",
    "assignment": {
      "admin_id": "991267719",
      "assignee_id": "991267721"
    },
    "open": true,
    "snoozed_until": 1673609604
  }'
Experience it firsthand in the API Explorer!

Responses

Successful response

Bodyapplication/json
typestring

Always ticket

Default "ticket"
Value"ticket"
Example:

"ticket"

idstring

The unique identifier for the ticket which is given by Intercom.

Example:

"1295"

ticket_idstring

The ID of the Ticket used in the Intercom Inbox and Messenger. Do not use ticket_id for API queries.

Example:

"1390"

ticket_attributesobject(Ticket Attributes)

An object containing the different attributes associated to the ticket as key-value pairs. For the default title and description attributes, the keys are _default_title_ and _default_description_.

Example:

{"default_title":"Found a bug","default_description":"The button's not working"}

ticket_statestring

The state the ticket is currenly in

Enum"submitted""in_progress""waiting_on_customer""resolved"
Example:

"submitted"

ticket_state_internal_labelstring

The state the ticket is currently in, in a human readable form - visible in Intercom

ticket_state_external_labelstring

The state the ticket is currently in, in a human readable form - visible to customers, in the messenger, email and tickets portal.

ticket_typeobject or null(Ticket Type)

A ticket type, used to define the data fields to be captured in a ticket.

contactsobject(Contacts)

The list of contacts affected by a ticket.

admin_assignee_idstring

The id representing the admin assigned to the ticket.

Example:

"1295"

team_assignee_idstring

The id representing the team assigned to the ticket.

Example:

"1295"

created_atinteger(date-time)

The time the ticket was created as a UTC Unix timestamp.

Example:

1663597223

updated_atinteger(date-time)

The last time the ticket was updated as a UTC Unix timestamp.

Example:

1663597260

ticket_partsobject(Ticket Parts)

A list of Ticket Part objects for each note and event in the ticket. There is a limit of 500 parts.

is_sharedboolean

Whether or not the ticket is shared with the customer.

Example:

true

Response
application/json
{ "type": "ticket", "id": "447", "ticket_attributes": { "_default_title_": "example", "_default_description_": "there is a problem" }, "ticket_state": "in_progress", "ticket_state_internal_label": "In progress", "ticket_state_external_label": "In progress", "ticket_type": { "type": "ticket_type", "id": "71", "name": "my-ticket-type-8", "description": "my ticket type description is awesome.", "icon": "🦁", "workspace_id": "this_is_an_id647_that_should_be_at_least_", "archived": false, "created_at": 1717021671, "updated_at": 1717021671, "is_internal": false, "ticket_type_attributes": {} }, "contacts": { "type": "contact.list", "contacts": [] }, "admin_assignee_id": "991267721", "team_assignee_id": "0", "created_at": 1717021672, "updated_at": 1717021674, "ticket_parts": { "type": "ticket_part.list", "ticket_parts": [], "total_count": 5 } }

Retrieve a ticket

Request

You can fetch the details of a single ticket.

Path
idstringrequired

The unique identifier for the ticket which is given by Intercom.

Headers
Intercom-Versionstring(intercom_version)

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

Default 2.9
Enum"1.0""1.1""1.2""1.3""1.4""2.0""2.1""2.2""2.3""2.4"
Example:

2.9

curl -i -X GET \
  'https://api.intercom.io/tickets/{id}' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Intercom-Version: 2.9'
Experience it firsthand in the API Explorer!

Responses

Ticket found

Bodyapplication/json
typestring

Always ticket

Default "ticket"
Value"ticket"
Example:

"ticket"

idstring

The unique identifier for the ticket which is given by Intercom.

Example:

"1295"

ticket_idstring

The ID of the Ticket used in the Intercom Inbox and Messenger. Do not use ticket_id for API queries.

Example:

"1390"

ticket_attributesobject(Ticket Attributes)

An object containing the different attributes associated to the ticket as key-value pairs. For the default title and description attributes, the keys are _default_title_ and _default_description_.

Example:

{"default_title":"Found a bug","default_description":"The button's not working"}

ticket_statestring

The state the ticket is currenly in

Enum"submitted""in_progress""waiting_on_customer""resolved"
Example:

"submitted"

ticket_state_internal_labelstring

The state the ticket is currently in, in a human readable form - visible in Intercom

ticket_state_external_labelstring

The state the ticket is currently in, in a human readable form - visible to customers, in the messenger, email and tickets portal.

ticket_typeobject or null(Ticket Type)

A ticket type, used to define the data fields to be captured in a ticket.

contactsobject(Contacts)

The list of contacts affected by a ticket.

admin_assignee_idstring

The id representing the admin assigned to the ticket.

Example:

"1295"

team_assignee_idstring

The id representing the team assigned to the ticket.

Example:

"1295"

created_atinteger(date-time)

The time the ticket was created as a UTC Unix timestamp.

Example:

1663597223

updated_atinteger(date-time)

The last time the ticket was updated as a UTC Unix timestamp.

Example:

1663597260

ticket_partsobject(Ticket Parts)

A list of Ticket Part objects for each note and event in the ticket. There is a limit of 500 parts.

is_sharedboolean

Whether or not the ticket is shared with the customer.

Example:

true

Response
application/json
{ "type": "ticket", "id": "450", "ticket_attributes": { "_default_title_": "attribute_value", "_default_description_": null }, "ticket_state": "submitted", "ticket_state_internal_label": "Submitted", "ticket_state_external_label": "Submitted", "ticket_type": { "type": "ticket_type", "id": "75", "name": "my-ticket-type-12", "description": "my ticket type description is awesome.", "icon": "🦁", "workspace_id": "this_is_an_id655_that_should_be_at_least_", "archived": false, "created_at": 1717021681, "updated_at": 1717021681, "is_internal": false, "ticket_type_attributes": {} }, "contacts": { "type": "contact.list", "contacts": [] }, "admin_assignee_id": "0", "team_assignee_id": "0", "created_at": 1717021682, "updated_at": 1717021682, "ticket_parts": { "type": "ticket_part.list", "ticket_parts": [], "total_count": 1 } }

Visitors

Everything about your Visitors

Operations

Models