Intercom API (Unstable)

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

AI Content

With the AI Content APIs, you can create and manage External Pages and Content Import Sources for your Fin Content Library.

 

External Pages are pages that you want Fin to be able to answer questions about. The API for External Pages is a great way to ingest into your Fin Content Library pages that are not publicly accessible and hence can't be crawled by Intercom.

 

Content Import Sources are the sources of those pages, and they are used to determine the default audience for the pages (configured via the UI). You should create a Content Import Source for each source of External Pages that you want to ingest into your Fin Content Library.

 

You can then iterate through the content from that source via its API and POST it to the External Pages endpoint. That endpoint has an external_id parameter which allows you to specify the identifier from the source. The endpoint will then either create a new External Page or update an existing one as appropriate.",

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

Custom Object Instances

Everything about your Custom Object instances.

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 States

Everything about your ticket states

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"
categorystring

Category of the Ticket.

Enum"Customer""Back-office""Tracker"
Example: "Customer"
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_stateobject or null(Ticket State)

A ticket state, used to define the state of a ticket.

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
openboolean

Whether or not the ticket is open. If false, the ticket is closed.

Example: true
snoozed_untilinteger(date-time)

The time the ticket will be snoozed until as a UTC Unix timestamp. If null, the ticket is not currently snoozed.

Example: 1663597260
linked_objectsobject(Linked Objects)

An object containing metadata about linked conversations and linked tickets. Up to 1000 can be returned.

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", "category": "Customer", "ticket_attributes": { "_default_title_": "Found a bug", "_default_description_": "The button's not working" }, "ticket_state": { "type": "ticket_state", "id": "12", "category": "in_progress", "internal_label": "With Dev Team", "external_label": "In Progress" }, "ticket_type": { "type": "ticket_type", "id": "1295", "category": "Customer", "name": "Bug", "description": "A bug that has been reported.", "icon": "🐞", "workspace_id": "ecahpwf5", "ticket_type_attributes": {}, "ticket_states": {}, "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, "open": true, "snoozed_until": 1663597260, "linked_objects": { "type": "list", "total_count": 100, "has_more": false, "data": [] }, "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 State

A ticket state, used to define the state of a ticket.

typestring

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

Example: "ticket_state"
idstring

The id of the ticket state

Example: "12"
categorystring

The category of the ticket state

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

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

Example: "With Dev Team"
external_labelstring

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

Example: "In Progress"
{ "type": "ticket_state", "id": "12", "category": "in_progress", "internal_label": "With Dev Team", "external_label": "In Progress" }

Ticket State

A ticket state, used to define the state of a ticket.

typestring

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

Example: "ticket_state"
idstring

The id of the ticket state

Example: "12"
categorystring

The category of the ticket state

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

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

Example: "With Dev Team"
external_labelstring

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

Example: "In Progress"
archivedboolean

Whether the ticket state is archived

Example: false
ticket_typesobject

A list of ticket types associated with a given ticket state.

{ "type": "ticket_state", "id": "12", "category": "in_progress", "internal_label": "With Dev Team", "external_label": "In Progress", "archived": false, "ticket_types": { "type": "list", "data": [] } }

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"
categorystring

Category of the Ticket Type.

Enum"Customer""Back-office""Tracker"
Example: "Customer"
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.

ticket_statesobject(Ticket States)

A list of ticket states 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", "category": "Customer", "name": "Bug", "description": "A bug that has been reported.", "icon": "🐞", "workspace_id": "ecahpwf5", "ticket_type_attributes": { "type": "string", "ticket_type_attributes": [] }, "ticket_states": { "type": "list", "data": [] }, "archived": false, "created_at": 0, "updated_at": 0 }

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.

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 Unstable
Enum"1.0""1.1""1.2""1.3""1.4""2.0""2.1""2.2""2.3""2.4"
Example: Unstable
Bodyapplication/json
One of:
One of:

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

intercom_user_idstringrequired

The identifier for the contact as given by Intercom.

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)(Attachment URLs)<= 10 items

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

skip_notificationsboolean

Option to disable notifications when replying to a Ticket.

Example: true
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: Unstable' \
  -d '{
    "message_type": "comment",
    "type": "user",
    "intercom_user_id": "675062e6d5eefd6f04e7d174",
    "body": "Thanks again :)"
  }'

Responses

Admin quick_reply reply

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
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": "163", "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": 1733321451, "updated_at": 1733321451, "author": { "id": "991267936", "type": "admin", "name": "Ciaran412 Lee", "email": "admin412@email.com" }, "attachments": [], "redacted": false }

Add tag to a ticket

Request

You can tag a specific ticket. This will return a tag object for the tag that was added to the ticket.

Path
ticket_idstringrequired

ticket_id

Example: 64619700005694
Headers
Intercom-Versionstring(intercom_version)

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

Default Unstable
Enum"1.0""1.1""1.2""1.3""1.4""2.0""2.1""2.2""2.3""2.4"
Example: Unstable
Bodyapplication/json
idstringrequired

The unique identifier for the tag which is given by Intercom

Example: "7522907"
admin_idstringrequired

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

Example: "780"
curl -i -X POST \
  'https://api.intercom.io/tickets/{ticket_id}/tags' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -H 'Intercom-Version: Unstable' \
  -d '{
    "id": 134,
    "admin_id": 991267951
  }'

Responses

successful

Bodyapplication/json
typestring

value is "tag"

Example: "tag"
idstring

The id of the tag

Example: "123456"
namestring

The name of the tag

Example: "Test tag"
applied_atinteger(date-time)

The time when the tag was applied to the object

Example: 1663597223
applied_byobject(Reference)

reference to another object

Response
application/json
{ "type": "tag", "id": "134", "name": "Manual tag" }

Remove tag from a ticket

Request

You can remove tag from a specific ticket. This will return a tag object for the tag that was removed from the ticket.

Path
ticket_idstringrequired

ticket_id

Example: 64619700005694
idstringrequired

The unique identifier for the tag which is given by Intercom

Example: 7522907
Headers
Intercom-Versionstring(intercom_version)

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

Default Unstable
Enum"1.0""1.1""1.2""1.3""1.4""2.0""2.1""2.2""2.3""2.4"
Example: Unstable
Bodyapplication/json
admin_idstringrequired

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

Example: "123"
curl -i -X DELETE \
  'https://api.intercom.io/tickets/{ticket_id}/tags/{id}' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -H 'Intercom-Version: Unstable' \
  -d '{
    "admin_id": 991267966
  }'

Responses

successful

Bodyapplication/json
typestring

value is "tag"

Example: "tag"
idstring

The id of the tag

Example: "123456"
namestring

The name of the tag

Example: "Test tag"
applied_atinteger(date-time)

The time when the tag was applied to the object

Example: 1663597223
applied_byobject(Reference)

reference to another object

Response
application/json
{ "type": "tag", "id": "137", "name": "Manual tag" }

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 Unstable
Enum"1.0""1.1""1.2""1.3""1.4""2.0""2.1""2.2""2.3""2.4"
Example: Unstable
Bodyapplication/json
skip_notificationsboolean

Option to disable notifications when a Ticket is created.

Example: true
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 unique identifier for the company which is given by Intercom

Example: "5f4d3c1c-7b1b-4d7d-a97e-6095715c6632"
created_atinteger

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

Example: 1590000000
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: Unstable' \
  -d '{
    "ticket_type_id": 132,
    "contacts": [
      {
        "id": "67506320d5eefd6f04e7d17f"
      }
    ],
    "ticket_attributes": {
      "_default_title_": "example",
      "_default_description_": "there is a problem"
    }
  }'

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"
categorystring

Category of the Ticket.

Enum"Customer""Back-office""Tracker"
Example: "Customer"
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_stateobject or null(Ticket State)

A ticket state, used to define the state of a ticket.

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
openboolean

Whether or not the ticket is open. If false, the ticket is closed.

Example: true
snoozed_untilinteger(date-time)

The time the ticket will be snoozed until as a UTC Unix timestamp. If null, the ticket is not currently snoozed.

Example: 1663597260
linked_objectsobject(Linked Objects)

An object containing metadata about linked conversations and linked tickets. Up to 1000 can be returned.

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": "491", "ticket_id": "50", "ticket_attributes": { "_default_title_": "example", "_default_description_": "there is a problem" }, "ticket_state": { "type": "ticket_state", "id": "8585", "category": "submitted", "internal_label": "Submitted", "external_label": "Submitted" }, "ticket_type": { "type": "ticket_type", "id": "132", "name": "my-ticket-type-23", "description": "my ticket type description is awesome.", "icon": "🦁", "workspace_id": "this_is_an_id686_that_should_be_at_least_", "archived": false, "created_at": 1733321504, "updated_at": 1733321504, "is_internal": false, "ticket_type_attributes": {}, "category": "Back-office" }, "contacts": { "type": "contact.list", "contacts": [] }, "admin_assignee_id": "0", "team_assignee_id": "0", "created_at": 1733321505, "updated_at": 1733321506, "ticket_parts": { "type": "ticket_part.list", "ticket_parts": [], "total_count": 1 }, "open": true, "linked_objects": { "type": "list", "data": [], "total_count": 0, "has_more": false }, "category": "Back-office", "is_shared": false }

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 Unstable
Enum"1.0""1.1""1.2""1.3""1.4""2.0""2.1""2.2""2.3""2.4"
Example: Unstable
Bodyapplication/json
ticket_attributesobject

The attributes set on the ticket.

Example: {"_default_title_":"example","_default_description_":"having a problem"}
ticket_state_idstring

The ID of the ticket state associated with the ticket type.

Example: "123"
openboolean

Specify if a ticket is open. Set to false to close a ticket. Closing a ticket will also unsnooze it.

Example: true
is_sharedboolean

Specify whether the ticket is visible to users.

Example: true
snoozed_untilinteger(timestamp)

The time you want the ticket to reopen.

Example: 1673609604
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: Unstable' \
  -d '{
    "ticket_attributes": {
      "_default_title_": "example",
      "_default_description_": "there is a problem"
    },
    "assignment": {
      "admin_id": "991268004",
      "assignee_id": "991268006"
    },
    "open": true,
    "snoozed_until": 1673609604,
    "ticket_state_id": 8602
  }'

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"
categorystring

Category of the Ticket.

Enum"Customer""Back-office""Tracker"
Example: "Customer"
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_stateobject or null(Ticket State)

A ticket state, used to define the state of a ticket.

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
openboolean

Whether or not the ticket is open. If false, the ticket is closed.

Example: true
snoozed_untilinteger(date-time)

The time the ticket will be snoozed until as a UTC Unix timestamp. If null, the ticket is not currently snoozed.

Example: 1663597260
linked_objectsobject(Linked Objects)

An object containing metadata about linked conversations and linked tickets. Up to 1000 can be returned.

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": "492", "ticket_id": "51", "ticket_attributes": { "_default_title_": "example", "_default_description_": "there is a problem" }, "ticket_state": { "type": "ticket_state", "id": "8602", "category": "in_progress", "internal_label": "In progress", "external_label": "In progress" }, "ticket_type": { "type": "ticket_type", "id": "134", "name": "my-ticket-type-25", "description": "my ticket type description is awesome.", "icon": "🦁", "workspace_id": "this_is_an_id690_that_should_be_at_least_", "archived": false, "created_at": 1733321509, "updated_at": 1733321509, "is_internal": false, "ticket_type_attributes": {}, "category": "Back-office" }, "contacts": { "type": "contact.list", "contacts": [] }, "admin_assignee_id": "991268006", "team_assignee_id": "0", "created_at": 1733321510, "updated_at": 1733321514, "ticket_parts": { "type": "ticket_part.list", "ticket_parts": [], "total_count": 6 }, "open": true, "snoozed_until": 1733418000, "linked_objects": { "type": "list", "data": [], "total_count": 0, "has_more": false }, "category": "Back-office", "is_shared": false }

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 Unstable
Enum"1.0""1.1""1.2""1.3""1.4""2.0""2.1""2.2""2.3""2.4"
Example: Unstable
curl -i -X GET \
  'https://api.intercom.io/tickets/{id}' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Intercom-Version: Unstable'

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"
categorystring

Category of the Ticket.

Enum"Customer""Back-office""Tracker"
Example: "Customer"
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_stateobject or null(Ticket State)

A ticket state, used to define the state of a ticket.

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
openboolean

Whether or not the ticket is open. If false, the ticket is closed.

Example: true
snoozed_untilinteger(date-time)

The time the ticket will be snoozed until as a UTC Unix timestamp. If null, the ticket is not currently snoozed.

Example: 1663597260
linked_objectsobject(Linked Objects)

An object containing metadata about linked conversations and linked tickets. Up to 1000 can be returned.

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": "496", "ticket_id": "55", "ticket_attributes": { "_default_title_": "attribute_value", "_default_description_": null }, "ticket_state": { "type": "ticket_state", "id": "8641", "category": "submitted", "internal_label": "Submitted", "external_label": "Submitted" }, "ticket_type": { "type": "ticket_type", "id": "139", "name": "my-ticket-type-30", "description": "my ticket type description is awesome.", "icon": "🦁", "workspace_id": "this_is_an_id700_that_should_be_at_least_", "archived": false, "created_at": 1733321529, "updated_at": 1733321529, "is_internal": false, "ticket_type_attributes": {}, "category": "Back-office" }, "contacts": { "type": "contact.list", "contacts": [] }, "admin_assignee_id": "0", "team_assignee_id": "0", "created_at": 1733321531, "updated_at": 1733321532, "ticket_parts": { "type": "ticket_part.list", "ticket_parts": [], "total_count": 1 }, "open": true, "linked_objects": { "type": "list", "data": [], "total_count": 0, "has_more": false }, "category": "Back-office", "is_shared": false }

Delete a ticket

Request

You can delete a ticket using the Intercom provided ID.

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 Unstable
Enum"1.0""1.1""1.2""1.3""1.4""2.0""2.1""2.2""2.3""2.4"
Example: Unstable
curl -i -X DELETE \
  'https://api.intercom.io/tickets/{id}' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Intercom-Version: Unstable'

Responses

successful

Bodyapplication/json
idstring

The unique identifier for the ticket.

Example: "42"
objectstring

always ticket

Value"ticket"
Example: "ticket"
deletedboolean

Whether the ticket is deleted or not.

Example: true
Response
application/json
{ "id": "497", "object": "ticket", "deleted": true }

Search tickets

Request

You can search for multiple tickets by the value of their attributes in order to fetch exactly which ones you want.

To search for tickets, you send a POST request to https://api.intercom.io/tickets/search.

This will accept a query object in the body which will define your filters.

Optimizing search queries

Search queries can be complex, so optimizing them can help the performance of your search. Use the AND and OR operators to combine multiple filters to get the exact results you need and utilize pagination to limit the number of results returned. The default is 20 results per page. See the pagination section for more details on how to use the starting_after param.

Nesting & Limitations

You can nest these filters in order to get even more granular insights that pinpoint exactly what you need. Example: (1 OR 2) AND (3 OR 4). There are some limitations to the amount of multiples there can be:

  • There's a limit of max 2 nested filters
  • There's a limit of max 15 filters for each AND or OR group

Accepted Fields

Most keys listed as part of the Ticket model are searchable, whether writeable or not. The value you search for has to match the accepted type, otherwise the query will fail (ie. as created_at accepts a date, the value cannot be a string such as "foobar").

FieldType
idString
created_atDate (UNIX timestamp)
updated_atDate (UNIX timestamp)
default_titleString
default_descriptionString
categoryString
ticket_type_idString
contact_idsString
teammate_idsString
admin_assignee_idString
team_assignee_idString
openBoolean
stateString
snoozed_untilDate (UNIX timestamp)
ticket_attribute.{id}String or Boolean or Date (UNIX timestamp) or Float or Integer

Accepted Operators

Searching based on `created_at`

You may use the <= or >= operators to search by created_at.

The table below shows the operators you can use to define how you want to search for the value. The operator should be put in as a string ("="). The operator has to be compatible with the field's type (eg. you cannot search with > for a given string value as it's only compatible for integer's and dates).

OperatorValid TypesDescription
=AllEquals
!=AllDoesn't Equal
INAllIn Shortcut for OR queries Values most be in Array
NINAllNot In Shortcut for OR ! queries Values must be in Array
>Integer Date (UNIX Timestamp)Greater (or equal) than
<Integer Date (UNIX Timestamp)Lower (or equal) than
~StringContains
!~StringDoesn't Contain
^StringStarts With
$StringEnds With
Headers
Intercom-Versionstring(intercom_version)

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

Default Unstable
Enum"1.0""1.1""1.2""1.3""1.4""2.0""2.1""2.2""2.3""2.4"
Example: Unstable
Bodyapplication/json
querySingle Filter Search Request (object) or Multiple Filter Search Request (object)required
One of:

Search using Intercoms Search APIs with a single filter.

query.​fieldstring

The accepted field that you want to search on.

Example: "created_at"
query.​operatorstring

The accepted operators you can use to define how you want to search for the value.

Enum"=""!=""IN""NIN""<"">""~""!~""^""$"
Example: ">"
query.​valuestring

The value that you want to search on.

Example: "73732934"
paginationobject or null(Pagination: Starting After)
curl -i -X POST \
  https://api.intercom.io/tickets/search \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -H 'Intercom-Version: Unstable' \
  -d '{
    "query": {
      "operator": "AND",
      "value": [
        {
          "field": "created_at",
          "operator": ">",
          "value": "1306054154"
        }
      ]
    },
    "pagination": {
      "per_page": 5
    }
  }'

Responses

successful

Bodyapplication/json
typestring

Always ticket.list

Value"ticket.list"
Example: "ticket.list"
ticketsArray of objects or null(Ticket)

The list of ticket objects

total_countinteger

A count of the total number of objects.

Example: 12345
pagesobject or null(Cursor based pages)

Cursor-based pagination is a technique used in the Intercom API to navigate through large amounts of data. A "cursor" or pointer is used to keep track of the current position in the result set, allowing the API to return the data in small chunks or "pages" as needed.

Response
application/json
{ "type": "ticket.list", "pages": { "type": "pages", "page": 1, "per_page": 5, "total_pages": 1 }, "total_count": 1, "tickets": [ {} ] }

Visitors

Everything about your Visitors

Operations

Models