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

SchemasOperations

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.",

SchemasOperations

Articles

Everything about your Articles

SchemasOperations

Away Status Reasons

Everything about your Away Status Reasons

Operations

Brands

Everything about your Brands

SchemasOperations

Calls

Everything about your Calls

SchemasOperations

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)
answered_atstring (string) or integer (integer)(datetime)
One of:

A date and time following the ISO8601 notation.

string(date-time)(string)
ended_atstring (string) or integer (integer)(datetime)
One of:

A date and time following the ISO8601 notation.

string(date-time)(string)
created_atstring (string) or integer (integer)(datetime)
One of:

A date and time following the ISO8601 notation.

string(date-time)(string)
updated_atstring (string) or integer (integer)(datetime)
One of:

A date and time following the ISO8601 notation.

string(date-time)(string)
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"
transcription_urlstring or null(uri)

API URL to the call transcript if available.

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", "transcription_url": "http://example.com", "call_type": "phone", "direction": "outbound", "ended_reason": "completed", "phone": "+15551234567", "fin_recording_url": "http://example.com", "fin_transcription_url": "http://example.com" }

Register a Fin Voice call

Request

Register a Fin Voice call with Intercom. This endpoint creates an external reference that links an external call identifier to an Intercom call and conversation. The call can be from different sources:

  • AWS Connect (default)
  • Five9
  • Zoom Phone
Security
bearerAuth
Bodyapplication/json
phone_numberstringrequired

Phone number in E.164 format for the call

Example: "+1234567890"
call_idstringrequired

External call identifier from the call provider

Example: "call-123-abc"
sourcestring

Source of the call. Can be "five9", "zoom_phone", or defaults to "aws_connect"

Enum"five9""zoom_phone""aws_connect"
Example: "aws_connect"
dataobject or null

Additional metadata about the call

Example: {"key":"value"}
curl -i -X POST \
  https://api.intercom.io/fin_voice/register \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "phone_number": "+1234567890",
    "call_id": "call-123-abc",
    "source": "aws_connect",
    "data": {
      "key": "value"
    }
  }'

Responses

successful

Bodyapplication/json
idinteger

The unique identifier for the external reference

Example: 12345
app_idinteger

The workspace identifier

Example: 12345
user_phone_numberstring

Phone number in E.164 format for the call

Example: "+1234567890"
statusstring

Status of the call. Can be "registered", "in-progress", or a resolution state

Example: "registered"
intercom_call_idstring or null

The Intercom call identifier, if the call has been matched

Example: "1234"
external_call_idstring

The external call identifier from the call provider

Example: "call-123-abc"
intercom_conversation_idstring or null

The Intercom conversation identifier, if a conversation has been created

Example: "5678"
call_transcriptArray of objects

Array of transcript entries for the call

Example: []
call_summarystring

Summary of the call conversation, truncated to 256 characters. Empty string if no summary available.

Example: "Customer called about billing issue..."
intentArray of objects

Array of intent classifications for the call

Example: []
Response
application/json
{ "id": 12345, "app_id": 12345, "user_phone_number": "+1234567890", "status": "registered", "intercom_call_id": "1234", "external_call_id": "call-123-abc", "intercom_conversation_id": "5678", "call_transcript": [], "call_summary": "Customer called about billing issue...", "intent": [] }

Collect Fin Voice call by ID

Request

Retrieve information about a Fin Voice call using the external reference ID.

Security
bearerAuth
Path
idintegerrequired

The external reference ID

curl -i -X GET \
  'https://api.intercom.io/fin_voice/collect/{id}' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

successful

Bodyapplication/json
idinteger

The unique identifier for the external reference

Example: 12345
app_idinteger

The workspace identifier

Example: 12345
user_phone_numberstring

Phone number in E.164 format for the call

Example: "+1234567890"
statusstring

Status of the call. Can be "registered", "in-progress", or a resolution state

Example: "registered"
intercom_call_idstring or null

The Intercom call identifier, if the call has been matched

Example: "1234"
external_call_idstring

The external call identifier from the call provider

Example: "call-123-abc"
intercom_conversation_idstring or null

The Intercom conversation identifier, if a conversation has been created

Example: "5678"
call_transcriptArray of objects

Array of transcript entries for the call

Example: []
call_summarystring

Summary of the call conversation, truncated to 256 characters. Empty string if no summary available.

Example: "Customer called about billing issue..."
intentArray of objects

Array of intent classifications for the call

Example: []
Response
application/json
{ "id": 12345, "app_id": 12345, "user_phone_number": "+1234567890", "status": "registered", "intercom_call_id": "1234", "external_call_id": "call-123-abc", "intercom_conversation_id": "5678", "call_transcript": [], "call_summary": "Customer called about billing issue...", "intent": [] }

Collect Fin Voice call by external ID

Request

Retrieve information about a Fin Voice call using the external call identifier.

Security
bearerAuth
Path
external_idstringrequired

The external call identifier from the call provider

curl -i -X GET \
  'https://api.intercom.io/fin_voice/external_id/{external_id}' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

successful

Bodyapplication/json
idinteger

The unique identifier for the external reference

Example: 12345
app_idinteger

The workspace identifier

Example: 12345
user_phone_numberstring

Phone number in E.164 format for the call

Example: "+1234567890"
statusstring

Status of the call. Can be "registered", "in-progress", or a resolution state

Example: "registered"
intercom_call_idstring or null

The Intercom call identifier, if the call has been matched

Example: "1234"
external_call_idstring

The external call identifier from the call provider

Example: "call-123-abc"
intercom_conversation_idstring or null

The Intercom conversation identifier, if a conversation has been created

Example: "5678"
call_transcriptArray of objects

Array of transcript entries for the call

Example: []
call_summarystring

Summary of the call conversation, truncated to 256 characters. Empty string if no summary available.

Example: "Customer called about billing issue..."
intentArray of objects

Array of intent classifications for the call

Example: []
Response
application/json
{ "id": 12345, "app_id": 12345, "user_phone_number": "+1234567890", "status": "registered", "intercom_call_id": "1234", "external_call_id": "call-123-abc", "intercom_conversation_id": "5678", "call_transcript": [], "call_summary": "Customer called about billing issue...", "intent": [] }

Collect Fin Voice call by phone number

Request

Retrieve information about a Fin Voice call using the phone number. Returns the most recent matched call for the given phone number, ordered by creation date.

Security
bearerAuth
Path
phone_numberstringrequired

Phone number in E.164 format

curl -i -X GET \
  'https://api.intercom.io/fin_voice/phone_number/{phone_number}' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

Unauthorized

Bodyapplication/json
typestringrequired

The type is error.list

Example: "error.list"
request_idstring or null(uuid)
Example: "f93ecfa8-d08a-4325-8694-89aeb89c8f85"
errorsArray of objectsrequired

An array of one or more error objects

errors[].​codestringrequired

A string indicating the kind of error, used to further qualify the HTTP response code

Example: "unauthorized"
errors[].​messagestring or null

Optional. Human readable description of the error.

Example: "Access Token Invalid"
errors[].​fieldstring or null

Optional. Used to identify a particular field or query parameter that was in error.

Example: "email"
Response
application/json
{ "type": "error.list", "request_id": "f93ecfa8-d08a-4325-8694-89aeb89c8f85", "errors": [ {} ] }

List all calls

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

Get a call

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)
answered_atstring (string) or integer (integer)(datetime)
One of:

A date and time following the ISO8601 notation.

string(date-time)(string)
ended_atstring (string) or integer (integer)(datetime)
One of:

A date and time following the ISO8601 notation.

string(date-time)(string)
created_atstring (string) or integer (integer)(datetime)
One of:

A date and time following the ISO8601 notation.

string(date-time)(string)
updated_atstring (string) or integer (integer)(datetime)
One of:

A date and time following the ISO8601 notation.

string(date-time)(string)
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"
transcription_urlstring or null(uri)

API URL to the call transcript if available.

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", "transcript_url": "https://api.intercom.io/calls/123/transcript", "call_type": "phone", "direction": "outbound", "ended_reason": "completed", "phone": "+15551234567", "fin_recording_url": "https://api.intercom.io/calls/456/recording", "fin_transcription_url": "https://api.intercom.io/calls/456/transcript" }

Get call recording by call id

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

Get call transcript by call id

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."

List calls with transcripts

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": [ {} ] }

Companies

Everything about your Companies

SchemasOperations

Contacts

Everything about your contacts

SchemasOperations

Conversations

Everything about your Conversations

SchemasOperations

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.

SchemasOperations

Data Attributes

Everything about your Data Attributes

SchemasOperations

Data Events

Everything about your Data Events

SchemasOperations

Data Export

Everything about your Data Exports

SchemasOperations

Emails

Everything about your Emails

SchemasOperations

Help Center

Everything about your Help Center

SchemasOperations

Internal Articles

Everything about your Internal Articles

SchemasOperations

Jobs

Everything about jobs

SchemasOperations

Macros

Operations related to saved replies (macros) in conversations

SchemasOperations

Messages

Everything about your messages

SchemasOperations

News

Everything about your News

SchemasOperations

Notes

Everything about your Notes

SchemasOperations

Reporting Data Export

Everything about Reporting Data Export. See this article for details on using the data to generate various metrics.

Operations

Segments

Everything about your Segments

SchemasOperations

Subscription Types

Everything about subscription types

SchemasOperations

Switch

Everything about Switch

Operations

Tags

Everything about tags

SchemasOperations

Teams

Everything about your Teams

SchemasOperations

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

SchemasOperations

Visitors

Everything about your Visitors

Operations

Models

Schemas

WhatsApp

Operations