Skip to content

Intercom API (Unstable)

The intercom API reference.

Download OpenAPI description
Languages
Servers
The production API server

https://api.intercom.io/

The european API server

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

The australian API server

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

Admins

Everything about your Admins

Operations

AI Content

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

 

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

 

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

 

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

Operations

Articles

Everything about your Articles

Operations

Away Status Reasons

Everything about your Away Status Reasons

Operations

Companies

Everything about your Companies

Operations

Contacts

Everything about your contacts

Operations

Conversations

Everything about your Conversations

Operations

Custom Channel Events

With the "Custom Channel" integration, you can bring Fin and Intercom capabilities to your own platform via API, enabling powerful custom integrations.

Intercom treats your integration like any other Intercom channel, allowing your application and Intercom to exchange events seamlessly. This makes it possible, for example, for your users to interact with Fin directly within your own application’s UI.

Note: "Fin over API" is currently under managed availability. Please reach out to your accounts team to discuss access and tailored, hands-on support.

Operations

Custom Object Instances

Everything about your Custom Object instances.

Permission Requirements

From now on, to access this endpoint, you need additional permissions. Please head over to the Developer Hub app package authentication settings to configure the required permissions.

Operations

Data Attributes

Everything about your Data Attributes

Operations

Data Events

Everything about your Data Events

Operations

Data Export

Everything about your Data Exports

Operations

Help Center

Everything about your Help Center

Operations

Internal Articles

Everything about your Internal Articles

Operations
Operations

Macros

Operations related to saved replies (macros) in conversations

Operations

Messages

Everything about your messages

Operations
Operations
Operations

Segments

Everything about your Segments

Operations

Subscription Types

Everything about subscription types

Operations
Operations
Operations
Operations

Ticket States

Everything about your ticket states

Operations

Ticket Type Attributes

Everything about your ticket type attributes

Operations

Ticket Types

Everything about your ticket types

Operations

Tickets

Everything about your tickets

Operations

Visitors

Everything about your Visitors

Operations
Operations
Operations
Operations

Call

Represents a phone call in Intercom

typestring

String representing the object's type. Always has the value call.

Example: "call"
idstring

The id of the call.

Example: "123"
conversation_idstring or null

The id of the conversation associated with the call, if any.

Example: "456"
admin_idstring or null

The id of the admin associated with the call, if any.

Example: "789"
contact_idstring or null

The id of the contact associated with the call, if any.

Example: "6762f0dd1bb69f9f2193bb83"
statestring

The current state of the call.

Example: "completed"
initiated_atstring (string) or integer (integer)(datetime)
One of:

A date and time following the ISO8601 notation.

string(date-time)(string)

A date and time following the ISO8601 notation.

answered_atstring (string) or integer (integer)(datetime)
One of:

A date and time following the ISO8601 notation.

string(date-time)(string)

A date and time following the ISO8601 notation.

ended_atstring (string) or integer (integer)(datetime)
One of:

A date and time following the ISO8601 notation.

string(date-time)(string)

A date and time following the ISO8601 notation.

created_atstring (string) or integer (integer)(datetime)
One of:

A date and time following the ISO8601 notation.

string(date-time)(string)

A date and time following the ISO8601 notation.

updated_atstring (string) or integer (integer)(datetime)
One of:

A date and time following the ISO8601 notation.

string(date-time)(string)

A date and time following the ISO8601 notation.

recording_urlstring or null(uri)

API URL to download or redirect to the call recording if available.

Example: "https://api.intercom.io/calls/123/recording"
call_typestring

The type of call.

Example: "phone"
directionstring

The direction of the call.

Example: "outbound"
ended_reasonstring or null

The reason for the call end, if applicable.

Example: "completed"
phonestring or null

The phone number involved in the call, in E.164 format.

Example: "+15551234567"
fin_recording_urlstring or null(uri)

API URL to the AI Agent (Fin) call recording if available.

fin_transcription_urlstring or null(uri)

API URL to the AI Agent (Fin) call transcript if available.

{ "type": "call", "id": "123", "conversation_id": "456", "admin_id": "789", "contact_id": "6762f0dd1bb69f9f2193bb83", "state": "completed", "initiated_at": "2019-08-24T14:15:22Z", "answered_at": "2019-08-24T14:15:22Z", "ended_at": "2019-08-24T14:15:22Z", "created_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z", "recording_url": "https://api.intercom.io/calls/123/recording", "call_type": "phone", "direction": "outbound", "ended_reason": "completed", "phone": "+15551234567", "fin_recording_url": "http://example.com", "fin_transcription_url": "http://example.com" }

Request

Retrieve a paginated list of calls.

Security
bearerAuth
Query
pageinteger

The page of results to fetch. Defaults to first page

Example: page=1
per_pageinteger

How many results to display per page. Defaults to 25. Max 25.

Example: per_page=25
Headers
Intercom-Versionstring(intercom_version)

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

Default Unstable
Enum"1.0""1.1""1.2""1.3""1.4""2.0""2.1""2.2""2.3""2.4"
Example: Unstable
curl -i -X GET \
  'https://api.intercom.io/calls?page=1&per_page=25' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Intercom-Version: Unstable'

Responses

successful

Bodyapplication/json
typestring

String representing the object's type. Always has the value list.

Example: "list"
dataArray of objects(Call)

A list of calls.

total_countinteger

Total number of items available.

Example: 0
pagesobject or null(Cursor based pages)

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

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

Request

Retrieve a single call by id.

Security
bearerAuth
Path
idstringrequired

The id of the call to retrieve

Headers
Intercom-Versionstring(intercom_version)

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

Default Unstable
Enum"1.0""1.1""1.2""1.3""1.4""2.0""2.1""2.2""2.3""2.4"
Example: Unstable
curl -i -X GET \
  'https://api.intercom.io/calls/{id}' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Intercom-Version: Unstable'

Responses

successful

Bodyapplication/json
typestring

String representing the object's type. Always has the value call.

Example: "call"
idstring

The id of the call.

Example: "123"
conversation_idstring or null

The id of the conversation associated with the call, if any.

Example: "456"
admin_idstring or null

The id of the admin associated with the call, if any.

Example: "789"
contact_idstring or null

The id of the contact associated with the call, if any.

Example: "6762f0dd1bb69f9f2193bb83"
statestring

The current state of the call.

Example: "completed"
initiated_atstring (string) or integer (integer)(datetime)
One of:

A date and time following the ISO8601 notation.

string(date-time)(string)

A date and time following the ISO8601 notation.

answered_atstring (string) or integer (integer)(datetime)
One of:

A date and time following the ISO8601 notation.

string(date-time)(string)

A date and time following the ISO8601 notation.

ended_atstring (string) or integer (integer)(datetime)
One of:

A date and time following the ISO8601 notation.

string(date-time)(string)

A date and time following the ISO8601 notation.

created_atstring (string) or integer (integer)(datetime)
One of:

A date and time following the ISO8601 notation.

string(date-time)(string)

A date and time following the ISO8601 notation.

updated_atstring (string) or integer (integer)(datetime)
One of:

A date and time following the ISO8601 notation.

string(date-time)(string)

A date and time following the ISO8601 notation.

recording_urlstring or null(uri)

API URL to download or redirect to the call recording if available.

Example: "https://api.intercom.io/calls/123/recording"
call_typestring

The type of call.

Example: "phone"
directionstring

The direction of the call.

Example: "outbound"
ended_reasonstring or null

The reason for the call end, if applicable.

Example: "completed"
phonestring or null

The phone number involved in the call, in E.164 format.

Example: "+15551234567"
fin_recording_urlstring or null(uri)

API URL to the AI Agent (Fin) call recording if available.

fin_transcription_urlstring or null(uri)

API URL to the AI Agent (Fin) call transcript if available.

Response
application/json
{ "type": "call", "id": "123", "conversation_id": "456", "admin_id": "789", "contact_id": "6762f0dd1bb69f9f2193bb83", "state": "completed", "initiated_at": 1734537437, "answered_at": 1734537440, "ended_at": 1734537530, "created_at": 1734537437, "updated_at": 1734537531, "recording_url": "https://api.intercom.io/calls/123/recording", "call_type": "phone", "direction": "outbound", "ended_reason": "completed", "phone": "+15551234567", "fin_recording_url": null, "fin_transcription_url": "https://api.intercom.io/calls/123/transcript" }

Request

Redirects to a signed URL for the call's recording if it exists.

Security
bearerAuth
Path
idstringrequired

The id of the call

Headers
Intercom-Versionstring(intercom_version)

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

Default Unstable
Enum"1.0""1.1""1.2""1.3""1.4""2.0""2.1""2.2""2.3""2.4"
Example: Unstable
curl -i -X GET \
  'https://api.intercom.io/calls/{id}/recording' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Intercom-Version: Unstable'

Responses

Redirect to signed recording URL

Headers
Locationstring(uri)

The signed recording URL

Response
No content

Request

Returns the transcript for the specified call as a downloadable text file.

Security
bearerAuth
Path
idstringrequired

The id of the call

Headers
Intercom-Versionstring(intercom_version)

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

Default Unstable
Enum"1.0""1.1""1.2""1.3""1.4""2.0""2.1""2.2""2.3""2.4"
Example: Unstable
curl -i -X GET \
  'https://api.intercom.io/calls/{id}/transcript' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Intercom-Version: Unstable'

Responses

successful

Headers
Content-Dispositionstring

File attachment directive and suggested filename for the transcript

Example: "attachment; filename=transcription_data-2025-07-17.txt"
Bodytext/plain
string

Transcript text

Response
text/plain
[00:00:03] Teammate 1: "Hello, thanks for calling. How can I help today?"
[00:00:09] User: "I need help recovering access to my account."
[00:00:15] Teammate 1: "I can help with that. For security, I’ll ask a few generic verification questions."
[00:00:22] User: "Okay."
[00:00:28] Teammate 1: "Please confirm general details on the account (no sensitive data over this call)."
[00:00:35] User: "I can provide non-sensitive info."
[00:00:41] Teammate 1: "Thank you. I’ll initiate a standard account recovery process and send the next steps."
[00:00:48] User: "Great, thanks."
[00:00:53] Teammate 1: "You should receive a message shortly with instructions to complete recovery."

Request

Retrieve calls by a list of conversation ids and include transcripts when available. A maximum of 20 conversation_ids can be provided. If none are provided or more than 20 are provided, a 400 error is returned.

Security
bearerAuth
Headers
Intercom-Versionstring(intercom_version)

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

Default Unstable
Enum"1.0""1.1""1.2""1.3""1.4""2.0""2.1""2.2""2.3""2.4"
Example: Unstable
Bodyapplication/jsonrequired
conversation_idsArray of strings[ 1 .. 20 ] itemsrequired

A list of conversation ids to fetch calls for. Maximum 20.

curl -i -X POST \
  https://api.intercom.io/calls/search \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -H 'Intercom-Version: Unstable' \
  -d '{
    "conversation_ids": [
      "64619700005694",
      "64619700005695"
    ]
  }'

Responses

successful

Bodyapplication/json
typestring
Example: "list"
dataArray of objects(Call)
Response
application/json
{ "type": "list", "data": [ {} ] }