The intercom API reference.
The intercom API reference.
Conversations are how you can communicate with users in Intercom. They are created when a contact replies to an outbound message, or when one admin directly sends a message to a single contact.
The last time a Contact responded to an Admin. In other words, the time a customer started waiting for a response. Set to null if last reply is from an Admin.
If set this is the time in the future when this conversation will be marked as open. i.e. it will be in a snoozed state until this time. i.e. it will be in a snoozed state until this time.
Can be set to "open", "closed" or "snoozed".
If marked as priority, it will return priority or else not_priority.
The id of the admin assigned to the conversation. If it's not assigned to an admin it will return null.
The id of the team assigned to the conversation. If it's not assigned to a team it will return null.
The Conversation Rating object which contains information on the rating and/or remark added by a Contact and the Admin assigned to the conversation.
The type of the conversation part that started this conversation. Can be Contact, Admin, Campaign, Automated or Operator initiated.
This includes conversation, email, facebook, instagram, phone_call, phone_switch, push, sms, twitter and whatsapp.
The conversation's initiation type. Possible values are customer_initiated, campaigns_initiated (legacy campaigns), operator_initiated (Custom bot), automated (Series and other outbounds with dynamic audience message) and admin_initiated (fixed audience message, ticket initiated by an admin, group email).
Optional. The message subject. For Twitter, this will show a generic message regarding why the subject is obscured.
The message body, which may contain HTML. For Twitter, this will show a generic message regarding why the body is obscured.
The object who initiated the conversation, which can be a Contact, Admin or Team. Bots and campaigns send messages on behalf of Admins or Teams. For Twitter, this will be blank.
The URL where the conversation was started. For Twitter, Email, and Bots, this will be blank.
The list of contacts (users or leads) involved in this conversation. This will only contain one customer unless more were added via the group conversation feature.
The list of contacts (users or leads) involved in this conversation. This will only contain one customer unless more were added via the group conversation feature.
The unique identifier for the contact which is given by Intercom.
The list of teammates who participated in the conversation (wrote at least one conversation part).
An object containing the different custom attributes associated to the conversation as key-value pairs. For relationship attributes the value will be a list of custom object instance models.
An object containing information on the first users message. For a contact initiated message this will represent the users original message.
The SLA Applied object contains the details for which SLA has been applied to this conversation. Important: if there are any canceled sla_events for the conversation - meaning an SLA has been manually removed from a conversation, the sla_status will always be returned as null.
A Statistics object containing all information required for reporting, with timestamps and calculated metrics.
A list of Conversation Part objects for each part message in the conversation. This is only returned when Retrieving a Conversation, and ignored when Listing all Conversations. There is a limit of 500 parts.
An object containing metadata about linked conversations and linked tickets. Up to 1000 can be returned.
Indicates whether the AI Agent participated in the conversation.
{ "type": "conversation", "id": "1295", "title": "Conversation Title", "created_at": 1663597223, "updated_at": 1663597260, "waiting_since": 1663597260, "snoozed_until": 1663597260, "open": true, "state": "open", "read": true, "priority": "priority", "admin_assignee_id": 0, "team_assignee_id": "5017691", "tags": { "type": "tag.list", "tags": [ … ] }, "conversation_rating": { "rating": 5, "remark": "", "created_at": 1671028894, "contact": { … }, "teammate": { … } }, "source": { "type": "conversation", "id": "3", "delivered_as": "operator_initiated", "subject": "", "body": "<p>Hey there!</p>", "author": { … }, "attachments": [ … ], "url": null, "redacted": false }, "contacts": { "type": "contact.list", "contacts": [ … ] }, "teammates": { "type": "admin.list", "teammates": [ … ] }, "custom_attributes": { "property1": "string", "property2": "string" }, "first_contact_reply": { "created_at": 1663597223, "type": "conversation", "url": "https://developers.intercom.com/" }, "sla_applied": { "type": "conversation_sla_summary", "sla_name": "", "sla_status": "hit" }, "statistics": { "type": "conversation_statistics", "time_to_assignment": 2310, "time_to_admin_reply": 2310, "time_to_first_close": 2310, "time_to_last_close": 2310, "median_time_to_reply": 2310, "first_contact_reply_at": 1663597233, "first_assignment_at": 1663597233, "first_admin_reply_at": 1663597233, "first_close_at": 1663597233, "last_assignment_at": 1663597233, "last_assignment_admin_reply_at": 1663597233, "last_contact_reply_at": 1663597233, "last_admin_reply_at": 1663597233, "last_close_at": 1663597233, "last_closed_by_id": "c3po", "count_reopens": 1, "count_assignments": 1, "count_conversation_parts": 1 }, "conversation_parts": { "type": "conversation_part.list", "conversation_parts": [ … ], "total_count": 2 }, "linked_objects": { "type": "list", "total_count": 100, "has_more": false, "data": [ … ] }, "ai_agent_participated": true, "ai_agent": { "source_type": "workflow", "source_title": "My AI Workflow", "last_answer_type": "ai_answer", "resolution_state": "assumed_resolution", "rating": 4, "rating_remark": "Very helpful!", "content_sources": { … } } }
curl -i -X POST \
'https://api.intercom.io/conversations/{conversation_id}/tags' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-H 'Intercom-Version: 2.11' \
-d '{
"id": 99,
"admin_id": 991267526
}'
{ "type": "tag", "id": "99", "name": "Manual tag" }
curl -i -X DELETE \
'https://api.intercom.io/conversations/{conversation_id}/tags/{tag_id}' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-H 'Intercom-Version: 2.11' \
-d '{
"admin_id": 991267530
}'
{ "type": "tag", "id": "102", "name": "Manual tag" }
You can fetch a list of all conversations.
You can optionally request the result page size and the cursor to start after to fetch the result.
You can use 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.
curl -i -X GET \
'https://api.intercom.io/conversations?per_page=20&starting_after=string' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Intercom-Version: 2.11'
successful
The list of conversation objects
The title given to the conversation.
The time the conversation was created.
The last time the conversation was updated.
The last time a Contact responded to an Admin. In other words, the time a customer started waiting for a response. Set to null if last reply is from an Admin.
If set this is the time in the future when this conversation will be marked as open. i.e. it will be in a snoozed state until this time. i.e. it will be in a snoozed state until this time.
Indicates whether a conversation is open (true) or closed (false).
Can be set to "open", "closed" or "snoozed".
If marked as priority, it will return priority or else not_priority.
The id of the admin assigned to the conversation. If it's not assigned to an admin it will return null.
The id of the team assigned to the conversation. If it's not assigned to a team it will return null.
The Conversation Rating object which contains information on the rating and/or remark added by a Contact and the Admin assigned to the conversation.
The type of the conversation part that started this conversation. Can be Contact, Admin, Campaign, Automated or Operator initiated.
This includes conversation, email, facebook, instagram, phone_call, phone_switch, push, sms, twitter and whatsapp.
The conversation's initiation type. Possible values are customer_initiated, campaigns_initiated (legacy campaigns), operator_initiated (Custom bot), automated (Series and other outbounds with dynamic audience message) and admin_initiated (fixed audience message, ticket initiated by an admin, group email).
Optional. The message subject. For Twitter, this will show a generic message regarding why the subject is obscured.
The message body, which may contain HTML. For Twitter, this will show a generic message regarding why the body is obscured.
The object who initiated the conversation, which can be a Contact, Admin or Team. Bots and campaigns send messages on behalf of Admins or Teams. For Twitter, this will be blank.
A list of attachments for the part.
The URL where the conversation was started. For Twitter, Email, and Bots, this will be blank.
The list of contacts (users or leads) involved in this conversation. This will only contain one customer unless more were added via the group conversation feature.
The list of contacts (users or leads) involved in this conversation. This will only contain one customer unless more were added via the group conversation feature.
always contact
The unique identifier for the contact which is given by Intercom.
The list of teammates who participated in the conversation (wrote at least one conversation part).
The type of the object - admin.list
.
The list of teammates who participated in the conversation (wrote at least one conversation part).
An object containing the different custom attributes associated to the conversation as key-value pairs. For relationship attributes the value will be a list of custom object instance models.
An object containing information on the first users message. For a contact initiated message this will represent the users original message.
The SLA Applied object contains the details for which SLA has been applied to this conversation. Important: if there are any canceled sla_events for the conversation - meaning an SLA has been manually removed from a conversation, the sla_status will always be returned as null.
A Statistics object containing all information required for reporting, with timestamps and calculated metrics.
A list of Conversation Part objects for each part message in the conversation. This is only returned when Retrieving a Conversation, and ignored when Listing all Conversations. There is a limit of 500 parts.
An object containing metadata about linked conversations and linked tickets. Up to 1000 can be returned.
Indicates whether the AI Agent participated in the conversation.
{ "type": "conversation.list", "pages": { "type": "pages", "page": 1, "per_page": 20, "total_pages": 1 }, "total_count": 1, "conversations": [ { … } ] }
You can create a conversation that has been initiated by a contact (ie. user or lead). The conversation can be an in-app message only.
You can also send a message from a visitor by specifying their user_id
or id
value in the from
field, along with a type
field value of contact
. This visitor will be automatically converted to a contact with a lead role once the conversation is created.
This will return the Message model that has been created.
curl -i -X POST \
https://api.intercom.io/conversations \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-H 'Intercom-Version: 2.11' \
-d '{
"from": {
"type": "user",
"id": "667d60d18a68186f43bafddd"
},
"body": "Hello there"
}'
{ "type": "user_message", "id": "403918251", "created_at": 1719492819, "body": "Hello there", "message_type": "inapp", "conversation_id": "363" }
You can fetch the details of a single conversation.
This will return a single Conversation model with all its conversation parts.
The maximum number of conversation parts that can be returned via the API is 500. If you have more than that we will return the 500 most recent conversation parts.
For AI agent conversation metadata, please note that you need to have the agent enabled in your workspace, which is a paid feature.
curl -i -X GET \
'https://api.intercom.io/conversations/{conversation_id}?display_as=string' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Intercom-Version: 2.11'
conversation found
The last time a Contact responded to an Admin. In other words, the time a customer started waiting for a response. Set to null if last reply is from an Admin.
If set this is the time in the future when this conversation will be marked as open. i.e. it will be in a snoozed state until this time. i.e. it will be in a snoozed state until this time.
Can be set to "open", "closed" or "snoozed".
If marked as priority, it will return priority or else not_priority.
The id of the admin assigned to the conversation. If it's not assigned to an admin it will return null.
The id of the team assigned to the conversation. If it's not assigned to a team it will return null.
The Conversation Rating object which contains information on the rating and/or remark added by a Contact and the Admin assigned to the conversation.
The type of the conversation part that started this conversation. Can be Contact, Admin, Campaign, Automated or Operator initiated.
This includes conversation, email, facebook, instagram, phone_call, phone_switch, push, sms, twitter and whatsapp.
The conversation's initiation type. Possible values are customer_initiated, campaigns_initiated (legacy campaigns), operator_initiated (Custom bot), automated (Series and other outbounds with dynamic audience message) and admin_initiated (fixed audience message, ticket initiated by an admin, group email).
Optional. The message subject. For Twitter, this will show a generic message regarding why the subject is obscured.
The message body, which may contain HTML. For Twitter, this will show a generic message regarding why the body is obscured.
The object who initiated the conversation, which can be a Contact, Admin or Team. Bots and campaigns send messages on behalf of Admins or Teams. For Twitter, this will be blank.
The URL where the conversation was started. For Twitter, Email, and Bots, this will be blank.
The list of contacts (users or leads) involved in this conversation. This will only contain one customer unless more were added via the group conversation feature.
The list of contacts (users or leads) involved in this conversation. This will only contain one customer unless more were added via the group conversation feature.
The unique identifier for the contact which is given by Intercom.
The list of teammates who participated in the conversation (wrote at least one conversation part).
An object containing the different custom attributes associated to the conversation as key-value pairs. For relationship attributes the value will be a list of custom object instance models.
An object containing information on the first users message. For a contact initiated message this will represent the users original message.
The SLA Applied object contains the details for which SLA has been applied to this conversation. Important: if there are any canceled sla_events for the conversation - meaning an SLA has been manually removed from a conversation, the sla_status will always be returned as null.
A Statistics object containing all information required for reporting, with timestamps and calculated metrics.
A list of Conversation Part objects for each part message in the conversation. This is only returned when Retrieving a Conversation, and ignored when Listing all Conversations. There is a limit of 500 parts.
An object containing metadata about linked conversations and linked tickets. Up to 1000 can be returned.
Indicates whether the AI Agent participated in the conversation.
{ "type": "conversation", "id": "367", "created_at": 1719492825, "updated_at": 1719492825, "waiting_since": null, "snoozed_until": null, "source": { "type": "conversation", "id": "403918255", "delivered_as": "admin_initiated", "subject": "", "body": "<p>this is the message body</p>", "author": { … }, "attachments": [], "url": null, "redacted": false }, "contacts": { "type": "contact.list", "contacts": [ … ] }, "first_contact_reply": null, "admin_assignee_id": null, "team_assignee_id": null, "open": false, "state": "closed", "read": false, "tags": { "type": "tag.list", "tags": [] }, "priority": "not_priority", "sla_applied": null, "statistics": null, "conversation_rating": null, "teammates": null, "title": null, "custom_attributes": {}, "topics": {}, "ticket": null, "linked_objects": { "type": "list", "data": [], "total_count": 0, "has_more": false }, "ai_agent": null, "ai_agent_participated": false, "conversation_parts": { "type": "conversation_part.list", "conversation_parts": [], "total_count": 0 } }
curl -i -X PUT \
'https://api.intercom.io/conversations/{conversation_id}?display_as=string' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-H 'Intercom-Version: 2.11' \
-d '{
"read": true,
"custom_attributes": {
"issue_type": "Billing",
"priority": "High"
}
}'
conversation found
The last time a Contact responded to an Admin. In other words, the time a customer started waiting for a response. Set to null if last reply is from an Admin.
If set this is the time in the future when this conversation will be marked as open. i.e. it will be in a snoozed state until this time. i.e. it will be in a snoozed state until this time.
Can be set to "open", "closed" or "snoozed".
If marked as priority, it will return priority or else not_priority.
The id of the admin assigned to the conversation. If it's not assigned to an admin it will return null.
The id of the team assigned to the conversation. If it's not assigned to a team it will return null.
The Conversation Rating object which contains information on the rating and/or remark added by a Contact and the Admin assigned to the conversation.
The type of the conversation part that started this conversation. Can be Contact, Admin, Campaign, Automated or Operator initiated.
This includes conversation, email, facebook, instagram, phone_call, phone_switch, push, sms, twitter and whatsapp.
The conversation's initiation type. Possible values are customer_initiated, campaigns_initiated (legacy campaigns), operator_initiated (Custom bot), automated (Series and other outbounds with dynamic audience message) and admin_initiated (fixed audience message, ticket initiated by an admin, group email).
Optional. The message subject. For Twitter, this will show a generic message regarding why the subject is obscured.
The message body, which may contain HTML. For Twitter, this will show a generic message regarding why the body is obscured.
The object who initiated the conversation, which can be a Contact, Admin or Team. Bots and campaigns send messages on behalf of Admins or Teams. For Twitter, this will be blank.
The URL where the conversation was started. For Twitter, Email, and Bots, this will be blank.
The list of contacts (users or leads) involved in this conversation. This will only contain one customer unless more were added via the group conversation feature.
The list of contacts (users or leads) involved in this conversation. This will only contain one customer unless more were added via the group conversation feature.
The unique identifier for the contact which is given by Intercom.
The list of teammates who participated in the conversation (wrote at least one conversation part).
An object containing the different custom attributes associated to the conversation as key-value pairs. For relationship attributes the value will be a list of custom object instance models.
An object containing information on the first users message. For a contact initiated message this will represent the users original message.
The SLA Applied object contains the details for which SLA has been applied to this conversation. Important: if there are any canceled sla_events for the conversation - meaning an SLA has been manually removed from a conversation, the sla_status will always be returned as null.
A Statistics object containing all information required for reporting, with timestamps and calculated metrics.
A list of Conversation Part objects for each part message in the conversation. This is only returned when Retrieving a Conversation, and ignored when Listing all Conversations. There is a limit of 500 parts.
An object containing metadata about linked conversations and linked tickets. Up to 1000 can be returned.
Indicates whether the AI Agent participated in the conversation.
{ "type": "conversation", "id": "371", "created_at": 1719492832, "updated_at": 1719492834, "waiting_since": null, "snoozed_until": null, "source": { "type": "conversation", "id": "403918259", "delivered_as": "admin_initiated", "subject": "", "body": "<p>this is the message body</p>", "author": { … }, "attachments": [], "url": null, "redacted": false }, "contacts": { "type": "contact.list", "contacts": [ … ] }, "first_contact_reply": null, "admin_assignee_id": null, "team_assignee_id": null, "open": false, "state": "closed", "read": true, "tags": { "type": "tag.list", "tags": [] }, "priority": "not_priority", "sla_applied": null, "statistics": null, "conversation_rating": null, "teammates": null, "title": null, "custom_attributes": { "issue_type": "Billing", "priority": "High" }, "topics": {}, "ticket": null, "linked_objects": { "type": "list", "data": [], "total_count": 0, "has_more": false }, "ai_agent": null, "ai_agent_participated": false, "conversation_parts": { "type": "conversation_part.list", "conversation_parts": [ … ], "total_count": 2 } }
You can search for multiple conversations by the value of their attributes in order to fetch exactly which ones you want.
To search for conversations, you need to send a POST
request to https://api.intercom.io/conversations/search
.
This will accept a query object in the body which will define your filters in order to search for conversations.
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 and maximum is 150
. See the pagination section for more details on how to use the starting_after
param.
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 multiple's there can be:
Most keys listed in the table below 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 "foorbar"
). The source.body
field is unique as the search will not be performed against the entire value, but instead against every element of the value separately. For example, when searching for a conversation with a "I need support"
body - the query should contain a =
operator with the value "support"
for such conversation to be returned. A query with a =
operator and a "need support"
value will not yield a result.
Field | Type |
---|---|
id | String |
created_at | Date (UNIX timestamp) |
updated_at | Date (UNIX timestamp) |
source.type | String Accepted fields are conversation , email , facebook , instagram , phone_call , phone_switch , push , sms , twitter and whatsapp . |
source.id | String |
source.delivered_as | String |
source.subject | String |
source.body | String |
source.author.id | String |
source.author.type | String |
source.author.name | String |
source.author.email | String |
source.url | String |
contact_ids | String |
teammate_ids | String |
admin_assignee_id | String |
team_assignee_id | String |
channel_initiated | String |
open | Boolean |
read | Boolean |
state | String |
waiting_since | Date (UNIX timestamp) |
snoozed_until | Date (UNIX timestamp) |
tag_ids | String |
priority | String |
statistics.time_to_assignment | Integer |
statistics.time_to_admin_reply | Integer |
statistics.time_to_first_close | Integer |
statistics.time_to_last_close | Integer |
statistics.median_time_to_reply | Integer |
statistics.first_contact_reply_at | Date (UNIX timestamp) |
statistics.first_assignment_at | Date (UNIX timestamp) |
statistics.first_admin_reply_at | Date (UNIX timestamp) |
statistics.first_close_at | Date (UNIX timestamp) |
statistics.last_assignment_at | Date (UNIX timestamp) |
statistics.last_assignment_admin_reply_at | Date (UNIX timestamp) |
statistics.last_contact_reply_at | Date (UNIX timestamp) |
statistics.last_admin_reply_at | Date (UNIX timestamp) |
statistics.last_close_at | Date (UNIX timestamp) |
statistics.last_closed_by_id | String |
statistics.count_reopens | Integer |
statistics.count_assignments | Integer |
statistics.count_conversation_parts | Integer |
conversation_rating.requested_at | Date (UNIX timestamp) |
conversation_rating.replied_at | Date (UNIX timestamp) |
conversation_rating.score | Integer |
conversation_rating.remark | String |
conversation_rating.contact_id | String |
conversation_rating.admin_d | String |
ai_agent_participated | Boolean |
ai_agent.resolution_state | String |
ai_agent.last_answer_type | String |
ai_agent.rating | Integer |
ai_agent.rating_remark | String |
ai_agent.source_type | String |
ai_agent.source_title | String |
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).
Operator | Valid Types | Description |
---|---|---|
= | All | Equals |
!= | All | Doesn't Equal |
IN | All | In Shortcut for OR queries Values most be in Array |
NIN | All | Not 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 |
~ | String | Contains |
!~ | String | Doesn't Contain |
^ | String | Starts With |
$ | String | Ends With |
Search using Intercoms Search APIs with a single filter.
The accepted field that you want to search on.
The accepted operators you can use to define how you want to search for the value.
curl -i -X POST \
https://api.intercom.io/conversations/search \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-H 'Intercom-Version: 2.11' \
-d '{
"query": {
"operator": "AND",
"value": [
{
"field": "created_at",
"operator": ">",
"value": "1306054154"
}
]
},
"pagination": {
"per_page": 5
}
}'
successful
The list of conversation objects
The title given to the conversation.
The time the conversation was created.
The last time the conversation was updated.
The last time a Contact responded to an Admin. In other words, the time a customer started waiting for a response. Set to null if last reply is from an Admin.
If set this is the time in the future when this conversation will be marked as open. i.e. it will be in a snoozed state until this time. i.e. it will be in a snoozed state until this time.
Indicates whether a conversation is open (true) or closed (false).
Can be set to "open", "closed" or "snoozed".
If marked as priority, it will return priority or else not_priority.
The id of the admin assigned to the conversation. If it's not assigned to an admin it will return null.
The id of the team assigned to the conversation. If it's not assigned to a team it will return null.
The Conversation Rating object which contains information on the rating and/or remark added by a Contact and the Admin assigned to the conversation.
The type of the conversation part that started this conversation. Can be Contact, Admin, Campaign, Automated or Operator initiated.
This includes conversation, email, facebook, instagram, phone_call, phone_switch, push, sms, twitter and whatsapp.
The conversation's initiation type. Possible values are customer_initiated, campaigns_initiated (legacy campaigns), operator_initiated (Custom bot), automated (Series and other outbounds with dynamic audience message) and admin_initiated (fixed audience message, ticket initiated by an admin, group email).
Optional. The message subject. For Twitter, this will show a generic message regarding why the subject is obscured.
The message body, which may contain HTML. For Twitter, this will show a generic message regarding why the body is obscured.
The object who initiated the conversation, which can be a Contact, Admin or Team. Bots and campaigns send messages on behalf of Admins or Teams. For Twitter, this will be blank.
A list of attachments for the part.
The URL where the conversation was started. For Twitter, Email, and Bots, this will be blank.
The list of contacts (users or leads) involved in this conversation. This will only contain one customer unless more were added via the group conversation feature.
The list of contacts (users or leads) involved in this conversation. This will only contain one customer unless more were added via the group conversation feature.
always contact
The unique identifier for the contact which is given by Intercom.
The list of teammates who participated in the conversation (wrote at least one conversation part).
The type of the object - admin.list
.
The list of teammates who participated in the conversation (wrote at least one conversation part).
An object containing the different custom attributes associated to the conversation as key-value pairs. For relationship attributes the value will be a list of custom object instance models.
An object containing information on the first users message. For a contact initiated message this will represent the users original message.
The SLA Applied object contains the details for which SLA has been applied to this conversation. Important: if there are any canceled sla_events for the conversation - meaning an SLA has been manually removed from a conversation, the sla_status will always be returned as null.
A Statistics object containing all information required for reporting, with timestamps and calculated metrics.
A list of Conversation Part objects for each part message in the conversation. This is only returned when Retrieving a Conversation, and ignored when Listing all Conversations. There is a limit of 500 parts.
An object containing metadata about linked conversations and linked tickets. Up to 1000 can be returned.
Indicates whether the AI Agent participated in the conversation.
{ "type": "conversation.list", "pages": { "type": "pages", "page": 1, "per_page": 5, "total_pages": 1 }, "total_count": 1, "conversations": [ { … } ] }
Payload of the request to reply on behalf of a contact using their intercom_user_id
A list of files that will be added as attachments.
The time the reply was created. If not provided, the current time will be used.
curl -i -X POST \
'https://api.intercom.io/conversations/{conversation_id}/reply' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-H 'Intercom-Version: 2.11' \
-d '{
"message_type": "comment",
"type": "user",
"intercom_user_id": "667d60f18a68186f43bafdf4",
"body": "Thanks again :)"
}'
User last conversation reply
The last time a Contact responded to an Admin. In other words, the time a customer started waiting for a response. Set to null if last reply is from an Admin.
If set this is the time in the future when this conversation will be marked as open. i.e. it will be in a snoozed state until this time. i.e. it will be in a snoozed state until this time.
Can be set to "open", "closed" or "snoozed".
If marked as priority, it will return priority or else not_priority.
The id of the admin assigned to the conversation. If it's not assigned to an admin it will return null.
The id of the team assigned to the conversation. If it's not assigned to a team it will return null.
The Conversation Rating object which contains information on the rating and/or remark added by a Contact and the Admin assigned to the conversation.
The type of the conversation part that started this conversation. Can be Contact, Admin, Campaign, Automated or Operator initiated.
This includes conversation, email, facebook, instagram, phone_call, phone_switch, push, sms, twitter and whatsapp.
The conversation's initiation type. Possible values are customer_initiated, campaigns_initiated (legacy campaigns), operator_initiated (Custom bot), automated (Series and other outbounds with dynamic audience message) and admin_initiated (fixed audience message, ticket initiated by an admin, group email).
Optional. The message subject. For Twitter, this will show a generic message regarding why the subject is obscured.
The message body, which may contain HTML. For Twitter, this will show a generic message regarding why the body is obscured.
The object who initiated the conversation, which can be a Contact, Admin or Team. Bots and campaigns send messages on behalf of Admins or Teams. For Twitter, this will be blank.
The URL where the conversation was started. For Twitter, Email, and Bots, this will be blank.
The list of contacts (users or leads) involved in this conversation. This will only contain one customer unless more were added via the group conversation feature.
The list of contacts (users or leads) involved in this conversation. This will only contain one customer unless more were added via the group conversation feature.
The unique identifier for the contact which is given by Intercom.
The list of teammates who participated in the conversation (wrote at least one conversation part).
An object containing the different custom attributes associated to the conversation as key-value pairs. For relationship attributes the value will be a list of custom object instance models.
An object containing information on the first users message. For a contact initiated message this will represent the users original message.
The SLA Applied object contains the details for which SLA has been applied to this conversation. Important: if there are any canceled sla_events for the conversation - meaning an SLA has been manually removed from a conversation, the sla_status will always be returned as null.
A Statistics object containing all information required for reporting, with timestamps and calculated metrics.
A list of Conversation Part objects for each part message in the conversation. This is only returned when Retrieving a Conversation, and ignored when Listing all Conversations. There is a limit of 500 parts.
An object containing metadata about linked conversations and linked tickets. Up to 1000 can be returned.
Indicates whether the AI Agent participated in the conversation.
{ "type": "conversation", "id": "387", "created_at": 1719492849, "updated_at": 1719492850, "waiting_since": 1719492850, "snoozed_until": null, "source": { "type": "conversation", "id": "403918269", "delivered_as": "admin_initiated", "subject": "", "body": "<p>this is the message body</p>", "author": { … }, "attachments": [], "url": null, "redacted": false }, "contacts": { "type": "contact.list", "contacts": [ … ] }, "first_contact_reply": { "created_at": 1719492850, "type": "conversation", "url": null }, "admin_assignee_id": null, "team_assignee_id": null, "open": true, "state": "open", "read": false, "tags": { "type": "tag.list", "tags": [] }, "priority": "not_priority", "sla_applied": null, "statistics": null, "conversation_rating": null, "teammates": null, "title": null, "custom_attributes": {}, "topics": {}, "ticket": null, "linked_objects": { "type": "list", "data": [], "total_count": 0, "has_more": false }, "ai_agent": null, "ai_agent_participated": false, "conversation_parts": { "type": "conversation_part.list", "conversation_parts": [ … ], "total_count": 1 } }
curl -i -X POST \
'https://api.intercom.io/conversations/{conversation_id}/parts' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-H 'Intercom-Version: 2.11' \
-d '{
"message_type": "close",
"type": "admin",
"admin_id": 991267608,
"body": "Goodbye :)"
}'
Assign a conversation
The last time a Contact responded to an Admin. In other words, the time a customer started waiting for a response. Set to null if last reply is from an Admin.
If set this is the time in the future when this conversation will be marked as open. i.e. it will be in a snoozed state until this time. i.e. it will be in a snoozed state until this time.
Can be set to "open", "closed" or "snoozed".
If marked as priority, it will return priority or else not_priority.
The id of the admin assigned to the conversation. If it's not assigned to an admin it will return null.
The id of the team assigned to the conversation. If it's not assigned to a team it will return null.
The Conversation Rating object which contains information on the rating and/or remark added by a Contact and the Admin assigned to the conversation.
The type of the conversation part that started this conversation. Can be Contact, Admin, Campaign, Automated or Operator initiated.
This includes conversation, email, facebook, instagram, phone_call, phone_switch, push, sms, twitter and whatsapp.
The conversation's initiation type. Possible values are customer_initiated, campaigns_initiated (legacy campaigns), operator_initiated (Custom bot), automated (Series and other outbounds with dynamic audience message) and admin_initiated (fixed audience message, ticket initiated by an admin, group email).
Optional. The message subject. For Twitter, this will show a generic message regarding why the subject is obscured.
The message body, which may contain HTML. For Twitter, this will show a generic message regarding why the body is obscured.
The object who initiated the conversation, which can be a Contact, Admin or Team. Bots and campaigns send messages on behalf of Admins or Teams. For Twitter, this will be blank.
The URL where the conversation was started. For Twitter, Email, and Bots, this will be blank.
The list of contacts (users or leads) involved in this conversation. This will only contain one customer unless more were added via the group conversation feature.
The list of contacts (users or leads) involved in this conversation. This will only contain one customer unless more were added via the group conversation feature.
The unique identifier for the contact which is given by Intercom.
The list of teammates who participated in the conversation (wrote at least one conversation part).
An object containing the different custom attributes associated to the conversation as key-value pairs. For relationship attributes the value will be a list of custom object instance models.
An object containing information on the first users message. For a contact initiated message this will represent the users original message.
The SLA Applied object contains the details for which SLA has been applied to this conversation. Important: if there are any canceled sla_events for the conversation - meaning an SLA has been manually removed from a conversation, the sla_status will always be returned as null.
A Statistics object containing all information required for reporting, with timestamps and calculated metrics.
A list of Conversation Part objects for each part message in the conversation. This is only returned when Retrieving a Conversation, and ignored when Listing all Conversations. There is a limit of 500 parts.
An object containing metadata about linked conversations and linked tickets. Up to 1000 can be returned.
Indicates whether the AI Agent participated in the conversation.
{ "type": "conversation", "id": "394", "created_at": 1719492862, "updated_at": 1719492862, "waiting_since": null, "snoozed_until": null, "source": { "type": "conversation", "id": "403918276", "delivered_as": "admin_initiated", "subject": "", "body": "<p>this is the message body</p>", "author": { … }, "attachments": [], "url": null, "redacted": false }, "contacts": { "type": "contact.list", "contacts": [ … ] }, "first_contact_reply": null, "admin_assignee_id": null, "team_assignee_id": null, "open": false, "state": "closed", "read": false, "tags": { "type": "tag.list", "tags": [] }, "priority": "not_priority", "sla_applied": null, "statistics": null, "conversation_rating": null, "teammates": null, "title": null, "custom_attributes": {}, "topics": {}, "ticket": null, "linked_objects": { "type": "list", "data": [], "total_count": 0, "has_more": false }, "ai_agent": null, "ai_agent_participated": false, "conversation_parts": { "type": "conversation_part.list", "conversation_parts": [ … ], "total_count": 1 } }
Run assignment rules is now deprecated in version 2.12 and future versions and will be permanently removed on December 31, 2026. After this date, any requests made to this endpoint will fail.
You can let a conversation be automatically assigned following assignment rules.
It is not possible to use this endpoint with Workflows.
curl -i -X POST \
'https://api.intercom.io/conversations/{conversation_id}/run_assignment_rules' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Intercom-Version: 2.11'
Assign a conversation using assignment rules
The last time a Contact responded to an Admin. In other words, the time a customer started waiting for a response. Set to null if last reply is from an Admin.
If set this is the time in the future when this conversation will be marked as open. i.e. it will be in a snoozed state until this time. i.e. it will be in a snoozed state until this time.
Can be set to "open", "closed" or "snoozed".
If marked as priority, it will return priority or else not_priority.
The id of the admin assigned to the conversation. If it's not assigned to an admin it will return null.
The id of the team assigned to the conversation. If it's not assigned to a team it will return null.
The Conversation Rating object which contains information on the rating and/or remark added by a Contact and the Admin assigned to the conversation.
The type of the conversation part that started this conversation. Can be Contact, Admin, Campaign, Automated or Operator initiated.
This includes conversation, email, facebook, instagram, phone_call, phone_switch, push, sms, twitter and whatsapp.
The conversation's initiation type. Possible values are customer_initiated, campaigns_initiated (legacy campaigns), operator_initiated (Custom bot), automated (Series and other outbounds with dynamic audience message) and admin_initiated (fixed audience message, ticket initiated by an admin, group email).
Optional. The message subject. For Twitter, this will show a generic message regarding why the subject is obscured.
The message body, which may contain HTML. For Twitter, this will show a generic message regarding why the body is obscured.
The object who initiated the conversation, which can be a Contact, Admin or Team. Bots and campaigns send messages on behalf of Admins or Teams. For Twitter, this will be blank.
The URL where the conversation was started. For Twitter, Email, and Bots, this will be blank.
The list of contacts (users or leads) involved in this conversation. This will only contain one customer unless more were added via the group conversation feature.
The list of contacts (users or leads) involved in this conversation. This will only contain one customer unless more were added via the group conversation feature.
The unique identifier for the contact which is given by Intercom.
The list of teammates who participated in the conversation (wrote at least one conversation part).
An object containing the different custom attributes associated to the conversation as key-value pairs. For relationship attributes the value will be a list of custom object instance models.
An object containing information on the first users message. For a contact initiated message this will represent the users original message.
The SLA Applied object contains the details for which SLA has been applied to this conversation. Important: if there are any canceled sla_events for the conversation - meaning an SLA has been manually removed from a conversation, the sla_status will always be returned as null.
A Statistics object containing all information required for reporting, with timestamps and calculated metrics.
A list of Conversation Part objects for each part message in the conversation. This is only returned when Retrieving a Conversation, and ignored when Listing all Conversations. There is a limit of 500 parts.
An object containing metadata about linked conversations and linked tickets. Up to 1000 can be returned.
Indicates whether the AI Agent participated in the conversation.
{ "type": "conversation", "id": "409", "created_at": 1719492880, "updated_at": 1719492881, "waiting_since": null, "snoozed_until": null, "source": { "type": "conversation", "id": "403918285", "delivered_as": "admin_initiated", "subject": "", "body": "<p>this is the message body</p>", "author": { … }, "attachments": [], "url": null, "redacted": false }, "contacts": { "type": "contact.list", "contacts": [ … ] }, "first_contact_reply": null, "admin_assignee_id": null, "team_assignee_id": null, "open": false, "state": "closed", "read": false, "tags": { "type": "tag.list", "tags": [] }, "priority": "not_priority", "sla_applied": null, "statistics": null, "conversation_rating": null, "teammates": null, "title": null, "custom_attributes": {}, "topics": {}, "ticket": null, "linked_objects": { "type": "list", "data": [], "total_count": 0, "has_more": false }, "ai_agent": null, "ai_agent_participated": false, "conversation_parts": { "type": "conversation_part.list", "conversation_parts": [ … ], "total_count": 1 } }
You can add participants who are contacts to a conversation, on behalf of either another contact or an admin.
If you add a contact via the email parameter and there is no user/lead found on that workspace with he given email, then we will create a new contact with role
set to lead
.
curl -i -X POST \
'https://api.intercom.io/conversations/{conversation_id}/customers' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-H 'Intercom-Version: 2.11' \
-d '{
"admin_id": 991267631,
"customer": {
"intercom_user_id": "667d61168a68186f43bafe0d"
}
}'
Attach a contact to a conversation
The last time a Contact responded to an Admin. In other words, the time a customer started waiting for a response. Set to null if last reply is from an Admin.
If set this is the time in the future when this conversation will be marked as open. i.e. it will be in a snoozed state until this time. i.e. it will be in a snoozed state until this time.
Can be set to "open", "closed" or "snoozed".
If marked as priority, it will return priority or else not_priority.
The id of the admin assigned to the conversation. If it's not assigned to an admin it will return null.
The id of the team assigned to the conversation. If it's not assigned to a team it will return null.
The Conversation Rating object which contains information on the rating and/or remark added by a Contact and the Admin assigned to the conversation.
The type of the conversation part that started this conversation. Can be Contact, Admin, Campaign, Automated or Operator initiated.
This includes conversation, email, facebook, instagram, phone_call, phone_switch, push, sms, twitter and whatsapp.
The conversation's initiation type. Possible values are customer_initiated, campaigns_initiated (legacy campaigns), operator_initiated (Custom bot), automated (Series and other outbounds with dynamic audience message) and admin_initiated (fixed audience message, ticket initiated by an admin, group email).
Optional. The message subject. For Twitter, this will show a generic message regarding why the subject is obscured.
The message body, which may contain HTML. For Twitter, this will show a generic message regarding why the body is obscured.
The object who initiated the conversation, which can be a Contact, Admin or Team. Bots and campaigns send messages on behalf of Admins or Teams. For Twitter, this will be blank.
The URL where the conversation was started. For Twitter, Email, and Bots, this will be blank.
The list of contacts (users or leads) involved in this conversation. This will only contain one customer unless more were added via the group conversation feature.
The list of contacts (users or leads) involved in this conversation. This will only contain one customer unless more were added via the group conversation feature.
The unique identifier for the contact which is given by Intercom.
The list of teammates who participated in the conversation (wrote at least one conversation part).
An object containing the different custom attributes associated to the conversation as key-value pairs. For relationship attributes the value will be a list of custom object instance models.
An object containing information on the first users message. For a contact initiated message this will represent the users original message.
The SLA Applied object contains the details for which SLA has been applied to this conversation. Important: if there are any canceled sla_events for the conversation - meaning an SLA has been manually removed from a conversation, the sla_status will always be returned as null.
A Statistics object containing all information required for reporting, with timestamps and calculated metrics.
A list of Conversation Part objects for each part message in the conversation. This is only returned when Retrieving a Conversation, and ignored when Listing all Conversations. There is a limit of 500 parts.
An object containing metadata about linked conversations and linked tickets. Up to 1000 can be returned.
Indicates whether the AI Agent participated in the conversation.
{ "customers": [ { … } ] }
You can add participants who are contacts to a conversation, on behalf of either another contact or an admin.
If you add a contact via the email parameter and there is no user/lead found on that workspace with he given email, then we will create a new contact with role
set to lead
.
curl -i -X DELETE \
'https://api.intercom.io/conversations/{conversation_id}/customers/{contact_id}' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-H 'Intercom-Version: 2.11' \
-d '{
"admin_id": 991267639,
"customer": {
"intercom_user_id": "667d611c8a68186f43bafe11"
}
}'
Detach a contact from a group conversation
The last time a Contact responded to an Admin. In other words, the time a customer started waiting for a response. Set to null if last reply is from an Admin.
If set this is the time in the future when this conversation will be marked as open. i.e. it will be in a snoozed state until this time. i.e. it will be in a snoozed state until this time.
Can be set to "open", "closed" or "snoozed".
If marked as priority, it will return priority or else not_priority.
The id of the admin assigned to the conversation. If it's not assigned to an admin it will return null.
The id of the team assigned to the conversation. If it's not assigned to a team it will return null.
The Conversation Rating object which contains information on the rating and/or remark added by a Contact and the Admin assigned to the conversation.
The type of the conversation part that started this conversation. Can be Contact, Admin, Campaign, Automated or Operator initiated.
This includes conversation, email, facebook, instagram, phone_call, phone_switch, push, sms, twitter and whatsapp.
The conversation's initiation type. Possible values are customer_initiated, campaigns_initiated (legacy campaigns), operator_initiated (Custom bot), automated (Series and other outbounds with dynamic audience message) and admin_initiated (fixed audience message, ticket initiated by an admin, group email).
Optional. The message subject. For Twitter, this will show a generic message regarding why the subject is obscured.
The message body, which may contain HTML. For Twitter, this will show a generic message regarding why the body is obscured.
The object who initiated the conversation, which can be a Contact, Admin or Team. Bots and campaigns send messages on behalf of Admins or Teams. For Twitter, this will be blank.
The URL where the conversation was started. For Twitter, Email, and Bots, this will be blank.
The list of contacts (users or leads) involved in this conversation. This will only contain one customer unless more were added via the group conversation feature.
The list of contacts (users or leads) involved in this conversation. This will only contain one customer unless more were added via the group conversation feature.
The unique identifier for the contact which is given by Intercom.
The list of teammates who participated in the conversation (wrote at least one conversation part).
An object containing the different custom attributes associated to the conversation as key-value pairs. For relationship attributes the value will be a list of custom object instance models.
An object containing information on the first users message. For a contact initiated message this will represent the users original message.
The SLA Applied object contains the details for which SLA has been applied to this conversation. Important: if there are any canceled sla_events for the conversation - meaning an SLA has been manually removed from a conversation, the sla_status will always be returned as null.
A Statistics object containing all information required for reporting, with timestamps and calculated metrics.
A list of Conversation Part objects for each part message in the conversation. This is only returned when Retrieving a Conversation, and ignored when Listing all Conversations. There is a limit of 500 parts.
An object containing metadata about linked conversations and linked tickets. Up to 1000 can be returned.
Indicates whether the AI Agent participated in the conversation.
{ "customers": [ { … } ] }
You can redact a conversation part or the source message of a conversation (as seen in the source object).
If you are redacting a conversation part, it must have a body
. If you are redacting a source message, it must have been created by a contact. We will return a conversation_part_not_redactable
error if these criteria are not met.
Payload of the request to redact a conversation part
The type of resource being redacted.
curl -i -X POST \
https://api.intercom.io/conversations/redact \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-H 'Intercom-Version: 2.11' \
-d '{
"type": "conversation_part",
"conversation_id": 471,
"conversation_part_id": 115
}'
Redact a conversation part
The last time a Contact responded to an Admin. In other words, the time a customer started waiting for a response. Set to null if last reply is from an Admin.
If set this is the time in the future when this conversation will be marked as open. i.e. it will be in a snoozed state until this time. i.e. it will be in a snoozed state until this time.
Can be set to "open", "closed" or "snoozed".
If marked as priority, it will return priority or else not_priority.
The id of the admin assigned to the conversation. If it's not assigned to an admin it will return null.
The id of the team assigned to the conversation. If it's not assigned to a team it will return null.
The Conversation Rating object which contains information on the rating and/or remark added by a Contact and the Admin assigned to the conversation.
The type of the conversation part that started this conversation. Can be Contact, Admin, Campaign, Automated or Operator initiated.
This includes conversation, email, facebook, instagram, phone_call, phone_switch, push, sms, twitter and whatsapp.
The conversation's initiation type. Possible values are customer_initiated, campaigns_initiated (legacy campaigns), operator_initiated (Custom bot), automated (Series and other outbounds with dynamic audience message) and admin_initiated (fixed audience message, ticket initiated by an admin, group email).
Optional. The message subject. For Twitter, this will show a generic message regarding why the subject is obscured.
The message body, which may contain HTML. For Twitter, this will show a generic message regarding why the body is obscured.
The object who initiated the conversation, which can be a Contact, Admin or Team. Bots and campaigns send messages on behalf of Admins or Teams. For Twitter, this will be blank.
The URL where the conversation was started. For Twitter, Email, and Bots, this will be blank.
The list of contacts (users or leads) involved in this conversation. This will only contain one customer unless more were added via the group conversation feature.
The list of contacts (users or leads) involved in this conversation. This will only contain one customer unless more were added via the group conversation feature.
The unique identifier for the contact which is given by Intercom.
The list of teammates who participated in the conversation (wrote at least one conversation part).
An object containing the different custom attributes associated to the conversation as key-value pairs. For relationship attributes the value will be a list of custom object instance models.
An object containing information on the first users message. For a contact initiated message this will represent the users original message.
The SLA Applied object contains the details for which SLA has been applied to this conversation. Important: if there are any canceled sla_events for the conversation - meaning an SLA has been manually removed from a conversation, the sla_status will always be returned as null.
A Statistics object containing all information required for reporting, with timestamps and calculated metrics.
A list of Conversation Part objects for each part message in the conversation. This is only returned when Retrieving a Conversation, and ignored when Listing all Conversations. There is a limit of 500 parts.
An object containing metadata about linked conversations and linked tickets. Up to 1000 can be returned.
Indicates whether the AI Agent participated in the conversation.
{ "type": "conversation", "id": "471", "created_at": 1719492938, "updated_at": 1719492940, "waiting_since": 1719492939, "snoozed_until": null, "source": { "type": "conversation", "id": "403918311", "delivered_as": "admin_initiated", "subject": "", "body": "<p>this is the message body</p>", "author": { … }, "attachments": [], "url": null, "redacted": false }, "contacts": { "type": "contact.list", "contacts": [ … ] }, "first_contact_reply": { "created_at": 1719492939, "type": "conversation", "url": null }, "admin_assignee_id": null, "team_assignee_id": null, "open": true, "state": "open", "read": true, "tags": { "type": "tag.list", "tags": [] }, "priority": "not_priority", "sla_applied": null, "statistics": null, "conversation_rating": null, "teammates": null, "title": null, "custom_attributes": {}, "topics": {}, "ticket": null, "linked_objects": { "type": "list", "data": [], "total_count": 0, "has_more": false }, "ai_agent": null, "ai_agent_participated": false, "conversation_parts": { "type": "conversation_part.list", "conversation_parts": [ … ], "total_count": 1 } }
The ID of the type of ticket you want to convert the conversation to
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
).
curl -i -X POST \
'https://api.intercom.io/conversations/{conversation_id}/convert' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-H 'Intercom-Version: 2.11' \
-d '{
"ticket_type_id": "79"
}'
successful
The ID of the Ticket used in the Intercom Inbox and Messenger. Do not use ticket_id for API queries.
Category of the Ticket.
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_
.
The state the ticket is currently in
A ticket type, used to define the data fields to be captured in a ticket.
String representing the object's type. Always has the value ticket_type
.
Category of the Ticket Type.
The description of the ticket type
The id of the workspace that the ticket type belongs to.
A list of attributes associated with a given ticket type.
String representing the object's type. Always has the value ticket_type_attributes.list
.
A list of ticket type attributes associated with a given ticket type.
String representing the object's type. Always has the value ticket_type_attribute
.
The id representing the ticket type attribute.
The id of the workspace that the ticket type attribute belongs to.
The name of the ticket type attribute
The description of the ticket type attribute
The type of the data attribute (allowed values: "string list integer decimal boolean datetime files")
Input options for the attribute
The order of the attribute against other attributes
Whether the attribute is required or not for teammates.
Whether the attribute is required or not for contacts.
Whether the attribute is visible or not to teammates.
Whether the attribute is visible or not to contacts.
Whether the attribute is built in or not.
The id of the ticket type that the attribute belongs to.
Whether the ticket type attribute is archived or not.
The date and time the ticket type attribute was created.
The list of contacts affected by a ticket.
The list of contacts affected by this ticket.
The unique identifier for the contact which is given by Intercom.
The time the ticket was created as a UTC Unix timestamp.
The last time the ticket was updated as a UTC Unix timestamp.
The time the ticket will be snoozed until as a UTC Unix timestamp. If null, the ticket is not currently snoozed.
An object containing metadata about linked conversations and linked tickets. Up to 1000 can be returned.
A list of Ticket Part objects for each note and event in the ticket. There is a limit of 500 parts.
The state the ticket is currently in, in a human readable form - visible in Intercom
{ "type": "ticket", "id": "474", "ticket_id": "37", "ticket_attributes": {}, "ticket_state": "submitted", "ticket_type": { "type": "ticket_type", "id": "79", "name": "my-ticket-type-1", "description": "my ticket type description is awesome.", "icon": "🦁", "workspace_id": "this_is_an_id404_that_should_be_at_least_", "archived": false, "created_at": 1719492947, "updated_at": 1719492947, "is_internal": false, "ticket_type_attributes": { … }, "category": "Customer" }, "contacts": { "type": "contact.list", "contacts": [ … ] }, "admin_assignee_id": "0", "team_assignee_id": "0", "created_at": 1719492945, "updated_at": 1719492947, "ticket_parts": { "type": "ticket_part.list", "ticket_parts": [ … ], "total_count": 2 }, "open": true, "linked_objects": { "type": "list", "data": [], "total_count": 0, "has_more": false }, "category": "Customer", "is_shared": true, "ticket_state_internal_label": "Submitted", "ticket_state_external_label": "Submitted" }