Intercom API (Unstable)

The intercom API reference.

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

Admins

Everything about your Admins

Operations

AI Content

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

 

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

 

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

 

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

Operations

Articles

Everything about your Articles

Operations

Companies

Everything about your Companies

Operations

Contacts

Everything about your contacts

Operations

Conversations

Everything about your Conversations

Operations

Custom Object Instances

Everything about your Custom Object instances.

Operations

Data Attributes

Everything about your Data Attributes

Operations

Data Events

Everything about your Data Events

Operations

Data Export

Everything about your Data Exports

Operations

Help Center

Everything about your Help Center

Operations

Messages

Everything about your messages

Operations

News

Everything about your News

Operations

Notes

Everything about your Notes

Operations

Segments

Everything about your Segments

Operations

Subscription Types

Everything about subscription types

Operations

Switch

Everything about Switch

Operations

Tags

Everything about tags

Operations

Teams

Everything about your Teams

Operations

Ticket States

Everything about your ticket states

Operations

Ticket Type Attributes

Everything about your ticket type attributes

Operations

Ticket Types

Everything about your ticket types

Operations

Tickets

Everything about your tickets

Operations

Visitors

Everything about your Visitors

Operations

Update a visitor

Request

Sending a PUT request to /visitors will result in an update of an existing Visitor.

Option 1. You can update a visitor by passing in the user_id of the visitor in the Request body.

Option 2. You can update a visitor by passing in the id of the visitor in the Request body.

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
Any of:

Update an existing visitor.

idstringrequired

A unique identified for the visitor which is given by Intercom.

Example: "8a88a590-e"
user_idstring

A unique identified for the visitor which is given by you.

Example: "123"
namestring

The visitor's name.

Example: "Christian Bale"
custom_attributesobject

The custom attributes which are set for the visitor.

Example: {"paid_subscriber":true,"monthly_spend":155.5,"team_mates":9}
curl -i -X PUT \
  https://api.intercom.io/visitors \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -H 'Intercom-Version: Unstable' \
  -d '{
    "id": "66fd032b9ffbe52cc8b3ab3f",
    "name": "Gareth Bale"
  }'

Responses

successful

Bodyapplication/json
typestring

Value is 'visitor'

Default "visitor"
Example: "visitor"
idstring

The Intercom defined id representing the Visitor.

Example: "530370b477ad7120001d"
user_idstring

Automatically generated identifier for the Visitor.

Example: "8a88a590-e1c3-41e2-a502-e0649dbf721c"
anonymousboolean

Identifies if this visitor is anonymous.

Example: false
emailstring(email)

The email of the visitor.

Example: "jane.doe@example.com"
phonestring or null

The phone number of the visitor.

Example: "555-555-5555"
namestring or null

The name of the visitor.

Example: "Jane Doe"
pseudonymstring or null

The pseudonym of the visitor.

Example: "Red Duck from Dublin"
avatarobject
app_idstring

The id of the app the visitor is associated with.

Example: "hfi1bx4l"
companiesobject
location_dataobject
las_request_atinteger

The time the Lead last recorded making a request.

Example: 1663597260
created_atinteger

The time the Visitor was added to Intercom.

Example: 1663597223
remote_created_atinteger

The time the Visitor was added to Intercom.

Example: 1663597223
signed_up_atinteger

The time the Visitor signed up for your product.

Example: 1663597223
updated_atinteger

The last time the Visitor was updated.

Example: 1663597260
session_countinteger

The number of sessions the Visitor has had.

Example: 1
social_profilesobject
owner_idstring or null

The id of the admin that owns the Visitor.

Example: "5169261"
unsubscribed_from_emailsboolean

Whether the Visitor is unsubscribed from emails.

Example: false
marked_email_as_spamboolean

Identifies if this visitor has marked an email as spam.

Example: false
has_hard_bouncedboolean

Identifies if this visitor has had a hard bounce.

Example: false
tagsobject
segmentsobject
custom_attributesobject

The custom attributes you have set on the Visitor.

referrerstring or null

The referer of the visitor.

Example: "https://www.google.com/"
utm_campaignstring or null

The utm_campaign of the visitor.

Example: "intercom-link"
utm_contentstring or null

The utm_content of the visitor.

Example: "banner"
utm_mediumstring or null

The utm_medium of the visitor.

Example: "email"
utm_sourcestring or null

The utm_source of the visitor.

Example: "Intercom"
utm_termstring or null

The utm_term of the visitor.

Example: "messenger"
do_not_trackboolean or null

Identifies if this visitor has do not track enabled.

Example: false
Response
application/json
{ "type": "visitor", "id": "66fd032b9ffbe52cc8b3ab3f", "user_id": "3ecf64d0-9ed1-4e9f-88e1-da7d6e6782f3", "anonymous": true, "email": "", "phone": null, "name": "Gareth Bale", "pseudonym": "Green Lamp", "avatar": { "type": "avatar", "image_url": "https://static.intercomassets.com/app/pseudonym_avatars_2019/green-lamp.png" }, "app_id": "this_is_an_id716_that_should_be_at_least_", "companies": { "type": "company.list", "companies": [] }, "location_data": {}, "last_request_at": null, "created_at": 1727857451, "remote_created_at": 1727857451, "signed_up_at": 1727857451, "updated_at": 1727857452, "session_count": 0, "social_profiles": { "type": "social_profile.list", "social_profiles": [] }, "owner_id": null, "unsubscribed_from_emails": false, "marked_email_as_spam": false, "has_hard_bounced": false, "tags": { "type": "tag.list", "tags": [] }, "segments": { "type": "segment.list", "segments": [] }, "custom_attributes": {}, "referrer": null, "utm_campaign": null, "utm_content": null, "utm_medium": null, "utm_source": null, "utm_term": null, "do_not_track": null }

Retrieve a visitor with User ID

Request

You can fetch the details of a single visitor.

Query
user_idstringrequired

The user_id of the Visitor you want to retrieve.

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/visitors?user_id=string' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Intercom-Version: Unstable'

Responses

successful

Bodyapplication/json
typestring

Value is 'visitor'

Default "visitor"
Example: "visitor"
idstring

The Intercom defined id representing the Visitor.

Example: "530370b477ad7120001d"
user_idstring

Automatically generated identifier for the Visitor.

Example: "8a88a590-e1c3-41e2-a502-e0649dbf721c"
anonymousboolean

Identifies if this visitor is anonymous.

Example: false
emailstring(email)

The email of the visitor.

Example: "jane.doe@example.com"
phonestring or null

The phone number of the visitor.

Example: "555-555-5555"
namestring or null

The name of the visitor.

Example: "Jane Doe"
pseudonymstring or null

The pseudonym of the visitor.

Example: "Red Duck from Dublin"
avatarobject
app_idstring

The id of the app the visitor is associated with.

Example: "hfi1bx4l"
companiesobject
location_dataobject
las_request_atinteger

The time the Lead last recorded making a request.

Example: 1663597260
created_atinteger

The time the Visitor was added to Intercom.

Example: 1663597223
remote_created_atinteger

The time the Visitor was added to Intercom.

Example: 1663597223
signed_up_atinteger

The time the Visitor signed up for your product.

Example: 1663597223
updated_atinteger

The last time the Visitor was updated.

Example: 1663597260
session_countinteger

The number of sessions the Visitor has had.

Example: 1
social_profilesobject
owner_idstring or null

The id of the admin that owns the Visitor.

Example: "5169261"
unsubscribed_from_emailsboolean

Whether the Visitor is unsubscribed from emails.

Example: false
marked_email_as_spamboolean

Identifies if this visitor has marked an email as spam.

Example: false
has_hard_bouncedboolean

Identifies if this visitor has had a hard bounce.

Example: false
tagsobject
segmentsobject
custom_attributesobject

The custom attributes you have set on the Visitor.

referrerstring or null

The referer of the visitor.

Example: "https://www.google.com/"
utm_campaignstring or null

The utm_campaign of the visitor.

Example: "intercom-link"
utm_contentstring or null

The utm_content of the visitor.

Example: "banner"
utm_mediumstring or null

The utm_medium of the visitor.

Example: "email"
utm_sourcestring or null

The utm_source of the visitor.

Example: "Intercom"
utm_termstring or null

The utm_term of the visitor.

Example: "messenger"
do_not_trackboolean or null

Identifies if this visitor has do not track enabled.

Example: false
Response
application/json
{ "type": "visitor", "id": "66fd032e9ffbe52cc8b3ab45", "user_id": "3ecf64d0-9ed1-4e9f-88e1-da7d6e6782f3", "anonymous": true, "email": "", "phone": null, "name": null, "pseudonym": null, "avatar": { "type": "avatar", "image_url": null }, "app_id": "this_is_an_id722_that_should_be_at_least_", "companies": { "type": "company.list", "companies": [] }, "location_data": {}, "last_request_at": null, "created_at": 1727857454, "remote_created_at": 1727857454, "signed_up_at": 1727857454, "updated_at": 1727857454, "session_count": 0, "social_profiles": { "type": "social_profile.list", "social_profiles": [] }, "owner_id": null, "unsubscribed_from_emails": false, "marked_email_as_spam": false, "has_hard_bounced": false, "tags": { "type": "tag.list", "tags": [] }, "segments": { "type": "segment.list", "segments": [] }, "custom_attributes": {}, "referrer": null, "utm_campaign": null, "utm_content": null, "utm_medium": null, "utm_source": null, "utm_term": null, "do_not_track": null }

Convert a visitor

Request

You can merge a Visitor to a Contact of role type lead or user.

📘 What happens upon a visitor being converted?

If the User exists, then the Visitor will be merged into it, the Visitor deleted and the User returned. If the User does not exist, the Visitor will be converted to a User, with the User identifiers replacing it's Visitor identifiers.

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
typestringrequired

Represents the role of the Contact model. Accepts lead or user.

Example: "user"
userobject or objectrequired

The unique identifiers retained after converting or merging.

Any of:

The unique identifiers retained after converting or merging.

user.​idstringrequired

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

Example: "8a88a590-e1c3-41e2-a502-e0649dbf721c"
user.​user_idstring

A unique identifier for the contact which is given to Intercom, which will be represented as external_id.

Example: "8a88a590-e1c3-41e2-a502-e0649dbf721c"
user.​emailstring

The contact's email, retained by default if one is present.

Example: "joe@example.com"
visitorobject or object or objectrequired

The unique identifiers to convert a single Visitor.

Any of:

The unique identifiers to convert a single Visitor.

visitor.​idstringrequired

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

Example: "8a88a590-e1c3-41e2-a502-e0649dbf721c"
visitor.​user_idstring

A unique identifier for the contact which is given to Intercom.

Example: "8a88a590-e1c3-41e2-a502-e0649dbf721c"
visitor.​emailstring

The visitor's email.

Example: "joe@example.com"
curl -i -X POST \
  https://api.intercom.io/visitors/convert \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -H 'Intercom-Version: Unstable' \
  -d '{
    "visitor": {
      "user_id": "3ecf64d0-9ed1-4e9f-88e1-da7d6e6782f3"
    },
    "user": {
      "email": "foo@bar.com"
    },
    "type": "user"
  }'

Responses

successful

Bodyapplication/json
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.

Response
application/json
{ "type": "contact", "id": "66fd03319ffbe52cc8b3ab4c", "workspace_id": "this_is_an_id728_that_should_be_at_least_", "external_id": null, "role": "user", "email": "foo@bar.com", "phone": null, "formatted_phone": null, "name": null, "avatar": null, "owner_id": null, "social_profiles": { "type": "list", "data": [] }, "has_hard_bounced": false, "marked_email_as_spam": false, "unsubscribed_from_emails": false, "created_at": 1727857457, "updated_at": 1727857458, "signed_up_at": 1727857457, "last_seen_at": null, "last_replied_at": null, "last_contacted_at": null, "last_email_opened_at": null, "last_email_clicked_at": null, "language_override": null, "browser": null, "browser_version": null, "browser_language": null, "os": null, "location": { "type": "location", "country": null, "region": null, "city": null, "country_code": null, "continent_code": null }, "android_app_name": null, "android_app_version": null, "android_device": null, "android_os_version": null, "android_sdk_version": null, "android_last_seen_at": null, "ios_app_name": null, "ios_app_version": null, "ios_device": null, "ios_os_version": null, "ios_sdk_version": null, "ios_last_seen_at": null, "custom_attributes": {}, "tags": { "type": "list", "data": [], "url": "/contacts/66fd03319ffbe52cc8b3ab4c/tags", "total_count": 0, "has_more": false }, "notes": { "type": "list", "data": [], "url": "/contacts/66fd03319ffbe52cc8b3ab4c/notes", "total_count": 0, "has_more": false }, "companies": { "type": "list", "data": [], "url": "/contacts/66fd03319ffbe52cc8b3ab4c/companies", "total_count": 0, "has_more": false }, "opted_out_subscription_types": { "type": "list", "data": [], "url": "/contacts/66fd03319ffbe52cc8b3ab4c/subscriptions", "total_count": 0, "has_more": false }, "opted_in_subscription_types": { "type": "list", "data": [], "url": "/contacts/66fd03319ffbe52cc8b3ab4c/subscriptions", "total_count": 0, "has_more": false }, "utm_campaign": null, "utm_content": null, "utm_medium": null, "utm_source": null, "utm_term": null, "referrer": null }

Models