Intercom

Customer messaging and support platform

developers.intercom.com ↗
Version
2.9
OpenAPI
3.0.1
Endpoints
110
Schemas
172
91
Quality
Updated
3 days ago
Customer support customer-support messaging crm
Use this API in your AI agent

Query structured spec data via REST or MCP. Get exactly what your agent needs.

Get API Key

Server URLs

https://api.intercom.io
https://api.eu.intercom.io
https://api.au.intercom.io

Endpoints

Clear filters

Articles 1 endpoints

POST /articles

You can create a new article by making a POST request to https://api.intercom.io/articles.

operationId: Articles_createNewArticle

Parameters

Name In Required Type Description
Intercom-Version header optional

Request Body

application/json
schema 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

Responses

200

article created

400

Bad Request

401

Unauthorized

POST /articles

Companies 3 endpoints

POST /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 %}

operationId: Companies_createOrUpdateCompany

Parameters

Name In Required Type Description
Intercom-Version header optional

Request Body

application/json
schema 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

Responses

200

Successful

400

Bad Request

401

Unauthorized

POST /companies
POST /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.

operationId: Companies_listAll

Parameters

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

asc or desc. Return the companies in ascending or descending order. Defaults to desc

Responses

200

Successful

401

Unauthorized

POST /companies/list
POST /contacts/{id}/companies

You can attach a company to a single contact.

operationId: Companies_attachContactTo

Parameters

Name In Required Type Description
Intercom-Version header optional
id path required string

The unique identifier for the contact which is given by Intercom

Request Body

application/json
schema CompaniesAttachContactToRequest
Property Type Required
id string required

Responses

200

Successful

400

Bad Request

401

Unauthorized

404

Company Not Found

POST /contacts/{id}/companies

Contacts 5 endpoints

POST /contacts

You can create a new contact (ie. user or lead).

operationId: Contacts_createNewContact

Parameters

Name In Required Type Description
Intercom-Version header optional

Request Body

application/json
schema ContactsCreateNewContactRequest

Responses

200

successful

401

Unauthorized

POST /contacts
POST /contacts/merge

You can merge a contact with a role of lead into a contact with a role of user.

operationId: Contacts_mergeLeadUser

Parameters

Name In Required Type Description
Intercom-Version header optional

Request Body

application/json
schema merge_contacts_request
Property Type Required
from string optional
into string optional

Responses

200

successful

401

Unauthorized

POST /contacts/merge
POST /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.

Contact Creation Delay

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.

Nesting & Limitations

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

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

Searching for Timestamp Fields

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.

Accepted Fields

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
email 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

Accepted Operators

{% 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 queries
Values must be in Array
NIN All Not In
Shortcut for OR ! queries
Values 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
operationId: Contacts_searchContacts

Parameters

Name In Required Type Description
Intercom-Version header optional

Request Body

application/json
schema search_request
Property Type Required
query object required
pagination object optional
page integer optional
starting_after string optional

Responses

200

successful

401

Unauthorized

POST /contacts/search
POST /contacts/{id}/archive

You can archive a single contact.

operationId: Contacts_archiveContact

Parameters

Name In Required Type Description
Intercom-Version header optional
id path required string

id

Responses

200

successful

POST /contacts/{id}/archive
POST /contacts/{id}/unarchive

You can unarchive a single contact.

operationId: Contacts_unarchiveContact

Parameters

Name In Required Type Description
Intercom-Version header optional
id path required string

id

Responses

200

successful

POST /contacts/{id}/unarchive

Conversations 7 endpoints

POST /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.

operationId: Conversations_createInAppMessage

Parameters

Name In Required Type Description
Intercom-Version header optional

Request Body

application/json
schema create_conversation_request
Property Type Required
body string required
from object required
id string required
type string required

Responses

200

conversation created

401

Unauthorized

403

API plan restricted

404

Contact Not Found

POST /conversations
POST /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 %}

operationId: Conversations_redactConversationPart

Parameters

Name In Required Type Description
Intercom-Version header optional

Request Body

application/json
schema redact_conversation_request

Responses

200

Redact a conversation part

401

Unauthorized

404

Not found

POST /conversations/redact
POST /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.

Nesting & Limitations

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

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

Accepted Fields

Most keys listed as part of the 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

Accepted Operators

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
operationId: Conversations_searchConversations

Parameters

Name In Required Type Description
Intercom-Version header optional

Request Body

application/json
schema search_request
Property Type Required
query object required
pagination object optional
page integer optional
starting_after string optional

Responses

200

successful

POST /conversations/search
POST /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 %}

operationId: Conversations_attachContactToConversation

Parameters

Name In Required Type Description
Intercom-Version header optional
id path required string

The identifier for the conversation as given by Intercom.

Request Body

application/json
schema attach_contact_to_conversation_request
Property Type Required
admin_id string optional
customer object optional

Responses

200

Attach a contact to a conversation

401

Unauthorized

403

API plan restricted

404

Not found

POST /conversations/{id}/customers
POST /conversations/{id}/parts

For managing conversations you can:

  • Close a conversation
  • Snooze a conversation to reopen on a future date
  • Open a conversation which is snoozed or closed
  • Assign a conversation to an admin and/or team.
operationId: Conversations_manageConversation

Parameters

Name In Required Type Description
Intercom-Version header optional
id path required string

The identifier for the conversation as given by Intercom.

Request Body

application/json
schema ConversationsManageConversationRequest

Responses

200

Assign a conversation

401

Unauthorized

403

API plan restricted

404

Not found

POST /conversations/{id}/parts
POST /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.

operationId: Conversations_replyMessage

Parameters

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

Request Body

application/json
schema reply_conversation_request

Responses

200

User last conversation reply

401

Unauthorized

403

API plan restricted

404

Not found

POST /conversations/{id}/reply
POST /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 %}

operationId: Conversations_runAssignmentRules

Parameters

Name In Required Type Description
Intercom-Version header optional
id path required string

The identifier for the conversation as given by Intercom.

Responses

200

Assign a conversation using assignment rules

401

Unauthorized

403

API plan restricted

404

Not found

POST /conversations/{id}/run_assignment_rules

Dataattributes 1 endpoints

POST /data_attributes

You can create a data attributes for a contact or a company.

operationId: DataAttributes_createDataAttribute

Parameters

Name In Required Type Description
Intercom-Version header optional

Request Body

application/json
schema 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

Responses

200

Successful

400

Too few options for list

401

Unauthorized

POST /data_attributes

Dataevents 2 endpoints

POST /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

  • We currently limit the number of tracked metadata keys to 10 per event. Once the quota is reached, we ignore any further keys we receive. The first 10 metadata keys are determined by the order in which they are sent in with the event.
  • It is not possible to change the metadata keys once the event has been sent. A new event will need to be created with the new keys and you can archive the old one.
  • There might be up to 24 hrs delay when you send a new metadata for an existing event.

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.

HTTP API Responses

  • Successful responses to submitted events return 202 Accepted with an empty body.
  • Unauthorised access will be rejected with a 401 Unauthorized or 403 Forbidden response code.
  • Events sent about users that cannot be found will return a 404 Not Found.
  • Event lists containing duplicate events will have those duplicates ignored.
  • Server errors will return a 500 response code and may contain an error message in the body.
operationId: DataEvents_submitEvent

Parameters

Name In Required Type Description
Intercom-Version header optional

Request Body

application/json
schema create_data_event_request
Property Type Required
id string optional
email string optional
user_id string optional
metadata object optional
created_at integer optional
event_name string optional

Responses

202

successful

401

Unauthorized

POST /events
POST /events/summaries

Create event summaries for a user. Event summaries are used to track the number of times an event has occurred, the first time it occurred and the last time it occurred.

operationId: DataEvents_createEventSummaries

Parameters

Name In Required Type Description
Intercom-Version header optional

Request Body

application/json
schema create_data_event_summaries_request
Property Type Required
user_id string optional
event_summaries object optional
last integer optional
count integer optional
first integer optional
event_name string optional

Responses

200

successful

401

Unauthorized

POST /events/summaries

Dataexport 2 endpoints

POST /export/cancel/{job_identifier}

You can cancel your job

operationId: DataExport_cancelJob

Parameters

Name In Required Type Description
Intercom-Version header optional
job_identifier path required string

job_identifier

Responses

200

successful

POST /export/cancel/{job_identifier}
POST /export/content/data

To create your export job, you need to send a POST request to the export endpoint https://api.intercom.io/export/content/data.

The only parameters you need to provide are the range of dates that you want exported.

🚧 Limit of one active job

You can only have one active job per workspace. You will receive a HTTP status code of 429 with the message Exceeded rate limit of 1 pending message data export jobs if you attempt to create a second concurrent job.

❗️ Updated_at not included

It should be noted that the timeframe only includes messages sent during the time period and not messages that were only updated during this period. For example, if a message was updated yesterday but sent two days ago, you would need to set the created_at_after date before the message was sent to include that in your retrieval job.

📘 Date ranges are inclusive

Requesting data for 2018-06-01 until 2018-06-30 will get all data for those days including those specified - e.g. 2018-06-01 00:00:00 until 2018-06-30 23:59:99.

operationId: DataExport_createContentExport

Parameters

Name In Required Type Description
Intercom-Version header optional

Request Body

application/json
schema create_data_exports_request
Property Type Required
created_at_after integer required
created_at_before integer required

Responses

200

successful

POST /export/content/data

Helpcenter 2 endpoints

POST /help_center/collections

You can create a new collection by making a POST request to https://api.intercom.io/help_center/collections.

operationId: HelpCenter_createCollection

Parameters

Name In Required Type Description
Intercom-Version header optional

Request Body

application/json
schema create_collection_request
Property Type Required
name string required
description string optional
help_center_id integer optional
translated_content object optional
ar object optional
name string optional
type string optional
description string optional
bg object optional
name string optional
type string optional
description string optional
bs object optional
name string optional
type string optional
description string optional
ca object optional
name string optional
type string optional
description string optional
cs object optional
name string optional
type string optional
description string optional
da object optional
name string optional
type string optional
description string optional
de object optional
name string optional
type string optional
description string optional
el object optional
name string optional
type string optional
description string optional
en object optional
name string optional
type string optional
description string optional
es object optional
name string optional
type string optional
description string optional
et object optional
name string optional
type string optional
description string optional
fi object optional
name string optional
type string optional
description string optional
fr object optional
name string optional
type string optional
description string optional
he object optional
name string optional
type string optional
description string optional
hr object optional
name string optional
type string optional
description string optional
hu object optional
name string optional
type string optional
description string optional
id object optional
name string optional
type string optional
description string optional
it object optional
name string optional
type string optional
description string optional
ja object optional
name string optional
type string optional
description string optional
ko object optional
name string optional
type string optional
description string optional
…18 more object optional

Responses

200

collection created

400

Bad Request

401

Unauthorized

POST /help_center/collections
POST /help_center/sections

You can create a new section by making a POST request to https://api.intercom.io/help_center/sections.

operationId: HelpCenter_createSection

Parameters

Name In Required Type Description
Intercom-Version header optional

Request Body

application/json
schema create_section_request
Property Type Required
name string required
parent_id integer required
translated_content object optional
ar object optional
name string optional
type string optional
description string optional
bg object optional
name string optional
type string optional
description string optional
bs object optional
name string optional
type string optional
description string optional
ca object optional
name string optional
type string optional
description string optional
cs object optional
name string optional
type string optional
description string optional
da object optional
name string optional
type string optional
description string optional
de object optional
name string optional
type string optional
description string optional
el object optional
name string optional
type string optional
description string optional
en object optional
name string optional
type string optional
description string optional
es object optional
name string optional
type string optional
description string optional
et object optional
name string optional
type string optional
description string optional
fi object optional
name string optional
type string optional
description string optional
fr object optional
name string optional
type string optional
description string optional
he object optional
name string optional
type string optional
description string optional
hr object optional
name string optional
type string optional
description string optional
hu object optional
name string optional
type string optional
description string optional
id object optional
name string optional
type string optional
description string optional
it object optional
name string optional
type string optional
description string optional
ja object optional
name string optional
type string optional
description string optional
ko object optional
name string optional
type string optional
description string optional
…18 more object optional

Responses

200

section created

401

Unauthorized

POST /help_center/sections

Messages 1 endpoints

POST /messages

You can create a message that has been initiated by an admin. The conversation can be either an in-app message or an email.

🚧 Sending for visitors

There can be a short delay between when a contact is created and when a contact becomes available to be messaged through the API. A 404 Not Found error will be returned in this case.

This will return the Message model that has been created.

🚧 Retrieving Associated Conversations

As this is a message, there will be no conversation present until the contact responds. Once they do, you will have to search for a contact’s conversations with the id of the message.

operationId: Messages_createMessage

Parameters

Name In Required Type Description
Intercom-Version header optional

Request Body

application/json
schema create_message_request
Property Type Required
to object optional
id string required
type string required
body string optional
from object optional
id integer required
type string required
subject string optional
template string optional
message_type string optional
create_conversation_without_contact_reply boolean optional

Responses

200

admin message created

400

No body supplied for email message

401

Unauthorized

403

API plan restricted

422

No subject supplied for email message

POST /messages

News 1 endpoints

POST /news/news_items

You can create a news item

operationId: News_createNewsItem

Parameters

Name In Required Type Description
Intercom-Version header optional

Request Body

application/json
schema news_item_request
Property Type Required
body string optional
state string optional
title string required
labels array optional
reactions array optional
sender_id integer required
deliver_silently boolean optional
newsfeed_assignments array optional
newsfeed_id integer optional
published_at integer optional

Responses

200

successful

401

Unauthorized

POST /news/news_items

Notes 1 endpoints

POST /contacts/{id}/notes

You can add a note to a single contact.

operationId: Notes_addNoteToContact

Parameters

Name In Required Type Description
Intercom-Version header optional
id path required integer

The unique identifier of a given contact.

Request Body

application/json
schema NotesAddNoteToContactRequest
Property Type Required
body string required
admin_id string optional
contact_id string optional

Responses

200

Successful response

404

Contact not found

POST /contacts/{id}/notes

Subscriptiontypes 1 endpoints

POST /contacts/{contact_id}/subscriptions

You can add a specific subscription to a contact. In Intercom, we have two different subscription types based on user consent - opt-out and opt-in:

1.Attaching a contact to an opt-out subscription type will opt that user out from receiving messages related to that subscription type.

2.Attaching a contact to an opt-in subscription type will opt that user in to receiving messages related to that subscription type.

This will return a subscription type model for the subscription type that was added to the contact.

operationId: SubscriptionTypes_addSubscriptionToContact

Parameters

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

Request Body

application/json
schema SubscriptionTypesAddSubscriptionToContactRequest
Property Type Required
id string required
consent_type string required

Responses

200

Successful

401

Unauthorized

404

Resource not found

POST /contacts/{contact_id}/subscriptions

Switch 1 endpoints

POST /phone_call_redirects

You can use the API to deflect phone calls to the Intercom Messenger.
Calling this endpoint will send an SMS with a link to the Messenger to the phone number specified.

If custom attributes are specified, they will be added to the user or lead’s custom data attributes.

operationId: Switch_deflectPhoneCalls

Parameters

Name In Required Type Description
Intercom-Version header optional

Request Body

application/json
schema create_phone_switch_request
Property Type Required
phone string required
custom_attributes object optional

Responses

200

successful

400

bad request - invalid number

401

Unauthorized

422

unprocessable entity

POST /phone_call_redirects

Tags 3 endpoints

POST /tags

You can use this endpoint to perform the following operations:

1. Create a new tag: You can create a new tag by passing in the tag name as specified in “Create or Update Tag Request Payload” described below.

2. Update an existing tag: You can update an existing tag by passing the id of the tag as specified in “Create or Update Tag Request Payload” described below.

3. Tag Companies: You can tag single company or a list of companies. You can tag a company by passing in the tag name and the company details as specified in “Tag Company Request Payload” described below. Also, if the tag doesn’t exist then a new one will be created automatically.

4. Untag Companies: You can untag a single company or a list of companies. You can untag a company by passing in the tag id and the company details as specified in “Untag Company Request Payload” described below.

5. Tag Multiple Users: You can tag a list of users. You can tag the users by passing in the tag name and the user details as specified in “Tag Users Request Payload” described below.

Each operation will return a tag object.

operationId: Tags_createOrUpdateTag

Parameters

Name In Required Type Description
Intercom-Version header optional

Request Body

application/json
schema TagsCreateOrUpdateTagRequest

Responses

200

Action successful

400

Invalid parameters

401

Unauthorized

404

User not found

POST /tags
POST /contacts/{contact_id}/tags

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

operationId: Tags_addTagToContact

Parameters

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

Request Body

application/json
schema TagsAddTagToContactRequest
Property Type Required
id string required

Responses

200

successful

401

Unauthorized

404

Tag not found

POST /contacts/{contact_id}/tags
POST /conversations/{conversation_id}/tags

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

operationId: Tags_addTagToConversation

Parameters

Name In Required Type Description
Intercom-Version header optional
conversation_id path required string

conversation_id

Request Body

application/json
schema TagsAddTagToConversationRequest
Property Type Required
id string required
admin_id string required

Responses

200

successful

401

Unauthorized

404

Conversation not found

POST /conversations/{conversation_id}/tags

Tickettypeattributes 1 endpoints

POST /ticket_types/{ticket_type_id}/attributes

You can create a new attribute for a ticket type.

operationId: TicketTypeAttributes_createNewAttribute

Parameters

Name In Required Type Description
Intercom-Version header optional
ticket_type_id path required string

The unique identifier for the ticket type which is given by Intercom.

Request Body

application/json
schema create_ticket_type_attribute_request
Property Type Required
name string required
data_type string required
multiline boolean optional
list_items string optional
description string required
visible_on_create boolean optional
required_to_create boolean optional
visible_to_contacts boolean optional
allow_multiple_values boolean optional
required_to_create_for_contacts boolean optional

Responses

200

Ticket Type Attribute created

401

Unauthorized

POST /ticket_types/{ticket_type_id}/attributes

Tickettypes 1 endpoints

POST /ticket_types

You can create a new ticket type.

📘 Creating ticket types.

Every ticket type will be created with two default attributes: default_title and default_description.
For the icon propery, use an emoji from Twemoji Cheatsheet

operationId: TicketTypes_createNewType

Parameters

Name In Required Type Description
Intercom-Version header optional

Request Body

application/json
schema create_ticket_type_request
Property Type Required
icon string optional
name string required
description string optional
is_internal boolean optional

Responses

200

Ticket type created

401

Unauthorized

POST /ticket_types

Tickets 2 endpoints

POST /tickets

You can create a new ticket.

operationId: Tickets_createNewTicket

Parameters

Name In Required Type Description
Intercom-Version header optional

Request Body

application/json
schema create_ticket_request
Property Type Required
contacts array required
ticket_type_id string required
ticket_attributes object optional

Responses

200

Successful response

401

Unauthorized

POST /tickets
POST /tickets/{id}/reply

You can reply to a ticket with a note from an admin.

operationId: Tickets_replyNote

Parameters

Name In Required Type Description
Intercom-Version header optional
id path required string

Request Body

application/json
schema create_ticket_reply_request
Property Type Required
body string required
admin_id string required
message_type string optional

Responses

200

Admin note reply

401

Unauthorized

POST /tickets/{id}/reply

Visitors 1 endpoints

POST /visitors/convert

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.

operationId: Visitors_convertVisitorToContact

Parameters

Name In Required Type Description
Intercom-Version header optional

Request Body

application/json
schema convert_visitor_request
Property Type Required
type string required
user object required
id string optional
email string optional
user_id string optional
visitor object required
id string optional
email string optional
user_id string optional

Responses

200

successful

401

Unauthorized

POST /visitors/convert

Schemas

object 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."
    }
  }
}
object CompaniesAttachContactToRequest
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "example": "58a430d35458202d41b1e65b",
      "description": "The unique identifier for the company which is given by Intercom"
    }
  }
}
object ContactsCreateNewContactRequest
{
  "oneOf": [
    {
      "$ref": "#/components/schemas/create_contact_request"
    }
  ]
}
object ContactsUpdateContactRequest
{
  "oneOf": [
    {
      "$ref": "#/components/schemas/update_contact_request"
    }
  ]
}
object 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"
    }
  ]
}
object 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."
    }
  }
}
object 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."
    }
  }
}
object SwitchDeflectPhoneCalls422Response
{
  "type": "object",
  "example": {
    "error_key": "some_error"
  },
  "properties": {
    "error_key": {
      "type": "string",
      "example": "some_error"
    }
  }
}
object 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"
    }
  }
}
object TagsAddTagToContactRequest
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "example": "7522907",
      "description": "The unique identifier for the tag which is given by Intercom"
    }
  }
}
object 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."
    }
  }
}
object 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"
    }
  ]
}
object 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."
    }
  }
}
object 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"
    }
  }
}
object 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."
}
object 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."
}
object 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."
}
object 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."
}
object 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."
}
object 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"
}
object 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"
}
object 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"
}
object 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"
}
object 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."
}
object 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."
}
object 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."
}
object 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."
}
object 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."
}
object 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"
}
object 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"
}
object 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"
}
object 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."
}
object 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."
}
object 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."
}
object 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"
}
object 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"
}
object 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."
}
object 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."
}
object 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."
}
object 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"
}
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"
}
object 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."
}
object 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"
}
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."
}
object 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."
}
object 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."
}
object 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"
}
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."
    }
  }
}
object 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"
}
object 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."
}