Query structured spec data via REST or MCP. Get exactly what your agent needs.
https://api.intercom.io
https://api.eu.intercom.io
https://api.au.intercom.io
/admins
You can fetch a list of admins for a given workspace.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| Intercom-Version | header | optional | — |
Successful response
Unauthorized
GET /admins
/admins/activity_logs
You can get a log of activities by all admins in an app.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| Intercom-Version | header | optional | — | |
| created_at_after | query | required | string | The start date that you request data for. It must be formatted as a UNIX timestamp. |
| created_at_before | query | optional | string | The end date that you request data for. It must be formatted as a UNIX timestamp. |
Successful response
Unauthorized
GET /admins/activity_logs
/admins/{id}
You can retrieve the details of a single admin.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| Intercom-Version | header | optional | — | |
| id | path | required | integer | The unique identifier of a given admin |
Admin found
Unauthorized
Admin not found
GET /admins/{id}
/admins/{id}/away
You can set an Admin as away for the Inbox.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| Intercom-Version | header | optional | — | |
| id | path | required | integer | The unique identifier of a given admin |
application/json
AdminsSetAdminAwayRequest
| Property | Type | Required |
|---|---|---|
| away_mode_enabled | boolean | required |
| away_mode_reassign | boolean | required |
Successful response
Unauthorized
Admin not found
PUT /admins/{id}/away
/me
You can view the currently authorised admin along with the embedded app object (a “workspace” in legacy terminology).
🚧 Single Sign On
If you are building a custom “Log in with Intercom” flow for your site, and you call the
/meendpoint to identify the logged-in user, you should not accept any sign-ins from users with unverified email addresses as it poses a potential impersonation security risk.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| Intercom-Version | header | optional | — |
Successful response
GET /me
/articles
You can fetch a list of all articles by making a GET request to https://api.intercom.io/articles.
📘 How are the articles sorted and ordered?
Articles will be returned in descending order on the
updated_atattribute. This means if you need to iterate through results then we’ll show the most recently updated articles first.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| Intercom-Version | header | optional | — |
successful
Unauthorized
GET /articles
/articles
You can create a new article by making a POST request to https://api.intercom.io/articles.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| Intercom-Version | header | optional | — |
application/json
create_article_request
| Property | Type | Required |
|---|---|---|
| body | string | optional |
| state | string | optional |
| title | string | required |
| author_id | integer | required |
| parent_id | integer | optional |
| description | string | optional |
| parent_type | string | optional |
| translated_content | object | optional |
| └ ar | object | optional |
| └ url | string | optional |
| └ body | string | optional |
| └ type | string | optional |
| └ state | string | optional |
| └ title | string | optional |
| └ author_id | integer | optional |
| └ created_at | integer | optional |
| └ updated_at | integer | optional |
| └ description | string | optional |
| └ bg | object | optional |
| └ url | string | optional |
| └ body | string | optional |
| └ type | string | optional |
| └ state | string | optional |
| └ title | string | optional |
| └ author_id | integer | optional |
| └ created_at | integer | optional |
| └ updated_at | integer | optional |
| └ description | string | optional |
| └ bs | object | optional |
| └ url | string | optional |
| └ body | string | optional |
| └ type | string | optional |
| └ state | string | optional |
| └ title | string | optional |
| └ author_id | integer | optional |
| └ created_at | integer | optional |
| └ updated_at | integer | optional |
| └ description | string | optional |
| └ ca | object | optional |
| └ url | string | optional |
| └ body | string | optional |
| └ type | string | optional |
| └ state | string | optional |
| └ title | string | optional |
| └ author_id | integer | optional |
| └ created_at | integer | optional |
| └ updated_at | integer | optional |
| └ description | string | optional |
| └ cs | object | optional |
| └ url | string | optional |
| └ body | string | optional |
| └ type | string | optional |
| └ state | string | optional |
| └ title | string | optional |
| └ author_id | integer | optional |
| └ created_at | integer | optional |
| └ updated_at | integer | optional |
| └ description | string | optional |
| └ da | object | optional |
| └ url | string | optional |
| └ body | string | optional |
| └ type | string | optional |
| └ state | string | optional |
| └ title | string | optional |
| └ author_id | integer | optional |
| └ created_at | integer | optional |
| └ updated_at | integer | optional |
| └ description | string | optional |
| └ de | object | optional |
| └ url | string | optional |
| └ body | string | optional |
| └ type | string | optional |
| └ state | string | optional |
| └ title | string | optional |
| └ author_id | integer | optional |
| └ created_at | integer | optional |
| └ updated_at | integer | optional |
| └ description | string | optional |
| └ el | object | optional |
| └ url | string | optional |
| └ body | string | optional |
| └ type | string | optional |
| └ state | string | optional |
| └ title | string | optional |
| └ author_id | integer | optional |
| └ created_at | integer | optional |
| └ updated_at | integer | optional |
| └ description | string | optional |
| └ en | object | optional |
| └ url | string | optional |
| └ body | string | optional |
| └ type | string | optional |
| └ state | string | optional |
| └ title | string | optional |
| └ author_id | integer | optional |
| └ created_at | integer | optional |
| └ updated_at | integer | optional |
| └ description | string | optional |
| └ es | object | optional |
| └ url | string | optional |
| └ body | string | optional |
| └ type | string | optional |
| └ state | string | optional |
| └ title | string | optional |
| └ author_id | integer | optional |
| └ created_at | integer | optional |
| └ updated_at | integer | optional |
| └ description | string | optional |
| └ et | object | optional |
| └ url | string | optional |
| └ body | string | optional |
| └ type | string | optional |
| └ state | string | optional |
| └ title | string | optional |
| └ author_id | integer | optional |
| └ created_at | integer | optional |
| └ updated_at | integer | optional |
| └ description | string | optional |
| └ fi | object | optional |
| └ url | string | optional |
| └ body | string | optional |
| └ type | string | optional |
| └ state | string | optional |
| └ title | string | optional |
| └ author_id | integer | optional |
| └ created_at | integer | optional |
| └ updated_at | integer | optional |
| └ description | string | optional |
| └ fr | object | optional |
| └ url | string | optional |
| └ body | string | optional |
| └ type | string | optional |
| └ state | string | optional |
| └ title | string | optional |
| └ author_id | integer | optional |
| └ created_at | integer | optional |
| └ updated_at | integer | optional |
| └ description | string | optional |
| └ he | object | optional |
| └ url | string | optional |
| └ body | string | optional |
| └ type | string | optional |
| └ state | string | optional |
| └ title | string | optional |
| └ author_id | integer | optional |
| └ created_at | integer | optional |
| └ updated_at | integer | optional |
| └ description | string | optional |
| └ hr | object | optional |
| └ url | string | optional |
| └ body | string | optional |
| └ type | string | optional |
| └ state | string | optional |
| └ title | string | optional |
| └ author_id | integer | optional |
| └ created_at | integer | optional |
| └ updated_at | integer | optional |
| └ description | string | optional |
| └ hu | object | optional |
| └ url | string | optional |
| └ body | string | optional |
| └ type | string | optional |
| └ state | string | optional |
| └ title | string | optional |
| └ author_id | integer | optional |
| └ created_at | integer | optional |
| └ updated_at | integer | optional |
| └ description | string | optional |
| └ id | object | optional |
| └ url | string | optional |
| └ body | string | optional |
| └ type | string | optional |
| └ state | string | optional |
| └ title | string | optional |
| └ author_id | integer | optional |
| └ created_at | integer | optional |
| └ updated_at | integer | optional |
| └ description | string | optional |
| └ it | object | optional |
| └ url | string | optional |
| └ body | string | optional |
| └ type | string | optional |
| └ state | string | optional |
| └ title | string | optional |
| └ author_id | integer | optional |
| └ created_at | integer | optional |
| └ updated_at | integer | optional |
| └ description | string | optional |
| └ ja | object | optional |
| └ url | string | optional |
| └ body | string | optional |
| └ type | string | optional |
| └ state | string | optional |
| └ title | string | optional |
| └ author_id | integer | optional |
| └ created_at | integer | optional |
| └ updated_at | integer | optional |
| └ description | string | optional |
| └ ko | object | optional |
| └ url | string | optional |
| └ body | string | optional |
| └ type | string | optional |
| └ state | string | optional |
| └ title | string | optional |
| └ author_id | integer | optional |
| └ created_at | integer | optional |
| └ updated_at | integer | optional |
| └ description | string | optional |
| └ …18 more | object | optional |
article created
Bad Request
Unauthorized
POST /articles
/articles/{id}
You can delete a single article by making a DELETE request to https://api.intercom.io/articles/<id>.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| Intercom-Version | header | optional | — | |
| id | path | required | integer | The unique identifier for the article which is given by Intercom. |
successful
Unauthorized
Article Not Found
DELETE /articles/{id}
/articles/{id}
You can fetch the details of a single article by making a GET request to https://api.intercom.io/articles/<id>.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| Intercom-Version | header | optional | — | |
| id | path | required | integer | The unique identifier for the article which is given by Intercom. |
Article found
Unauthorized
Article not found
GET /articles/{id}
/articles/{id}
You can update the details of a single article by making a PUT request to https://api.intercom.io/articles/<id>.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| Intercom-Version | header | optional | — | |
| id | path | required | integer | The unique identifier for the article which is given by Intercom. |
application/json
update_article_request
| Property | Type | Required |
|---|---|---|
| body | string | optional |
| state | string | optional |
| title | string | optional |
| author_id | integer | optional |
| parent_id | string | optional |
| description | string | optional |
| parent_type | string | optional |
| translated_content | object | optional |
| └ ar | object | optional |
| └ url | string | optional |
| └ body | string | optional |
| └ type | string | optional |
| └ state | string | optional |
| └ title | string | optional |
| └ author_id | integer | optional |
| └ created_at | integer | optional |
| └ updated_at | integer | optional |
| └ description | string | optional |
| └ bg | object | optional |
| └ url | string | optional |
| └ body | string | optional |
| └ type | string | optional |
| └ state | string | optional |
| └ title | string | optional |
| └ author_id | integer | optional |
| └ created_at | integer | optional |
| └ updated_at | integer | optional |
| └ description | string | optional |
| └ bs | object | optional |
| └ url | string | optional |
| └ body | string | optional |
| └ type | string | optional |
| └ state | string | optional |
| └ title | string | optional |
| └ author_id | integer | optional |
| └ created_at | integer | optional |
| └ updated_at | integer | optional |
| └ description | string | optional |
| └ ca | object | optional |
| └ url | string | optional |
| └ body | string | optional |
| └ type | string | optional |
| └ state | string | optional |
| └ title | string | optional |
| └ author_id | integer | optional |
| └ created_at | integer | optional |
| └ updated_at | integer | optional |
| └ description | string | optional |
| └ cs | object | optional |
| └ url | string | optional |
| └ body | string | optional |
| └ type | string | optional |
| └ state | string | optional |
| └ title | string | optional |
| └ author_id | integer | optional |
| └ created_at | integer | optional |
| └ updated_at | integer | optional |
| └ description | string | optional |
| └ da | object | optional |
| └ url | string | optional |
| └ body | string | optional |
| └ type | string | optional |
| └ state | string | optional |
| └ title | string | optional |
| └ author_id | integer | optional |
| └ created_at | integer | optional |
| └ updated_at | integer | optional |
| └ description | string | optional |
| └ de | object | optional |
| └ url | string | optional |
| └ body | string | optional |
| └ type | string | optional |
| └ state | string | optional |
| └ title | string | optional |
| └ author_id | integer | optional |
| └ created_at | integer | optional |
| └ updated_at | integer | optional |
| └ description | string | optional |
| └ el | object | optional |
| └ url | string | optional |
| └ body | string | optional |
| └ type | string | optional |
| └ state | string | optional |
| └ title | string | optional |
| └ author_id | integer | optional |
| └ created_at | integer | optional |
| └ updated_at | integer | optional |
| └ description | string | optional |
| └ en | object | optional |
| └ url | string | optional |
| └ body | string | optional |
| └ type | string | optional |
| └ state | string | optional |
| └ title | string | optional |
| └ author_id | integer | optional |
| └ created_at | integer | optional |
| └ updated_at | integer | optional |
| └ description | string | optional |
| └ es | object | optional |
| └ url | string | optional |
| └ body | string | optional |
| └ type | string | optional |
| └ state | string | optional |
| └ title | string | optional |
| └ author_id | integer | optional |
| └ created_at | integer | optional |
| └ updated_at | integer | optional |
| └ description | string | optional |
| └ et | object | optional |
| └ url | string | optional |
| └ body | string | optional |
| └ type | string | optional |
| └ state | string | optional |
| └ title | string | optional |
| └ author_id | integer | optional |
| └ created_at | integer | optional |
| └ updated_at | integer | optional |
| └ description | string | optional |
| └ fi | object | optional |
| └ url | string | optional |
| └ body | string | optional |
| └ type | string | optional |
| └ state | string | optional |
| └ title | string | optional |
| └ author_id | integer | optional |
| └ created_at | integer | optional |
| └ updated_at | integer | optional |
| └ description | string | optional |
| └ fr | object | optional |
| └ url | string | optional |
| └ body | string | optional |
| └ type | string | optional |
| └ state | string | optional |
| └ title | string | optional |
| └ author_id | integer | optional |
| └ created_at | integer | optional |
| └ updated_at | integer | optional |
| └ description | string | optional |
| └ he | object | optional |
| └ url | string | optional |
| └ body | string | optional |
| └ type | string | optional |
| └ state | string | optional |
| └ title | string | optional |
| └ author_id | integer | optional |
| └ created_at | integer | optional |
| └ updated_at | integer | optional |
| └ description | string | optional |
| └ hr | object | optional |
| └ url | string | optional |
| └ body | string | optional |
| └ type | string | optional |
| └ state | string | optional |
| └ title | string | optional |
| └ author_id | integer | optional |
| └ created_at | integer | optional |
| └ updated_at | integer | optional |
| └ description | string | optional |
| └ hu | object | optional |
| └ url | string | optional |
| └ body | string | optional |
| └ type | string | optional |
| └ state | string | optional |
| └ title | string | optional |
| └ author_id | integer | optional |
| └ created_at | integer | optional |
| └ updated_at | integer | optional |
| └ description | string | optional |
| └ id | object | optional |
| └ url | string | optional |
| └ body | string | optional |
| └ type | string | optional |
| └ state | string | optional |
| └ title | string | optional |
| └ author_id | integer | optional |
| └ created_at | integer | optional |
| └ updated_at | integer | optional |
| └ description | string | optional |
| └ it | object | optional |
| └ url | string | optional |
| └ body | string | optional |
| └ type | string | optional |
| └ state | string | optional |
| └ title | string | optional |
| └ author_id | integer | optional |
| └ created_at | integer | optional |
| └ updated_at | integer | optional |
| └ description | string | optional |
| └ ja | object | optional |
| └ url | string | optional |
| └ body | string | optional |
| └ type | string | optional |
| └ state | string | optional |
| └ title | string | optional |
| └ author_id | integer | optional |
| └ created_at | integer | optional |
| └ updated_at | integer | optional |
| └ description | string | optional |
| └ ko | object | optional |
| └ url | string | optional |
| └ body | string | optional |
| └ type | string | optional |
| └ state | string | optional |
| └ title | string | optional |
| └ author_id | integer | optional |
| └ created_at | integer | optional |
| └ updated_at | integer | optional |
| └ description | string | optional |
| └ …18 more | object | optional |
successful
Unauthorized
Article Not Found
PUT /articles/{id}
/companies
You can fetch a single company by passing in company_id or name.
https://api.intercom.io/companies?name={name}
https://api.intercom.io/companies?company_id={company_id}
You can fetch all companies and filter by segment_id or tag_id as a query parameter.
https://api.intercom.io/companies?tag_id={tag_id}
https://api.intercom.io/companies?segment_id={segment_id}
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| Intercom-Version | header | optional | — | |
| name | query | optional | string | The |
| company_id | query | optional | string | The |
| tag_id | query | optional | string | The |
| segment_id | query | optional | string | The |
| page | query | optional | integer | The page of results to fetch. Defaults to first page |
| per_page | query | optional | integer | How many results to display per page. Defaults to 15 |
Successful
Unauthorized
Company Not Found
GET /companies
/companies
You can create or update a company.
Companies will be only visible in Intercom when there is at least one associated user.
Companies are looked up via company_id in a POST request, if not found via company_id, the new company will be created, if found, that company will be updated.
{% admonition type=”attention” name=”Using company_id” %}
You can set a unique company_id value when creating a company. However, it is not possible to update company_id. Be sure to set a unique value once upon creation of the company.
{% /admonition %}
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| Intercom-Version | header | optional | — |
application/json
create_or_update_company_request
| Property | Type | Required |
|---|---|---|
| name | string | optional |
| plan | string | optional |
| size | integer | optional |
| website | string | optional |
| industry | string | optional |
| company_id | string | optional |
| monthly_spend | integer | optional |
| custom_attributes | object | optional |
| remote_created_at | integer | optional |
Successful
Bad Request
Unauthorized
POST /companies
/companies/list
You can list companies. The company list is sorted by the last_request_at field and by default is ordered descending, most recently requested first.
Note that the API does not include companies who have no associated users in list responses.
When using the Companies endpoint and the pages object to iterate through the returned companies, there is a limit of 10,000 Companies that can be returned. If you need to list or iterate on more than 10,000 Companies, please use the Scroll API.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| Intercom-Version | header | optional | — | |
| page | query | optional | integer | what page of results to fetch. Defaults to first page |
| per_page | query | optional | integer | how many results per page. Defaults to 15 |
| order | query | optional | string |
|
Successful
Unauthorized
POST /companies/list
/companies/scroll
The `list all companies` functionality does not work well for huge datasets, and can result in errors and performance problems when paging deeply. The Scroll API provides an efficient mechanism for iterating over all companies in a dataset.
📘 Scroll Parameter
You can get the first page of companies by simply sending a GET request to the scroll endpoint. For subsequent requests you will need to use the scroll parameter from the response.
❗️ Scroll network timeouts
Since scroll is often used on large datasets network errors such as timeouts can be encountered. When this occurs you will need to restart your scroll query as it is not possible to continue from a specific point when using scroll.
When this occurs you will see a HTTP 500 error with the following message:
“Request failed due to an internal network error. Please restart the scroll operation.”
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| Intercom-Version | header | optional | — | |
| scroll_param | query | optional | string | — |
Successful
Unauthorized
GET /companies/scroll
/companies/{id}
You can delete a single company.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| Intercom-Version | header | optional | — | |
| id | path | required | string | The unique identifier for the company which is given by Intercom |
Successful
Unauthorized
Company Not Found
DELETE /companies/{id}
/companies/{id}
You can fetch a single company.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| Intercom-Version | header | optional | — | |
| id | path | required | string | The unique identifier for the company which is given by Intercom |
Successful
Unauthorized
Company Not Found
GET /companies/{id}
/companies/{id}
You can update a single company using the Intercom provisioned id.
{% admonition type=”attention” name=”Using company_id” %}
When updating a company it is not possible to update company_id. This can only be set once upon creation of the company.
{% /admonition %}
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| Intercom-Version | header | optional | — | |
| id | path | required | string | The unique identifier for the company which is given by Intercom |
Successful
Unauthorized
Company Not Found
PUT /companies/{id}
/companies/{id}/contacts
You can fetch a list of all contacts that belong to a company.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| Intercom-Version | header | optional | — | |
| id | path | required | string | The unique identifier for the company which is given by Intercom |
Successful
Unauthorized
Company Not Found
GET /companies/{id}/contacts
/companies/{id}/segments
You can fetch a list of all segments that belong to a company.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| Intercom-Version | header | optional | — | |
| id | path | required | string | The unique identifier for the company which is given by Intercom |
Successful
Unauthorized
Company Not Found
GET /companies/{id}/segments
/contacts/{contact_id}/companies/{id}
You can detach a company from a single contact.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| Intercom-Version | header | optional | — | |
| contact_id | path | required | string | The unique identifier for the contact which is given by Intercom |
| id | path | required | string | The unique identifier for the company which is given by Intercom |
Successful
Unauthorized
Contact Not Found
DELETE /contacts/{contact_id}/companies/{id}
/contacts/{id}/companies
You can attach a company to a single contact.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| Intercom-Version | header | optional | — | |
| id | path | required | string | The unique identifier for the contact which is given by Intercom |
application/json
CompaniesAttachContactToRequest
| Property | Type | Required |
|---|---|---|
| id | string | required |
Successful
Bad Request
Unauthorized
Company Not Found
POST /contacts/{id}/companies
/contacts
You can fetch a list of all contacts.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| Intercom-Version | header | optional | — |
successful
Unauthorized
GET /contacts
/contacts
You can create a new contact (ie. user or lead).
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| Intercom-Version | header | optional | — |
application/json
ContactsCreateNewContactRequest
successful
Unauthorized
POST /contacts
/contacts/merge
You can merge a contact with a role of lead into a contact with a role of user.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| Intercom-Version | header | optional | — |
application/json
merge_contacts_request
| Property | Type | Required |
|---|---|---|
| from | string | optional |
| into | string | optional |
successful
Unauthorized
POST /contacts/merge
/contacts/search
You can search for multiple contacts by the value of their attributes in order to fetch exactly who you want.
To search for contacts, you need to send a POST request to https://api.intercom.io/contacts/search.
This will accept a query object in the body which will define your filters in order to search for contacts.
If a contact has recently been created, there is a possibility that it will not yet be available when searching. This means that it may not appear in the response. This delay can take a few minutes. If you need to be instantly notified it is recommended to use webhooks and iterate to see if they match your search filters.
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:
All timestamp fields (created_at, updated_at etc.) are indexed as Dates for Contact Search queries; Datetime queries are not currently supported. This means you can only query for timestamp fields by day - not hour, minute or second.
For example, if you search for all Contacts with a created_at value greater (>) than 1577869200 (the UNIX timestamp for January 1st, 2020 9:00 AM), that will be interpreted as 1577836800 (January 1st, 2020 12:00 AM). The search results will then include Contacts created from January 2nd, 2020 12:00 AM onwards.
If you’d like to get contacts created on January 1st, 2020 you should search with a created_at value equal (=) to 1577836800 (January 1st, 2020 12:00 AM).
This behaviour applies only to timestamps used in search queries. The search results will still contain the full UNIX timestamp and be sorted accordingly.
Most key listed as part of the Contacts 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 "foorbar").
| Field | Type |
|---|---|
| id | String |
| role | String Accepts user or lead |
| name | String |
| avatar | String |
| owner_id | Integer |
| String | |
| email_domain | String |
| phone | String |
| formatted_phone | String |
| external_id | String |
| created_at | Date (UNIX Timestamp) |
| signed_up_at | Date (UNIX Timestamp) |
| updated_at | Date (UNIX Timestamp) |
| last_seen_at | Date (UNIX Timestamp) |
| last_contacted_at | Date (UNIX Timestamp) |
| last_replied_at | Date (UNIX Timestamp) |
| last_email_opened_at | Date (UNIX Timestamp) |
| last_email_clicked_at | Date (UNIX Timestamp) |
| language_override | String |
| browser | String |
| browser_language | String |
| os | String |
| location.country | String |
| location.region | String |
| location.city | String |
| unsubscribed_from_emails | Boolean |
| marked_email_as_spam | Boolean |
| has_hard_bounced | Boolean |
| ios_last_seen_at | Date (UNIX Timestamp) |
| ios_app_version | String |
| ios_device | String |
| ios_app_device | String |
| ios_os_version | String |
| ios_app_name | String |
| ios_sdk_version | String |
| android_last_seen_at | Date (UNIX Timestamp) |
| android_app_version | String |
| android_device | String |
| android_app_name | String |
| andoid_sdk_version | String |
| segment_id | String |
| tag_id | String |
| custom_attributes.{attribute_name} | String |
{% admonition type=”attention” name=”Searching based on created_at” %}
You cannot use the <= or >= operators to search by created_at.
{% /admonition %}
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 queriesValues must be in Array |
| NIN | All | Not In Shortcut for OR ! queriesValues must be in Array |
| > | Integer Date (UNIX Timestamp) |
Greater than |
| < | Integer Date (UNIX Timestamp) |
Lower than |
| ~ | String | Contains |
| !~ | String | Doesn’t Contain |
| ^ | String | Starts With |
| $ | String | Ends With |
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| Intercom-Version | header | optional | — |
application/json
search_request
| Property | Type | Required |
|---|---|---|
| query | object | required |
| pagination | object | optional |
| └ page | integer | optional |
| └ starting_after | string | optional |
successful
Unauthorized
POST /contacts/search
/contacts/{contact_id}/segments
You can fetch a list of segments that are associated to a contact.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| contact_id | path | required | string | The unique identifier for the contact which is given by Intercom |
| Intercom-Version | header | optional | — |
successful
Unauthorized
Contact not found
GET /contacts/{contact_id}/segments
/contacts/{contact_id}/subscriptions
You can fetch a list of subscription types that are attached to a contact. These can be subscriptions that a user has ‘opted-in’ to or has ‘opted-out’ from, depending on the subscription type.
This will return a list of Subscription Type objects that the contact is associated with.
The data property will show a combined list of:
1.Opt-out subscription types that the user has opted-out from.
2.Opt-in subscription types that the user has opted-in to receiving.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| contact_id | path | required | string | The unique identifier for the contact which is given by Intercom |
| Intercom-Version | header | optional | — |
Successful
Unauthorized
Contact not found
GET /contacts/{contact_id}/subscriptions
/contacts/{contact_id}/tags
You can fetch a list of all tags that are attached to a specific contact.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| Intercom-Version | header | optional | — | |
| contact_id | path | required | string | The unique identifier for the contact which is given by Intercom |
successful
Unauthorized
Contact not found
GET /contacts/{contact_id}/tags
/contacts/{id}
You can delete a single contact.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| Intercom-Version | header | optional | — | |
| id | path | required | string | id |
successful
Unauthorized
DELETE /contacts/{id}
/contacts/{id}
You can fetch the details of a single contact.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| Intercom-Version | header | optional | — | |
| id | path | required | string | id |
successful
Unauthorized
GET /contacts/{id}
/contacts/{id}
You can update an existing contact (ie. user or lead).
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| Intercom-Version | header | optional | — | |
| id | path | required | string | id |
application/json
ContactsUpdateContactRequest
successful
Unauthorized
PUT /contacts/{id}
/contacts/{id}/archive
You can archive a single contact.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| Intercom-Version | header | optional | — | |
| id | path | required | string | id |
successful
POST /contacts/{id}/archive
/contacts/{id}/companies
You can fetch a list of companies that are associated to a contact.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | The unique identifier for the contact which is given by Intercom |
| Intercom-Version | header | optional | — |
successful
Unauthorized
Contact not found
GET /contacts/{id}/companies
/contacts/{id}/unarchive
You can unarchive a single contact.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| Intercom-Version | header | optional | — | |
| id | path | required | string | id |
successful
POST /contacts/{id}/unarchive
/conversations
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
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| Intercom-Version | header | optional | — | |
| per_page | query | optional | integer | How many results per page |
| starting_after | query | optional | string | String used to get the next page of conversations. |
successful
Unauthorized
API plan restricted
GET /conversations
/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.
{% admonition type=”info” name=”Sending for visitors” %}
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.
{% /admonition %}
This will return the Message model that has been created.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| Intercom-Version | header | optional | — |
application/json
create_conversation_request
| Property | Type | Required |
|---|---|---|
| body | string | required |
| from | object | required |
| └ id | string | required |
| └ type | string | required |
conversation created
Unauthorized
API plan restricted
Contact Not Found
POST /conversations
/conversations/redact
You can redact a conversation part or the source message of a conversation (as seen in the source object).
{% admonition type=”info” name=”Redacting parts and messages” %}
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.
{% /admonition %}
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| Intercom-Version | header | optional | — |
application/json
redact_conversation_request
Redact a conversation part
Unauthorized
Not found
POST /conversations/redact
/conversations/search
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.
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 as part of the The conversation model is 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").
| 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 |
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 |
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| Intercom-Version | header | optional | — |
application/json
search_request
| Property | Type | Required |
|---|---|---|
| query | object | required |
| pagination | object | optional |
| └ page | integer | optional |
| └ starting_after | string | optional |
successful
POST /conversations/search
/conversations/{conversation_id}/customers/{contact_id}
You can add participants who are contacts to a conversation, on behalf of either another contact or an admin.
{% admonition type=”attention” name=”Contacts without an email” %}
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.
{% /admonition %}
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| Intercom-Version | header | optional | — | |
| conversation_id | path | required | string | The identifier for the conversation as given by Intercom. |
| contact_id | path | required | string | The identifier for the contact as given by Intercom. |
application/json
detach_contact_from_conversation_request
Detach a contact from a group conversation
Unauthorized
API plan restricted
Contact not found
Last customer
DELETE /conversations/{conversation_id}/customers/{contact_id}
/conversations/{id}
You can fetch the details of a single conversation.
This will return a single Conversation model with all its conversation parts.
{% admonition type=”warning” name=”Hard limit of 500 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.
{% /admonition %}
For conversation parts generated by a bot, bot name will depend on the following:
operator as the bot namefin as the bot name| Name | In | Required | Type | Description |
|---|---|---|---|---|
| Intercom-Version | header | optional | — | |
| id | path | required | integer | The id of the conversation to target |
| display_as | query | optional | string | Set to plaintext to retrieve conversation messages in plain text. |
conversation found
Unauthorized
API plan restricted
Not found
GET /conversations/{id}
/conversations/{id}
You can update an existing conversation.
{% admonition type=”info” name=”Replying and other actions” %}
If you want to reply to a coveration or take an action such as assign, unassign, open, close or snooze, take a look at the reply and manage endpoints.
{% /admonition %}
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| Intercom-Version | header | optional | — | |
| id | path | required | integer | The id of the conversation to target |
| display_as | query | optional | string | Set to plaintext to retrieve conversation messages in plain text. |
application/json
update_conversation_request
| Property | Type | Required |
|---|---|---|
| read | boolean | optional |
| custom_attributes | object | optional |
conversation found
Unauthorized
API plan restricted
Not found
PUT /conversations/{id}
/conversations/{id}/customers
You can add participants who are contacts to a conversation, on behalf of either another contact or an admin.
{% admonition type=”attention” name=”Contacts without an email” %}
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.
{% /admonition %}
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| Intercom-Version | header | optional | — | |
| id | path | required | string | The identifier for the conversation as given by Intercom. |
application/json
attach_contact_to_conversation_request
| Property | Type | Required |
|---|---|---|
| admin_id | string | optional |
| customer | object | optional |
Attach a contact to a conversation
Unauthorized
API plan restricted
Not found
POST /conversations/{id}/customers
/conversations/{id}/parts
For managing conversations you can:
snoozed or closed| Name | In | Required | Type | Description |
|---|---|---|---|---|
| Intercom-Version | header | optional | — | |
| id | path | required | string | The identifier for the conversation as given by Intercom. |
application/json
ConversationsManageConversationRequest
Assign a conversation
Unauthorized
API plan restricted
Not found
POST /conversations/{id}/parts
/conversations/{id}/reply
You can reply to a conversation with a message from an admin or on behalf of a contact, or with a note for admins.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| Intercom-Version | header | optional | — | |
| id | path | required | string | The Intercom provisioned identifier for the conversation or the string “last” to reply to the last part of the conversation |
application/json
reply_conversation_request
User last conversation reply
Unauthorized
API plan restricted
Not found
POST /conversations/{id}/reply
/conversations/{id}/run_assignment_rules
You can let a conversation be automatically assigned following assignment rules.
{% admonition type=”attention” name=”When using workflows” %}
It is not possible to use this endpoint with Workflows.
{% /admonition %}
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| Intercom-Version | header | optional | — | |
| id | path | required | string | The identifier for the conversation as given by Intercom. |
Assign a conversation using assignment rules
Unauthorized
API plan restricted
Not found
POST /conversations/{id}/run_assignment_rules
/data_attributes
You can fetch a list of all data attributes belonging to a workspace for contacts, companies or conversations.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| Intercom-Version | header | optional | — | |
| model | query | optional | string | Specify the data attribute model to return. |
| include_archived | query | optional | boolean | Include archived attributes in the list. By default we return only non archived data attributes. |
Successful response
Unauthorized
GET /data_attributes
/data_attributes
You can create a data attributes for a contact or a company.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| Intercom-Version | header | optional | — |
application/json
create_data_attribute_request
| Property | Type | Required |
|---|---|---|
| name | string | required |
| model | string | required |
| options | array | optional |
| data_type | string | required |
| description | string | optional |
| messenger_writable | boolean | optional |
Successful
Too few options for list
Unauthorized
POST /data_attributes
/data_attributes/{id}
You can update a data attribute.
🚧 Updating the data type is not possible
It is currently a dangerous action to execute changing a data attribute’s type via the API. You will need to update the type via the UI instead.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| Intercom-Version | header | optional | — | |
| id | path | required | integer | The data attribute id |
application/json
update_data_attribute_request
| Property | Type | Required |
|---|---|---|
| options | array | optional |
| archived | boolean | optional |
| description | string | optional |
| messenger_writable | boolean | optional |
Successful
Too few options in list
Unauthorized
Attribute Not Found
Has Dependant Object
PUT /data_attributes/{id}
/events
🚧
Please note that you can only ‘list’ events that are less than 90 days old. Event counts and summaries will still include your events older than 90 days but you cannot ‘list’ these events individually if they are older than 90 days
The events belonging to a customer can be listed by sending a GET request to https://api.intercom.io/events with a user or lead identifier along with a type parameter. The identifier parameter can be one of user_id, email or intercom_user_id. The type parameter value must be user.
https://api.intercom.io/events?type=user&user_id={user_id}https://api.intercom.io/events?type=user&email={email}https://api.intercom.io/events?type=user&intercom_user_id={id} (this call can be used to list leads)The email parameter value should be url encoded when sending.
You can optionally define the result page size as well with the per_page parameter.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| Intercom-Version | header | optional | — | |
| filter | query | required | object | — |
| type | query | required | string | The value must be user |
| summary | query | optional | boolean | summary flag |
Successful response
Unauthorized
GET /events
/events
You will need an Access Token that has write permissions to send Events. Once you have a key you can submit events via POST to the Events resource, which is located at https://api.intercom.io/events, or you can send events using one of the client libraries. When working with the HTTP API directly a client should send the event with a Content-Type of application/json.
When using the JavaScript API, adding the code to your app makes the Events API available. Once added, you can submit an event using the trackEvent method. This will associate the event with the Lead or currently logged-in user or logged-out visitor/lead and send it to Intercom. The final parameter is a map that can be used to send optional metadata about the event.
With the Ruby client you pass a hash describing the event to Intercom::Event.create, or call the track_user method directly on the current user object (e.g. user.track_event).
NB: For the JSON object types, please note that we do not currently support nested JSON structure.
| Type | Description | Example |
|---|---|---|
| String | The value is a JSON String | "source":"desktop" |
| Number | The value is a JSON Number | "load": 3.67 |
| Date | The key ends with the String _date and the value is a Unix timestamp, assumed to be in the UTC timezone. |
"contact_date": 1392036272 |
| Link | The value is a HTTP or HTTPS URI. | "article": "https://example.org/ab1de.html" |
| Rich Link | The value is a JSON object that contains url and value keys. |
"article": {"url": "https://example.org/ab1de.html", "value":"the dude abides"} |
| Monetary Amount | The value is a JSON object that contains amount and currency keys. The amount key is a positive integer representing the amount in cents. The price in the example to the right denotes €349.99. |
"price": {"amount": 34999, "currency": "eur"} |
Lead Events
When submitting events for Leads, you will need to specify the Lead’s id.
Metadata behaviour
Event de-duplication
The API may detect and ignore duplicate events. Each event is uniquely identified as a combination of the following data - the Workspace identifier, the Contact external identifier, the Data Event name and the Data Event created time. As a result, it is strongly recommended to send a second granularity Unix timestamp in the created_at field.
Duplicated events are responded to using the normal 202 Accepted code - an error is not thrown, however repeat requests will be counted against any rate limit that is in place.
202 Accepted with an empty body.401 Unauthorized or 403 Forbidden response code.404 Not Found.500 response code and may contain an error message in the body.| Name | In | Required | Type | Description |
|---|---|---|---|---|
| Intercom-Version | header | optional | — |
application/json
create_data_event_request
| Property | Type | Required |
|---|---|---|
| id | string | optional |
| string | optional | |
| user_id | string | optional |
| metadata | object | optional |
| created_at | integer | optional |
| event_name | string | optional |
successful
Unauthorized
POST /events
AdminsSetAdminAwayRequest
{
"type": "object",
"required": [
"away_mode_enabled",
"away_mode_reassign"
],
"properties": {
"away_mode_enabled": {
"type": "boolean",
"default": true,
"example": true,
"description": "Set to \"true\" to change the status of the admin to away."
},
"away_mode_reassign": {
"type": "boolean",
"default": false,
"example": false,
"description": "Set to \"true\" to assign any new conversation replies to your default inbox."
}
}
}
CompaniesAttachContactToRequest
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"example": "58a430d35458202d41b1e65b",
"description": "The unique identifier for the company which is given by Intercom"
}
}
}
ContactsCreateNewContactRequest
{
"oneOf": [
{
"$ref": "#/components/schemas/create_contact_request"
}
]
}
ContactsUpdateContactRequest
{
"oneOf": [
{
"$ref": "#/components/schemas/update_contact_request"
}
]
}
ConversationsManageConversationRequest
{
"oneOf": [
{
"$ref": "#/components/schemas/close_conversation_request"
},
{
"$ref": "#/components/schemas/snooze_conversation_request"
},
{
"$ref": "#/components/schemas/open_conversation_request"
},
{
"$ref": "#/components/schemas/assign_conversation_request"
}
]
}
NotesAddNoteToContactRequest
{
"type": "object",
"required": [
"body"
],
"properties": {
"body": {
"type": "string",
"example": "New note",
"description": "The text of the note."
},
"admin_id": {
"type": "string",
"example": "123",
"description": "The unique identifier of a given admin."
},
"contact_id": {
"type": "string",
"example": "123",
"description": "The unique identifier of a given contact."
}
}
}
SubscriptionTypesAddSubscriptionToContactRequest
{
"type": "object",
"required": [
"id",
"consent_type"
],
"properties": {
"id": {
"type": "string",
"example": "37846",
"description": "The unique identifier for the subscription which is given by Intercom"
},
"consent_type": {
"type": "string",
"example": "opt_in",
"description": "The consent_type of a subscription, opt_out or opt_in."
}
}
}
SwitchDeflectPhoneCalls422Response
{
"type": "object",
"example": {
"error_key": "some_error"
},
"properties": {
"error_key": {
"type": "string",
"example": "some_error"
}
}
}
SwitchDeflectPhoneCallsResponse
{
"type": "object",
"example": {
"message": "SMS was not sent due to an unknown error",
"error_key": "sms_failed"
},
"properties": {
"message": {
"type": "string",
"example": "SMS was not sent due to an unknown error"
},
"error_key": {
"type": "string",
"example": "sms_failed"
}
}
}
TagsAddTagToContactRequest
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"example": "7522907",
"description": "The unique identifier for the tag which is given by Intercom"
}
}
}
TagsAddTagToConversationRequest
{
"type": "object",
"required": [
"id",
"admin_id"
],
"properties": {
"id": {
"type": "string",
"example": "7522907",
"description": "The unique identifier for the tag which is given by Intercom"
},
"admin_id": {
"type": "string",
"example": "780",
"description": "The unique identifier for the admin which is given by Intercom."
}
}
}
TagsCreateOrUpdateTagRequest
{
"oneOf": [
{
"$ref": "#/components/schemas/create_or_update_tag_request"
},
{
"$ref": "#/components/schemas/tag_company_request"
},
{
"$ref": "#/components/schemas/untag_company_request"
},
{
"$ref": "#/components/schemas/tag_multiple_users_request"
}
]
}
TagsRemoveFromConversationRequest
{
"type": "object",
"required": [
"admin_id"
],
"properties": {
"admin_id": {
"type": "string",
"example": "123",
"description": "The unique identifier for the admin which is given by Intercom."
}
}
}
TicketsUpdateTicketByIdResponse
{
"type": "object",
"example": {
"type": "error.list",
"errors": [
{
"code": "assignee_not_found",
"message": "Assignee not found"
}
],
"request_id": "752fe552-f009-4e9e-b08a-0cbf6ff78c9b"
},
"properties": {
"type": {
"type": "string",
"example": "error.list"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"properties": {
"code": {
"type": "string",
"example": "assignee_not_found"
},
"message": {
"type": "string",
"example": "Assignee not found"
}
}
}
},
"request_id": {
"type": "string",
"example": "752fe552-f009-4e9e-b08a-0cbf6ff78c9b"
}
}
}
activity_log
{
"type": "object",
"title": "Activity Log",
"nullable": true,
"properties": {
"id": {
"type": "string",
"example": "6",
"description": "The id representing the activity."
},
"metadata": {
"type": "object"
},
"created_at": {
"type": "integer",
"format": "date-time",
"example": 1671028894,
"description": "The time the activity was created."
},
"performed_by": {
"type": "object",
"properties": {
"id": {
"type": "string",
"example": "1295",
"description": "The id representing the admin."
},
"ip": {
"type": "string",
"example": "198.51.100.255",
"description": "The IP address of the admin."
},
"type": {
"type": "string",
"example": "admin",
"description": "String representing the object's type. Always has the value `admin`."
},
"email": {
"type": "string",
"example": "john@example.com",
"description": "The email of the admin."
}
},
"description": "An object representing the admin who performed the activity."
},
"activity_type": {
"enum": [
"admin_assignment_limit_change",
"admin_away_mode_change",
"admin_deletion",
"admin_deprovisioned",
"admin_impersonation_end",
"admin_impersonation_start",
"admin_invite_change",
"admin_invite_creation",
"admin_invite_deletion",
"admin_login_failure",
"admin_login_success",
"admin_logout",
"admin_password_reset_request",
"admin_password_reset_success",
"admin_permission_change",
"admin_provisioned",
"admin_two_factor_auth_change",
"admin_unauthorized_sign_in_method",
"app_admin_join",
"app_authentication_method_change",
"app_data_deletion",
"app_data_export",
"app_google_sso_domain_change",
"app_identity_verification_change",
"app_name_change",
"app_outbound_address_change",
"app_package_installation",
"app_package_token_regeneration",
"app_package_uninstallation",
"app_team_creation",
"app_team_deletion",
"app_team_membership_modification",
"app_timezone_change",
"app_webhook_creation",
"app_webhook_deletion",
"articles_in_messenger_enabled_change",
"bulk_delete",
"bulk_export",
"campaign_deletion",
"campaign_state_change",
"conversation_part_deletion",
"conversation_topic_change",
"conversation_topic_creation",
"conversation_topic_deletion",
"help_center_settings_change",
"inbound_conversations_change",
"inbox_access_change",
"message_deletion",
"message_state_change",
"messenger_look_and_feel_change",
"messenger_search_required_change",
"messenger_spaces_change",
"office_hours_change",
"role_change",
"role_creation",
"role_deletion",
"ruleset_activation_title_preview",
"ruleset_creation",
"ruleset_deletion",
"search_browse_enabled_change",
"search_browse_required_change",
"seat_change",
"seat_revoke",
"security_settings_change",
"temporary_expectation_change",
"upfront_email_collection_change",
"welcome_message_change"
],
"type": "string",
"example": "app_name_change"
},
"activity_description": {
"type": "string",
"example": "Admin updated the app's name to \"My App\".",
"description": "A sentence or two describing the activity."
}
},
"description": "Activities performed by admins."
}
activity_log_list
{
"type": "object",
"title": "Paginated Response",
"properties": {
"type": {
"type": "string",
"example": "activity_log.list",
"description": "String representing the object's type. Always has the value `activity_log.list`."
},
"pages": {
"$ref": "#/components/schemas/cursor_pages"
},
"activity_logs": {
"type": "array",
"items": {
"$ref": "#/components/schemas/activity_log"
},
"description": "An array of activity logs"
}
},
"description": "A paginated list of activity logs."
}
addressable_list
{
"type": "object",
"title": "Addressable List",
"nullable": false,
"properties": {
"id": {
"type": "string",
"example": "123",
"description": "The id of the addressable object"
},
"url": {
"type": "string",
"format": "uri",
"example": "/contacts/5ba682d23d7cf92bef87bfd4/notes",
"description": "Url to get more company resources for this contact"
},
"type": {
"type": "string",
"format": "uri",
"example": "note",
"description": "The addressable object type"
}
},
"description": "A list used to access other resources from a parent model."
}
admin
{
"type": "object",
"title": "Admin",
"x-tags": [
"Admins"
],
"nullable": true,
"properties": {
"id": {
"type": "string",
"example": "1295",
"description": "The id representing the admin."
},
"name": {
"type": "string",
"example": "Hoban Washburne",
"description": "The name of the admin."
},
"type": {
"type": "string",
"example": "admin",
"description": "String representing the object's type. Always has the value `admin`."
},
"email": {
"type": "string",
"example": "wash@serenity.io",
"description": "The email of the admin."
},
"avatar": {
"type": "string",
"format": "uri",
"example": "https://picsum.photos/200/300",
"nullable": true,
"description": "Image for the associated team or teammate"
},
"team_ids": {
"type": "array",
"items": {
"type": "integer"
},
"example": [
814865
],
"description": "This object represents the avatar associated with the admin."
},
"job_title": {
"type": "string",
"example": "Philosopher",
"description": "The job title of the admin."
},
"has_inbox_seat": {
"type": "boolean",
"example": true,
"description": "Identifies if this admin has a paid inbox seat to restrict/allow features that require them."
},
"away_mode_enabled": {
"type": "boolean",
"example": false,
"description": "Identifies if this admin is currently set in away mode."
},
"away_mode_reassign": {
"type": "boolean",
"example": false,
"description": "Identifies if this admin is set to automatically reassign new conversations to the apps default inbox."
},
"team_priority_level": {
"$ref": "#/components/schemas/team_priority_level"
}
},
"description": "Admins are teammate accounts that have access to a workspace."
}
admin_list
{
"type": "object",
"title": "Admins",
"properties": {
"type": {
"type": "string",
"example": "admin.list",
"description": "String representing the object's type. Always has the value `admin.list`."
},
"admins": {
"type": "array",
"items": {
"$ref": "#/components/schemas/admin"
},
"description": "A list of admins associated with a given workspace."
}
},
"description": "A list of admins associated with a given workspace."
}
admin_priority_level
{
"type": "object",
"title": "Admin Priority Level",
"nullable": true,
"properties": {
"primary_admin_ids": {
"type": "array",
"items": {
"type": "integer"
},
"example": [
493881
],
"nullable": true,
"description": "The primary admin ids for the team"
},
"secondary_admin_ids": {
"type": "array",
"items": {
"type": "integer"
},
"example": [
814865
],
"nullable": true,
"description": "The secondary admin ids for the team"
}
},
"description": "Admin priority levels for the team"
}
admin_reply_conversation_request
{
"type": "object",
"title": "Admin Reply",
"required": [
"message_type",
"type",
"admin_id"
],
"properties": {
"body": {
"type": "string",
"example": "Hello there!",
"description": "The text body of the reply. Notes accept some HTML formatting. Must be present for comment and note message types."
},
"type": {
"enum": [
"admin"
],
"type": "string",
"example": "admin"
},
"admin_id": {
"type": "string",
"example": "3156780",
"description": "The id of the admin who is authoring the comment."
},
"created_at": {
"type": "integer",
"example": 1590000000,
"description": "The time the reply was created. If not provided, the current time will be used."
},
"message_type": {
"enum": [
"comment",
"note"
],
"type": "string"
},
"attachment_urls": {
"type": "array",
"items": {
"type": "string",
"format": "uri"
},
"maxItems": 10,
"description": "A list of image URLs that will be added as attachments. You can include up to 10 URLs."
},
"attachment_files": {
"type": "array",
"items": {
"$ref": "#/components/schemas/conversation_attachment_files"
},
"maxItems": 10,
"description": "A list of files that will be added as attachments. You can include up to 10 files"
}
},
"description": "Payload of the request to reply on behalf of an admin"
}
admin_with_app
{
"type": "object",
"title": "Admin",
"nullable": true,
"properties": {
"id": {
"type": "string",
"example": "1295",
"description": "The id representing the admin."
},
"app": {
"$ref": "#/components/schemas/app",
"nullable": true,
"description": "App that the admin belongs to."
},
"name": {
"type": "string",
"example": "Hoban Washburne",
"description": "The name of the admin."
},
"type": {
"type": "string",
"example": "admin",
"description": "String representing the object's type. Always has the value `admin`."
},
"email": {
"type": "string",
"example": "wash@serenity.io",
"description": "The email of the admin."
},
"avatar": {
"type": "object",
"properties": {
"type": {
"type": "string",
"default": "avatar",
"example": "avatar",
"description": "This is a string that identifies the type of the object. It will always have the value `avatar`."
},
"image_url": {
"type": "string",
"format": "uri",
"example": "https://example.com/avatar.png",
"nullable": true,
"description": "This object represents the avatar associated with the admin."
}
},
"description": "This object represents the avatar associated with the admin."
},
"team_ids": {
"type": "array",
"items": {
"type": "integer"
},
"example": [
814865
],
"description": "This is a list of ids of the teams that this admin is part of."
},
"job_title": {
"type": "string",
"example": "Philosopher",
"description": "The job title of the admin."
},
"email_verified": {
"type": "boolean",
"example": true,
"nullable": true,
"description": "Identifies if this admin's email is verified."
},
"has_inbox_seat": {
"type": "boolean",
"example": true,
"description": "Identifies if this admin has a paid inbox seat to restrict/allow features that require them."
},
"away_mode_enabled": {
"type": "boolean",
"example": false,
"description": "Identifies if this admin is currently set in away mode."
},
"away_mode_reassign": {
"type": "boolean",
"example": false,
"description": "Identifies if this admin is set to automatically reassign new conversations to the apps default inbox."
}
},
"description": "Admins are the teammate accounts that have access to a workspace"
}
app
{
"type": "object",
"title": "App",
"nullable": true,
"properties": {
"name": {
"type": "string",
"example": "ACME",
"description": "The name of the app."
},
"type": {
"type": "string",
"default": "app",
"example": "app",
"description": ""
},
"region": {
"type": "string",
"example": "US",
"description": "The Intercom region the app is located in."
},
"id_code": {
"type": "string",
"example": "xyz789",
"description": "The id of the app."
},
"timezone": {
"type": "string",
"example": "America/Los_Angeles",
"description": "The timezone of the region where the app is located."
},
"created_at": {
"type": "integer",
"example": 1671465577,
"description": "When the app was created."
},
"identity_verification": {
"type": "boolean",
"example": false,
"description": "Whether or not the app uses identity verification."
}
},
"description": "App is a workspace on Intercom"
}
article_content
{
"type": "object",
"title": "Article Content",
"nullable": true,
"properties": {
"url": {
"type": "string",
"example": "http://intercom.test/help/en/articles/3-default-language",
"description": "The URL of the article."
},
"body": {
"type": "string",
"example": "This is the body of the article.",
"description": "The body of the article."
},
"type": {
"enum": [
null,
"article_content"
],
"type": "string",
"example": "article_content",
"nullable": true,
"description": "The type of object - `article_content` ."
},
"state": {
"enum": [
"published",
"draft"
],
"type": "string",
"example": "draft",
"description": "Whether the article is `published` or is a `draft` ."
},
"title": {
"type": "string",
"example": "How to create a new article",
"description": "The title of the article."
},
"author_id": {
"type": "integer",
"example": 5017691,
"description": "The ID of the author of the article."
},
"created_at": {
"type": "integer",
"format": "date-time",
"example": 1663597223,
"description": "The time when the article was created (seconds)."
},
"updated_at": {
"type": "integer",
"format": "date-time",
"example": 1663597260,
"description": "The time when the article was last updated (seconds)."
},
"description": {
"type": "string",
"example": "This article will show you how to create a new article.",
"description": "The description of the article."
}
},
"description": "The Content of an Article."
}
article_list
{
"type": "object",
"title": "Articles",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/article_list_item"
},
"description": "An array of Article objects"
},
"type": {
"enum": [
"list"
],
"type": "string",
"example": "list",
"description": "The type of the object - `list`."
},
"pages": {
"$ref": "#/components/schemas/cursor_pages"
},
"total_count": {
"type": "integer",
"example": 1,
"description": "A count of the total number of articles."
}
},
"description": "This will return a list of articles for the App."
}
article_list_item
{
"type": "object",
"title": "Articles",
"x-tags": [
"Articles"
],
"properties": {
"id": {
"type": "string",
"example": "6871119",
"description": "The unique identifier for the article which is given by Intercom."
},
"url": {
"type": "string",
"example": "http://intercom.test/help/en/articles/3-default-language",
"nullable": true,
"description": "The URL of the article. For multilingual articles, this will be the URL of the default language's content."
},
"body": {
"type": "string",
"example": "Default language body in html",
"nullable": true,
"description": "The body of the article in HTML. For multilingual articles, this will be the body of the default language's content."
},
"type": {
"enum": [
"article"
],
"type": "string",
"default": "article",
"example": "article",
"description": "The type of object - `article`."
},
"state": {
"enum": [
"published",
"draft"
],
"type": "string",
"default": "draft",
"example": "published",
"description": "Whether the article is `published` or is a `draft`. For multilingual articles, this will be the state of the default language's content."
},
"title": {
"type": "string",
"example": "Default language title",
"description": "The title of the article. For multilingual articles, this will be the title of the default language's content."
},
"author_id": {
"type": "integer",
"example": 5017691,
"description": "The id of the author of the article. For multilingual articles, this will be the id of the author of the default language's content. Must be a teammate on the help center's workspace."
},
"parent_id": {
"type": "integer",
"example": 125685,
"nullable": true,
"description": "The id of the article's parent collection or section. An article without this field stands alone."
},
"created_at": {
"type": "integer",
"format": "date-time",
"example": 1672928359,
"description": "The time when the article was created. For multilingual articles, this will be the timestamp of creation of the default language's content in seconds."
},
"parent_ids": {
"type": "array",
"items": {
"type": "integer"
},
"example": [
18,
19
],
"description": "The ids of the article's parent collections or sections. An article without this field stands alone."
},
"updated_at": {
"type": "integer",
"format": "date-time",
"example": 1672928610,
"description": "The time when the article was last updated. For multilingual articles, this will be the timestamp of last update of the default language's content in seconds."
},
"description": {
"type": "string",
"example": "Default language description",
"nullable": true,
"description": "The description of the article. For multilingual articles, this will be the description of the default language's content."
},
"parent_type": {
"type": "string",
"example": "collection",
"nullable": true,
"description": "The type of parent, which can either be a `collection` or `section`."
},
"workspace_id": {
"type": "string",
"example": "hfi1bx4l",
"description": "The id of the workspace which the article belongs to."
},
"default_locale": {
"type": "string",
"example": "en",
"description": "The default locale of the help center. This field is only returned for multilingual help centers."
},
"translated_content": {
"$ref": "#/components/schemas/article_translated_content",
"nullable": true
}
},
"description": "The data returned about your articles when you list them."
}
article_statistics
{
"type": "object",
"title": "Article Statistics",
"nullable": true,
"properties": {
"type": {
"enum": [
"article_statistics"
],
"type": "string",
"default": "article_statistics",
"example": "article_statistics",
"description": "The type of object - `article_statistics`."
},
"views": {
"type": "integer",
"example": 10,
"description": "The number of total views the article has received."
},
"reactions": {
"type": "integer",
"example": 10,
"description": "The number of total reactions the article has received."
},
"conversions": {
"type": "integer",
"example": 0,
"description": "The number of conversations started from the article."
},
"sad_reaction_percentage": {
"type": "number",
"format": "float",
"example": 20,
"description": "The percentage of sad reactions the article has received against other types of reaction."
},
"happy_reaction_percentage": {
"type": "number",
"format": "float",
"example": 40,
"description": "The percentage of happy reactions the article has received against other types of reaction."
},
"neutral_reaction_percentage": {
"type": "number",
"format": "float",
"example": 40,
"description": "The percentage of neutral reactions the article has received against other types of reaction."
}
},
"description": "The statistics of an article."
}
article_translated_content
{
"type": "object",
"title": "Article Translated Content",
"nullable": true,
"properties": {
"ar": {
"$ref": "#/components/schemas/article_content",
"description": "The content of the article in Arabic"
},
"bg": {
"$ref": "#/components/schemas/article_content",
"description": "The content of the article in Bulgarian"
},
"bs": {
"$ref": "#/components/schemas/article_content",
"description": "The content of the article in Bosnian"
},
"ca": {
"$ref": "#/components/schemas/article_content",
"description": "The content of the article in Catalan"
},
"cs": {
"$ref": "#/components/schemas/article_content",
"description": "The content of the article in Czech"
},
"da": {
"$ref": "#/components/schemas/article_content",
"description": "The content of the article in Danish"
},
"de": {
"$ref": "#/components/schemas/article_content",
"description": "The content of the article in German"
},
"el": {
"$ref": "#/components/schemas/article_content",
"description": "The content of the article in Greek"
},
"en": {
"$ref": "#/components/schemas/article_content",
"description": "The content of the article in English"
},
"es": {
"$ref": "#/components/schemas/article_content",
"description": "The content of the article in Spanish"
},
"et": {
"$ref": "#/components/schemas/article_content",
"description": "The content of the article in Estonian"
},
"fi": {
"$ref": "#/components/schemas/article_content",
"description": "The content of the article in Finnish"
},
"fr": {
"$ref": "#/components/schemas/article_content",
"description": "The content of the article in French"
},
"he": {
"$ref": "#/components/schemas/article_content",
"description": "The content of the article in Hebrew"
},
"hr": {
"$ref": "#/components/schemas/article_content",
"description": "The content of the article in Croatian"
},
"hu": {
"$ref": "#/components/schemas/article_content",
"description": "The content of the article in Hungarian"
},
"id": {
"$ref": "#/components/schemas/article_content",
"description": "The content of the article in Indonesian"
},
"it": {
"$ref": "#/components/schemas/article_content",
"description": "The content of the article in Italian"
},
"ja": {
"$ref": "#/components/schemas/article_content",
"description": "The content of the article in Japanese"
},
"ko": {
"$ref": "#/components/schemas/article_content",
"description": "The content of the article in Korean"
},
"lt": {
"$ref": "#/components/schemas/article_content",
"description": "The content of the article in Lithuanian"
},
"lv": {
"$ref": "#/components/schemas/article_content",
"description": "The content of the article in Latvian"
},
"mn": {
"$ref": "#/components/schemas/article_content",
"description": "The content of the article in Mongolian"
},
"nb": {
"$ref": "#/components/schemas/article_content",
"description": "The content of the article in Norwegian"
},
"nl": {
"$ref": "#/components/schemas/article_content",
"description": "The content of the article in Dutch"
},
"pl": {
"$ref": "#/components/schemas/article_content",
"description": "The content of the article in Polish"
},
"pt": {
"$ref": "#/components/schemas/article_content",
"description": "The content of the article in Portuguese (Portugal)"
},
"ro": {
"$ref": "#/components/schemas/article_content",
"description": "The content of the article in Romanian"
},
"ru": {
"$ref": "#/components/schemas/article_content",
"description": "The content of the article in Russian"
},
"sl": {
"$ref": "#/components/schemas/article_content",
"description": "The content of the article in Slovenian"
},
"sr": {
"$ref": "#/components/schemas/article_content",
"description": "The content of the article in Serbian"
},
"sv": {
"$ref": "#/components/schemas/article_content",
"description": "The content of the article in Swedish"
},
"tr": {
"$ref": "#/components/schemas/article_content",
"description": "The content of the article in Turkish"
},
"vi": {
"$ref": "#/components/schemas/article_content",
"description": "The content of the article in Vietnamese"
},
"type": {
"enum": [
null,
"article_translated_content"
],
"type": "string",
"example": "article_translated_content",
"nullable": true,
"description": "The type of object - article_translated_content."
},
"pt-BR": {
"$ref": "#/components/schemas/article_content",
"description": "The content of the article in Portuguese (Brazil)"
},
"zh-CN": {
"$ref": "#/components/schemas/article_content",
"description": "The content of the article in Chinese (China)"
},
"zh-TW": {
"$ref": "#/components/schemas/article_content",
"description": "The content of the article in Chinese (Taiwan)"
}
},
"description": "The Translated Content of an Article. The keys are the locale codes and the values are the translated content of the article."
}
assign_conversation_request
{
"type": "object",
"title": "Assign Conversation Request",
"required": [
"message_type",
"type",
"admin_id",
"assignee_id"
],
"properties": {
"body": {
"type": "string",
"example": "Let me pass you over to one of my colleagues.",
"description": "Optionally you can send a response in the conversation when it is assigned."
},
"type": {
"enum": [
"admin",
"team"
],
"type": "string",
"example": "admin"
},
"admin_id": {
"type": "string",
"example": "12345",
"description": "The id of the admin who is performing the action."
},
"assignee_id": {
"type": "string",
"example": "4324241",
"description": "The `id` of the `admin` or `team` which will be assigned the conversation. A conversation can be assigned both an admin and a team.\\nSet `0` if you want this assign to no admin or team (ie. Unassigned)."
},
"message_type": {
"enum": [
"assignment"
],
"type": "string",
"example": "assignment"
}
},
"description": "Payload of the request to assign a conversation"
}
attach_contact_to_conversation_request
{
"type": "object",
"title": "Assign Conversation Request",
"properties": {
"admin_id": {
"type": "string",
"example": "12345",
"description": "The `id` of the admin who is adding the new participant."
},
"customer": {
"type": "object",
"oneOf": [
{
"title": "Intercom User ID",
"required": [
"intercom_user_id"
],
"properties": {
"customer": {
"$ref": "#/components/schemas/customer_request"
},
"intercom_user_id": {
"type": "string",
"example": "6329bd9ffe4e2e91dac76188",
"description": "The identifier for the contact as given by Intercom."
}
}
},
{
"title": "User ID",
"required": [
"user_id"
],
"properties": {
"user_id": {
"type": "string",
"example": "6329bd9ffe4e2e91dac76188",
"description": "The external_id you have defined for the contact who is being added as a participant."
},
"customer": {
"$ref": "#/components/schemas/customer_request"
}
}
},
{
"title": "Email",
"required": [
"email"
],
"properties": {
"email": {
"type": "string",
"example": "winstonsmith@truth.org",
"description": "The email you have defined for the contact who is being added as a participant."
},
"customer": {
"$ref": "#/components/schemas/customer_request"
}
}
}
]
}
},
"description": "Payload of the request to assign a conversation"
}
close_conversation_request
{
"type": "object",
"title": "Close Conversation Request",
"required": [
"message_type",
"type",
"admin_id"
],
"properties": {
"body": {
"type": "string",
"example": " This conversation is now closed!",
"description": "Optionally you can leave a message in the conversation to provide additional context to the user and other teammates."
},
"type": {
"enum": [
"admin"
],
"type": "string",
"example": "admin"
},
"admin_id": {
"type": "string",
"example": "12345",
"description": "The id of the admin who is performing the action."
},
"message_type": {
"enum": [
"close"
],
"type": "string",
"example": "close"
}
},
"description": "Payload of the request to close a conversation"
}
collection
{
"type": "object",
"title": "Collection",
"x-tags": [
"Help Center"
],
"properties": {
"id": {
"type": "string",
"example": "6871119",
"description": "The unique identifier for the collection which is given by Intercom."
},
"url": {
"type": "string",
"example": "http://intercom.test/help/collection/name",
"nullable": true,
"description": "The URL of the collection. For multilingual help centers, this will be the URL of the collection for the default language."
},
"icon": {
"type": "string",
"example": "book-bookmark",
"nullable": true,
"description": "The icon of the collection."
},
"name": {
"type": "string",
"example": "Default language name",
"description": "The name of the collection. For multilingual collections, this will be the name of the default language's content."
},
"type": {
"enum": [
"collection"
],
"type": "string",
"default": "collection",
"example": "collection",
"description": "The type of object - `collection`."
},
"order": {
"type": "integer",
"example": 1,
"description": "The order of the section in relation to others sections within a collection. Values go from `0` upwards. `0` is the default if there's no order."
},
"created_at": {
"type": "integer",
"format": "date-time",
"example": 1672928359,
"description": "The time when the article was created (seconds). For multilingual articles, this will be the timestamp of creation of the default language's content."
},
"updated_at": {
"type": "integer",
"format": "date-time",
"example": 1672928610,
"description": "The time when the article was last updated (seconds). For multilingual articles, this will be the timestamp of last update of the default language's content."
},
"description": {
"type": "string",
"example": "Default language description",
"nullable": true,
"description": "The description of the collection. For multilingual help centers, this will be the description of the collection for the default language."
},
"workspace_id": {
"type": "string",
"example": "hfi1bx4l",
"description": "The id of the workspace which the collection belongs to."
},
"default_locale": {
"type": "string",
"example": "en",
"description": "The default locale of the help center. This field is only returned for multilingual help centers."
},
"help_center_id": {
"type": "integer",
"example": 123,
"nullable": true,
"description": "The id of the help center the collection is in."
},
"translated_content": {
"$ref": "#/components/schemas/group_translated_content",
"nullable": true
}
},
"description": "Collections are top level containers for Articles within the Help Center."
}
collection_list
{
"type": "object",
"title": "Collections",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/collection"
},
"description": "An array of collection objects"
},
"type": {
"enum": [
"list"
],
"type": "string",
"example": "list",
"description": "The type of the object - `list`."
},
"pages": {
"$ref": "#/components/schemas/cursor_pages"
},
"total_count": {
"type": "integer",
"example": 1,
"description": "A count of the total number of collections."
}
},
"description": "This will return a list of Collections for the App."
}
company
{
"type": "object",
"title": "Company",
"x-tags": [
"Companies"
],
"properties": {
"id": {
"type": "string",
"example": "531ee472cce572a6ec000006",
"description": "The Intercom defined id representing the company."
},
"name": {
"type": "string",
"example": "Blue Sun",
"description": "The name of the company."
},
"plan": {
"type": "object",
"properties": {
"id": {
"type": "string",
"example": "269315",
"description": "The id of the plan"
},
"name": {
"type": "string",
"example": "Pro",
"description": "The name of the plan"
},
"type": {
"type": "string",
"example": "plan",
"description": "Value is always \"plan\""
}
}
},
"size": {
"type": "integer",
"example": 100,
"description": "The number of employees in the company."
},
"tags": {
"type": "object",
"properties": {
"tags": {
"type": "array",
"items": {
"items": {
"$ref": "#/components/schemas/tag"
}
}
},
"type": {
"enum": [
"tag.list"
],
"type": "string",
"description": "The type of the object"
}
},
"description": "The list of tags associated with the company"
},
"type": {
"enum": [
"company"
],
"type": "string",
"example": "company",
"description": "Value is `company`"
},
"app_id": {
"type": "string",
"example": "ecahpwf5",
"description": "The Intercom defined code of the workspace the company is associated to."
},
"website": {
"type": "string",
"example": "https://www.intercom.com",
"description": "The URL for the company website."
},
"industry": {
"type": "string",
"example": "Software",
"description": "The industry that the company operates in."
},
"segments": {
"type": "object",
"properties": {
"type": {
"enum": [
"segment.list"
],
"type": "string",
"description": "The type of the object"
},
"segments": {
"type": "array",
"items": {
"$ref": "#/components/schemas/segment"
}
}
},
"description": "The list of segments associated with the company"
},
"company_id": {
"type": "string",
"example": "6",
"description": "The company id you have defined for the company."
},
"created_at": {
"type": "integer",
"example": 1663597223,
"description": "The time the company was added in Intercom."
},
"updated_at": {
"type": "integer",
"example": 1663597223,
"description": "The last time the company was updated."
},
"user_count": {
"type": "integer",
"example": 100,
"description": "The number of users in the company."
},
"monthly_spend": {
"type": "integer",
"example": 100,
"description": "How much revenue the company generates for your business."
},
"session_count": {
"type": "integer",
"example": 100,
"description": "How many sessions the company has recorded."
},
"last_request_at": {
"type": "integer",
"example": 1663597223,
"description": "The time the company last recorded making a request."
},
"custom_attributes": {
"type": "object",
"example": {
"team_mates": 9,
"monthly_spend": 155.5,
"paid_subscriber": true
},
"description": "The custom attributes you have set on the company.",
"additionalProperties": {
"type": "string"
}
},
"remote_created_at": {
"type": "integer",
"example": 1663597223,
"description": "The time the company was created by you."
}
},
"description": "Companies allow you to represent organizations using your product. Each company will have its own description and be associated with contacts. You can fetch, create, update and list companies."
}
company_attached_contacts
{
"type": "object",
"title": "Company Attached Contacts",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/contact"
},
"description": "An array containing Contact Objects"
},
"type": {
"enum": [
"list"
],
"type": "string",
"example": "list",
"description": "The type of object - `list`"
},
"pages": {
"$ref": "#/components/schemas/cursor_pages"
},
"total_count": {
"type": "integer",
"example": 100,
"description": "The total number of contacts"
}
},
"description": "A list of Contact Objects"
}
company_attached_segments
{
"type": "object",
"title": "Company Attached Segments",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/segment"
},
"description": "An array containing Segment Objects"
},
"type": {
"enum": [
"list"
],
"type": "string",
"example": "list",
"description": "The type of object - `list`"
}
},
"description": "A list of Segment Objects"
}
company_list
{
"type": "object",
"title": "Companies",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/company"
},
"description": "An array containing Company Objects."
},
"type": {
"enum": [
"list"
],
"type": "string",
"example": "list",
"description": "The type of object - `list`."
},
"pages": {
"$ref": "#/components/schemas/cursor_pages"
},
"total_count": {
"type": "integer",
"example": 100,
"description": "The total number of companies."
}
},
"description": "This will return a list of companies for the App."
}
company_scroll
{
"type": "object",
"title": "Company Scroll",
"nullable": true,
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/company"
}
},
"type": {
"enum": [
"list"
],
"type": "string",
"example": "list",
"description": "The type of object - `list`"
},
"pages": {
"$ref": "#/components/schemas/cursor_pages"
},
"total_count": {
"type": "integer",
"example": 100,
"nullable": true,
"description": "The total number of companies"
},
"scroll_param": {
"type": "string",
"example": "25b649f7-4d33-4ef6-88f5-60e5b8244309",
"description": "The scroll parameter to use in the next request to fetch the next page of results."
}
},
"description": "Companies allow you to represent organizations using your product. Each company will have its own description and be associated with contacts. You can fetch, create, update and list companies."
}
contact
{
"type": "object",
"title": "Contact",
"x-tags": [
"Contacts"
],
"properties": {
"id": {
"type": "string",
"example": "5ba682d23d7cf92bef87bfd4",
"description": "The unique identifier for the contact which is given by Intercom."
},
"os": {
"type": "string",
"example": "Mac OS X",
"nullable": true,
"description": "The operating system which the contact is using."
},
"name": {
"type": "string",
"example": "John Doe",
"nullable": true,
"description": "The contacts name."
},
"role": {
"type": "string",
"example": "user",
"description": "The role of the contact."
},
"tags": {
"$ref": "#/components/schemas/contact_tags"
},
"type": {
"type": "string",
"example": "contact",
"description": "The type of object."
},
"email": {
"type": "string",
"example": "joe@example.com",
"description": "The contact's email."
},
"notes": {
"$ref": "#/components/schemas/contact_notes"
},
"phone": {
"type": "string",
"example": "+1123456789",
"nullable": true,
"description": "The contacts phone."
},
"avatar": {
"type": "object",
"nullable": true,
"properties": {
"type": {
"type": "string",
"example": "avatar",
"description": "The type of object"
},
"image_url": {
"type": "string",
"format": "uri",
"example": "https://example.org/128Wash.jpg",
"nullable": true,
"description": "An image URL containing the avatar of a contact."
}
}
},
"browser": {
"type": "string",
"example": "Chrome",
"nullable": true,
"description": "The name of the browser which the contact is using."
},
"location": {
"$ref": "#/components/schemas/contact_location"
},
"owner_id": {
"type": "integer",
"example": 123,
"nullable": true,
"description": "The id of an admin that has been assigned account ownership of the contact."
},
"companies": {
"$ref": "#/components/schemas/contact_companies"
},
"created_at": {
"type": "integer",
"format": "date-time",
"example": 1571672154,
"description": "(UNIX timestamp) The time when the contact was created."
},
"ios_device": {
"type": "string",
"example": "iPhone 11",
"nullable": true,
"description": "The iOS device which the contact is using."
},
"updated_at": {
"type": "integer",
"format": "date-time",
"example": 1571672154,
"description": "(UNIX timestamp) The time when the contact was last updated."
},
"external_id": {
"type": "string",
"example": "f3b87a2e09d514c6c2e79b9a",
"nullable": true,
"description": "The unique identifier for the contact which is provided by the Client."
},
"email_domain": {
"type": "string",
"example": "example.com",
"description": "The contact's email domain."
},
"ios_app_name": {
"type": "string",
"example": "Intercom",
"nullable": true,
"description": "The name of the iOS app which the contact is using."
},
"last_seen_at": {
"type": "integer",
"format": "date-time",
"example": 1571672154,
"nullable": true,
"description": "(UNIX timestamp) The time when the contact was last seen (either where the Intercom Messenger was installed or when specified manually)."
},
"signed_up_at": {
"type": "integer",
"format": "date-time",
"example": 1571672154,
"nullable": true,
"description": "(UNIX timestamp) The time specified for when a contact signed up."
},
"workspace_id": {
"type": "string",
"example": "ecahpwf5",
"description": "The id of the workspace which the contact belongs to."
},
"android_device": {
"type": "string",
"example": "Pixel 3",
"nullable": true,
"description": "The Android device which the contact is using."
},
"ios_os_version": {
"type": "string",
"example": "13.3.1",
"nullable": true,
"description": "The version of iOS which the contact is using."
},
"browser_version": {
"type": "string",
"example": "80.0.3987.132",
"nullable": true,
"description": "The version of the browser which the contact is using."
},
"formatted_phone": {
"type": "string",
"example": "+1123456789",
"nullable": true,
"description": "The contacts phone number normalized to the E164 format"
},
"ios_app_version": {
"type": "string",
"example": "5.0.0",
"nullable": true,
"description": "The version of the iOS app which the contact is using."
},
"ios_sdk_version": {
"type": "string",
"example": "13.3.1",
"nullable": true,
"description": "The version of the iOS SDK which the contact is using."
},
"last_replied_at": {
"type": "integer",
"format": "date-time",
"example": 1571672154,
"nullable": true,
"description": "(UNIX timestamp) The time when the contact last messaged in."
},
"social_profiles": {
"$ref": "#/components/schemas/contact_social_profiles"
},
"android_app_name": {
"type": "string",
"example": "Intercom",
"nullable": true,
"description": "The name of the Android app which the contact is using."
},
"browser_language": {
"type": "string",
"example": "en-US",
"nullable": true,
"description": "The language set by the browser which the contact is using."
},
"has_hard_bounced": {
"type": "boolean",
"example": true,
"description": "Whether the contact has had an email sent to them hard bounce."
},
"ios_last_seen_at": {
"type": "integer",
"format": "date-time",
"example": 1571672154,
"nullable": true,
"description": "(UNIX timestamp) The last time the contact used the iOS app."
},
"custom_attributes": {
"type": "object",
"description": "The custom attributes which are set for the contact."
},
"language_override": {
"type": "string",
"example": "en",
"nullable": true,
"description": "A preferred language setting for the contact, used by the Intercom Messenger even if their browser settings change."
},
"last_contacted_at": {
"type": "integer",
"format": "date-time",
"example": 1571672154,
"nullable": true,
"description": "(UNIX timestamp) The time when the contact was last messaged."
},
"android_os_version": {
"type": "string",
"example": "10",
"nullable": true,
"description": "The version of the Android OS which the contact is using."
},
"android_app_version": {
"type": "string",
"example": "5.0.0",
"nullable": true,
"description": "The version of the Android app which the contact is using."
},
"android_sdk_version": {
"type": "string",
"example": "28",
"nullable": true,
"description": "The version of the Android SDK which the contact is using."
},
"android_last_seen_at": {
"type": "integer",
"format": "date-time",
"example": 1571672154,
"nullable": true,
"description": "(UNIX timestamp) The time when the contact was last seen on an Android device."
},
"last_email_opened_at": {
"type": "integer",
"format": "date-time",
"example": 1571672154,
"nullable": true,
"description": "(UNIX timestamp) The time when the contact last opened an email."
},
"marked_email_as_spam": {
"type": "boolean",
"example": true,
"description": "Whether the contact has marked an email sent to them as spam."
},
"last_email_clicked_at": {
"type": "integer",
"format": "date-time",
"example": 1571672154,
"nullable": true,
"description": "(UNIX timestamp) The time when the contact last clicked a link in an email."
},
"unsubscribed_from_emails": {
"type": "boolean",
"example": true,
"description": "Whether the contact is unsubscribed from emails."
}
},
"description": "Contact are the objects that represent your leads and users in Intercom."
}
contact_archived
{
"type": "object",
"title": "Contact Archived",
"properties": {
"id": {
"type": "string",
"example": "5ba682d23d7cf92bef87bfd4",
"description": "The unique identifier for the contact which is given by Intercom."
},
"type": {
"enum": [
"contact"
],
"type": "string",
"example": "contact",
"description": "always contact"
},
"archived": {
"type": "boolean",
"example": true,
"description": "Whether the contact is archived or not."
},
"external_id": {
"type": "string",
"example": "f3b87a2e09d514c6c2e79b9a",
"nullable": true,
"description": "The unique identifier for the contact which is provided by the Client."
}
},
"description": "archived contact object"
}
contact_attached_companies
{
"type": "object",
"title": "Contact Attached Companies",
"properties": {
"type": {
"enum": [
"list"
],
"type": "string",
"example": "list",
"description": "The type of object"
},
"pages": {
"$ref": "#/components/schemas/pages_link"
},
"companies": {
"type": "array",
"items": {
"$ref": "#/components/schemas/company"
},
"description": "An array containing Company Objects"
},
"total_count": {
"type": "integer",
"example": 100,
"description": "The total number of companies associated to this contact"
}
},
"description": "A list of Company Objects"
}
contact_companies
{
"type": "object",
"title": "Contact companies",
"nullable": false,
"properties": {
"url": {
"type": "string",
"format": "uri",
"example": "/contacts/5ba682d23d7cf92bef87bfd4/companies",
"description": "Url to get more company resources for this contact"
},
"has_more": {
"type": "boolean",
"example": true,
"description": "Whether there's more Addressable Objects to be viewed. If true, use the url to view all"
},
"total_count": {
"type": "integer",
"example": 100,
"description": "Int representing the total number of companyies attached to this contact"
}
},
"description": "An object containing companies meta data about the companies that a contact has. Up to 10 will be displayed here. Use the url to get more."
}
contact_deleted
{
"type": "object",
"title": "Contact Deleted",
"properties": {
"id": {
"type": "string",
"example": "5ba682d23d7cf92bef87bfd4",
"description": "The unique identifier for the contact which is given by Intercom."
},
"type": {
"enum": [
"contact"
],
"type": "string",
"example": "contact",
"description": "always contact"
},
"deleted": {
"type": "boolean",
"example": true,
"description": "Whether the contact is deleted or not."
},
"external_id": {
"type": "string",
"example": "f3b87a2e09d514c6c2e79b9a",
"nullable": true,
"description": "The unique identifier for the contact which is provided by the Client."
}
},
"description": "deleted contact object"
}
contact_list
{
"type": "object",
"title": "Contact List",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/contact"
},
"description": "The list of contact objects"
},
"type": {
"enum": [
"list"
],
"type": "string",
"example": "list",
"description": "Always list"
},
"pages": {
"$ref": "#/components/schemas/cursor_pages"
},
"total_count": {
"type": "integer",
"example": 100,
"description": "A count of the total number of objects."
}
},
"description": "Contacts are your users in Intercom."
}
contact_location
{
"type": "object",
"title": "Contact Location",
"nullable": false,
"properties": {
"city": {
"type": "string",
"example": "Dublin",
"nullable": true,
"description": "The city that the contact is located in"
},
"type": {
"type": "string",
"example": "location",
"nullable": true,
"description": "Always location"
},
"region": {
"type": "string",
"example": "Dublin",
"nullable": true,
"description": "The overal region that the contact is located in"
},
"country": {
"type": "string",
"example": "Ireland",
"nullable": true,
"description": "The country that the contact is located in"
}
},
"description": "An object containing location meta data about a Intercom contact."
}
contact_notes
{
"type": "object",
"title": "Contact notes",
"nullable": false,
"properties": {
"url": {
"type": "string",
"format": "uri",
"example": "/contacts/5ba682d23d7cf92bef87bfd4/notes",
"description": "Url to get more company resources for this contact"
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/addressable_list"
},
"description": "This object represents the notes attached to a contact."
},
"has_more": {
"type": "boolean",
"example": true,
"description": "Whether there's more Addressable Objects to be viewed. If true, use the url to view all"
},
"total_count": {
"type": "integer",
"example": 100,
"description": "Int representing the total number of companyies attached to this contact"
}
},
"description": "An object containing notes meta data about the notes that a contact has. Up to 10 will be displayed here. Use the url to get more."
}
contact_reference
{
"type": "object",
"title": "Contact Reference",
"properties": {
"id": {
"type": "string",
"example": "5ba682d23d7cf92bef87bfd4",
"description": "The unique identifier for the contact which is given by Intercom."
},
"type": {
"enum": [
"contact"
],
"type": "string",
"example": "contact",
"description": "always contact"
},
"external_id": {
"type": "string",
"example": "f3b87a2e09d514c6c2e79b9a",
"nullable": true,
"description": "The unique identifier for the contact which is provided by the Client."
}
},
"description": "reference to contact object"
}
contact_reply_base_request
{
"type": "object",
"title": "Contact Reply Base Object",
"required": [
"message_type",
"type",
"body"
],
"properties": {
"body": {
"type": "string",
"description": "The text body of the comment."
},
"type": {
"enum": [
"user"
],
"type": "string"
},
"message_type": {
"enum": [
"comment"
],
"type": "string"
},
"attachment_urls": {
"type": "array",
"items": {
"type": "string",
"format": "uri"
},
"title": "Attachment URLs",
"maxItems": 10,
"description": "A list of image URLs that will be added as attachments. You can include up to 10 URLs."
}
}
}
contact_reply_conversation_request
{
"oneOf": [
{
"$ref": "#/components/schemas/contact_reply_base_request"
},
{
"$ref": "#/components/schemas/contact_reply_base_request"
},
{
"$ref": "#/components/schemas/contact_reply_base_request"
}
],
"title": "Contact Reply"
}
contact_segments
{
"type": "object",
"title": "Segments",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/segment"
},
"description": "Segment objects associated with the contact."
},
"type": {
"enum": [
"list"
],
"type": "string",
"example": "list",
"description": "The type of the object"
}
},
"description": "A list of segments objects attached to a specific contact."
}