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

Intercom API (Unstable)

The intercom API reference.

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

Admins

Everything about your Admins

Operations

AI Content

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

 

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

 

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

 

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

Operations

Articles

Everything about your Articles

Operations

Companies

Everything about your Companies

Operations

Contacts

Everything about your contacts

Operations

Contact

Contact are the objects that represent your leads and users in Intercom.

typestring

The type of object.

Example:

"contact"

idstring

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

Example:

"5ba682d23d7cf92bef87bfd4"

external_idstring or null

The unique identifier for the contact which is provided by the Client.

Example:

"f3b87a2e09d514c6c2e79b9a"

workspace_idstring

The id of the workspace which the contact belongs to.

Example:

"ecahpwf5"

rolestring

The role of the contact.

Example:

"user"

emailstring

The contact's email.

Example:

"joe@example.com"

email_domainstring

The contact's email domain.

Example:

"example.com"

phonestring or null

The contacts phone.

Example:

"+1123456789"

formatted_phonestring or null

The contacts phone number normalized to the E164 format

Example:

"+1123456789"

namestring or null

The contacts name.

Example:

"John Doe"

owner_idinteger or null

The id of an admin that has been assigned account ownership of the contact.

Example:

123

has_hard_bouncedboolean

Whether the contact has had an email sent to them hard bounce.

Example:

true

marked_email_as_spamboolean

Whether the contact has marked an email sent to them as spam.

Example:

true

unsubscribed_from_emailsboolean

Whether the contact is unsubscribed from emails.

Example:

true

created_atinteger(date-time)

(UNIX timestamp) The time when the contact was created.

Example:

1571672154

updated_atinteger(date-time)

(UNIX timestamp) The time when the contact was last updated.

Example:

1571672154

signed_up_atinteger or null(date-time)

(UNIX timestamp) The time specified for when a contact signed up.

Example:

1571672154

last_seen_atinteger or null(date-time)

(UNIX timestamp) The time when the contact was last seen (either where the Intercom Messenger was installed or when specified manually).

Example:

1571672154

last_replied_atinteger or null(date-time)

(UNIX timestamp) The time when the contact last messaged in.

Example:

1571672154

last_contacted_atinteger or null(date-time)

(UNIX timestamp) The time when the contact was last messaged.

Example:

1571672154

last_email_opened_atinteger or null(date-time)

(UNIX timestamp) The time when the contact last opened an email.

Example:

1571672154

last_email_clicked_atinteger or null(date-time)

(UNIX timestamp) The time when the contact last clicked a link in an email.

Example:

1571672154

language_overridestring or null

A preferred language setting for the contact, used by the Intercom Messenger even if their browser settings change.

Example:

"en"

browserstring or null

The name of the browser which the contact is using.

Example:

"Chrome"

browser_versionstring or null

The version of the browser which the contact is using.

Example:

"80.0.3987.132"

browser_languagestring or null

The language set by the browser which the contact is using.

Example:

"en-US"

osstring or null

The operating system which the contact is using.

Example:

"Mac OS X"

android_app_namestring or null

The name of the Android app which the contact is using.

Example:

"Intercom"

android_app_versionstring or null

The version of the Android app which the contact is using.

Example:

"5.0.0"

android_devicestring or null

The Android device which the contact is using.

Example:

"Pixel 3"

android_os_versionstring or null

The version of the Android OS which the contact is using.

Example:

"10"

android_sdk_versionstring or null

The version of the Android SDK which the contact is using.

Example:

"28"

android_last_seen_atinteger or null(date-time)

(UNIX timestamp) The time when the contact was last seen on an Android device.

Example:

1571672154

ios_app_namestring or null

The name of the iOS app which the contact is using.

Example:

"Intercom"

ios_app_versionstring or null

The version of the iOS app which the contact is using.

Example:

"5.0.0"

ios_devicestring or null

The iOS device which the contact is using.

Example:

"iPhone 11"

ios_os_versionstring or null

The version of iOS which the contact is using.

Example:

"13.3.1"

ios_sdk_versionstring or null

The version of the iOS SDK which the contact is using.

Example:

"13.3.1"

ios_last_seen_atinteger or null(date-time)

(UNIX timestamp) The last time the contact used the iOS app.

Example:

1571672154

custom_attributesobject

The custom attributes which are set for the contact.

avatarobject or null
tagsobject or null(Contact Tags)

An object containing tags meta data about the tags that a contact has. Up to 10 will be displayed here. Use the url to get more.

notesobject(Contact notes)

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.

companiesobject(Contact companies)

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.

locationobject(Contact Location)

An object containing location meta data about a Intercom contact.

social_profilesobject(Social Profile)

An object containing social profiles that a contact has.

{ "type": "contact", "id": "5ba682d23d7cf92bef87bfd4", "external_id": "f3b87a2e09d514c6c2e79b9a", "workspace_id": "ecahpwf5", "role": "user", "email": "joe@example.com", "email_domain": "example.com", "phone": "+1123456789", "formatted_phone": "+1123456789", "name": "John Doe", "owner_id": 123, "has_hard_bounced": true, "marked_email_as_spam": true, "unsubscribed_from_emails": true, "created_at": 1571672154, "updated_at": 1571672154, "signed_up_at": 1571672154, "last_seen_at": 1571672154, "last_replied_at": 1571672154, "last_contacted_at": 1571672154, "last_email_opened_at": 1571672154, "last_email_clicked_at": 1571672154, "language_override": "en", "browser": "Chrome", "browser_version": "80.0.3987.132", "browser_language": "en-US", "os": "Mac OS X", "android_app_name": "Intercom", "android_app_version": "5.0.0", "android_device": "Pixel 3", "android_os_version": "10", "android_sdk_version": "28", "android_last_seen_at": 1571672154, "ios_app_name": "Intercom", "ios_app_version": "5.0.0", "ios_device": "iPhone 11", "ios_os_version": "13.3.1", "ios_sdk_version": "13.3.1", "ios_last_seen_at": 1571672154, "custom_attributes": {}, "avatar": { "type": "avatar", "image_url": "https://example.org/128Wash.jpg" }, "tags": { "data": [], "url": "/contacts/5ba682d23d7cf92bef87bfd4/tags", "total_count": 100, "has_more": true }, "notes": { "data": [], "url": "/contacts/5ba682d23d7cf92bef87bfd4/notes", "total_count": 100, "has_more": true }, "companies": { "url": "/contacts/5ba682d23d7cf92bef87bfd4/companies", "total_count": 100, "has_more": true }, "location": { "type": "location", "country": "Ireland", "region": "Dublin", "city": "Dublin" }, "social_profiles": { "data": [] } }

List attached contacts

Request

You can fetch a list of all contacts that belong to a company.

Path
idstringrequired

The unique identifier for the company which is given by Intercom

Example:

5f4d3c1c-7b1b-4d7d-a97e-6095715c6632

Headers
Intercom-Versionstring(intercom_version)

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

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

Unstable

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

Responses

Successful

Bodyapplication/json
typestring

The type of object - list

Value"list"
Example:

"list"

dataArray of objects(Contact)

An array containing Contact Objects

total_countinteger

The total number of contacts

Example:

100

pagesobject or null(Cursor based pages)

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

Response
application/json
{ "type": "list", "data": [], "total_count": 0, "pages": { "type": "pages", "page": 1, "per_page": 50, "total_pages": 0 } }

Attach a Contact to a Company

Request

You can attach a company to a single contact.

Path
idstringrequired

The unique identifier for the contact which is given by Intercom

Headers
Intercom-Versionstring(intercom_version)

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

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

Unstable

Bodyapplication/json
idstringrequired

The unique identifier for the company which is given by Intercom

Example:

"58a430d35458202d41b1e65b"

curl -i -X POST \
  'https://api.intercom.io/contacts/{id}/companies' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -H 'Intercom-Version: Unstable' \
  -d '{
    "id": "6687d14660233569304d21a1"
  }'
Experience it firsthand in the API Explorer!

Responses

Successful

Bodyapplication/json
typestring

Value is company

Value"company"
Example:

"company"

idstring

The Intercom defined id representing the company.

Example:

"531ee472cce572a6ec000006"

namestring

The name of the company.

Example:

"Blue Sun"

app_idstring

The Intercom defined code of the workspace the company is associated to.

Example:

"ecahpwf5"

planobject
company_idstring

The company id you have defined for the company.

Example:

"6"

remote_created_atinteger

The time the company was created by you.

Example:

1663597223

created_atinteger

The time the company was added in Intercom.

Example:

1663597223

updated_atinteger

The last time the company was updated.

Example:

1663597223

last_request_atinteger

The time the company last recorded making a request.

Example:

1663597223

sizeinteger

The number of employees in the company.

Example:

100

websitestring

The URL for the company website.

Example:

"https://www.intercom.com"

industrystring

The industry that the company operates in.

Example:

"Software"

monthly_spendinteger

How much revenue the company generates for your business.

Example:

100

session_countinteger

How many sessions the company has recorded.

Example:

100

user_countinteger

The number of users in the company.

Example:

100

custom_attributesobject

The custom attributes you have set on the company.

Example:

{"paid_subscriber":true,"monthly_spend":155.5,"team_mates":9}

tagsobject

The list of tags associated with the company

segmentsobject

The list of segments associated with the company

Response
application/json
{ "type": "company", "company_id": "1", "id": "6687d14660233569304d21a1", "app_id": "this_is_an_id197_that_should_be_at_least_", "name": "company6", "remote_created_at": 1720176966, "created_at": 1720176966, "updated_at": 1720176966, "monthly_spend": 0, "session_count": 0, "user_count": 1, "tags": { "type": "tag.list", "tags": [] }, "segments": { "type": "segment.list", "segments": [] }, "plan": {}, "custom_attributes": {} }

List attached companies for contact

Request

You can fetch a list of companies that are associated to a contact.

Path
idstringrequired

The unique identifier for the contact which is given by Intercom

Example:

63a07ddf05a32042dffac965

Headers
Intercom-Versionstring(intercom_version)

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

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

Unstable

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

Responses

successful

Bodyapplication/json
typestring

The type of object

Value"list"
Example:

"list"

companiesArray of objects(Company)

An array containing Company Objects

total_countinteger

The total number of companies associated to this contact

Example:

100

pagesobject(Pagination Object)

The majority of list resources in the API are paginated to allow clients to traverse data over multiple requests.

Their responses are likely to contain a pages object that hosts pagination links which a client can use to paginate through the data without having to construct a query. The link relations for the pages field are as follows.

Response
application/json
{ "type": "list", "data": [ {} ], "pages": { "type": "pages", "next": null, "page": 1, "per_page": 50, "total_pages": 1 }, "total_count": 1 }

Detach a contact from a company

Request

You can detach a company from a single contact.