Skip to main content

Intercom

Manage customers, companies, conversations, and more with Intercom API.

Intercom Logo

Authentication

This connector uses Token-based authentication.

info

Set up your connection in the Abstra Console before using it in your workflows.

How to use

Using the Smart Chat

Execute the action "CHOOSE_ONE_ACTION_BELOW" from my connector "YOUR_CONNECTOR_NAME" using the params "PARAMS_HERE".

Using the Web Editor

from abstra.connectors import run_connection_action

result = run_connection_action(
connection_name="your_connection_name",
action_name="your_action_name",
params={
"param1": "value1",
"param2": "value2"
})

Available Actions

This connector provides 160 actions:

ActionPurposeParameters
post_fin_voice_registerRegister 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 PhoneIntercom-Version (string)
data: {
. phone_number (string)
. call_id (string)
. source (string)
. data (object)
} (object) required
get_fin_voice_collect_by_idRetrieve information about a Fin Voice call using the external reference ID.id (integer)
Intercom-Version (string)
get_fin_voice_external_id_by_external_idRetrieve information about a Fin Voice call using the external call identifier.external_id (string)
Intercom-Version (string)
get_fin_voice_phone_number_by_phone_numberRetrieve 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.phone_number (string)
Intercom-Version (string)
get_meYou can view the currently authorised admin along with the embedded app object a 'workspace' in legacy terminology. 🚧 Single Sign On If you are building a custom 'Log in with Intercom' flow for your site, and you call the /me endpoint to identify the logged-in user, you should not accept any sign-ins from users with unverified email addresses as it poses a potential impersonation security risk.Intercom-Version (string)
put_admins_by_id_awayYou can set an Admin as away for the Inbox.id (integer)
Intercom-Version (string)
data: {
. away_mode_enabled (boolean)
. away_mode_reassign (boolean)
. away_status_reason_id (integer)
} (object) required
get_admins_activity_logsYou can get a log of activities by all admins in an app.Intercom-Version (string)
created_at_after (string) required
created_at_before (string)
get_adminsYou can fetch a list of admins for a given workspace.Intercom-Version (string)
get_admins_by_idYou can retrieve the details of a single admin.id (integer)
Intercom-Version (string)
get_ai_content_import_sourcesYou can retrieve a list of all content import sources for a workspace.Intercom-Version (string)
post_ai_content_import_sourcesYou can create a new content import source by sending a POST request to this endpoint.Intercom-Version (string)
data: {
. sync_behavior (string)
. status (string)
. url (string)
} (object) required
delete_ai_content_import_sources_by_idYou can delete a content import source by making a DELETE request this endpoint. This will also delete all external pages that were imported from this source.id (string)
Intercom-Version (string)
get_ai_content_import_sources_by_idRetrieve a content import sourceid (string)
Intercom-Version (string)
put_ai_content_import_sources_by_idYou can update an existing content import source.id (string)
Intercom-Version (string)
data: {
. sync_behavior (string)
. status (string)
. url (string)
} (object) required
get_ai_external_pagesYou can retrieve a list of all external pages for a workspace.Intercom-Version (string)
post_ai_external_pagesYou can create a new external page by sending a POST request to this endpoint. If an external page already exists with the specified source_id and external_id, it will be updated instead.Intercom-Version (string)
data: {
. title (string)
. html (string)
. url (string)
. ai_agent_availability (boolean)
. ai_copilot_availability (boolean)
. locale (string)
. source_id (integer)
. external_id (string)
} (object) required
delete_ai_external_pages_by_idSending a DELETE request for an external page will remove it from the content library UI and from being used for AI answers.id (string)
Intercom-Version (string)
get_ai_external_pages_by_idYou can retrieve an external page.id (string)
Intercom-Version (string)
put_ai_external_pages_by_idYou can update an existing external page if it was created via the API.id (string)
Intercom-Version (string)
data: {
. title (string)
. html (string)
. url (string)
. fin_availability (boolean)
. locale (string)
. source_id (integer)
. external_id (string)
} (object) required
get_articlesYou can fetch a list of all articles by making a GET request to https://api.intercom.io/articles. 📘 How are the articles sorted and ordered? Articles will be returned in descending order on the updated_at attribute. This means if you need to iterate through results then we'll show the most recently updated articles first.Intercom-Version (string)
post_articlesYou can create a new article by making a POST request to https://api.intercom.io/articles.Intercom-Version (string)
data: {
. title (string)
. description (string)
. body (string)
. author_id (integer)
. state (string)
. parent_id (integer)
. parent_type (string)
. translated_content
} (object) required
get_articles_by_idYou can fetch the details of a single article by making a GET request to https://api.intercom.io/articles/id.id (integer)
Intercom-Version (string)
put_articles_by_idYou can update the details of a single article by making a PUT request to https://api.intercom.io/articles/id.id (integer)
Intercom-Version (string)
data: {
. title (string)
. description (string)
. body (string)
. author_id (integer)
. state (string)
. parent_id (string)
. parent_type (string)
. translated_content
} (object) required
delete_articles_by_idYou can delete a single article by making a DELETE request to https://api.intercom.io/articles/id.id (integer)
Intercom-Version (string)
get_articles_searchYou can search for articles by making a GET request to https://api.intercom.io/articles/search.Intercom-Version (string)
phrase (string)
state (string)
help_center_id (integer)
highlight (boolean)
get_away_status_reasonsReturns a list of all away status reasons configured for the workspace, including deleted ones.Intercom-Version (string)
post_export_reporting_data_enqueueEnqueue a new reporting data export jobIntercom-Version (string)
data: {
. dataset_id (string)
. attribute_ids (array)
. start_time (integer)
. end_time (integer)
} (object) required
get_export_reporting_data_by_job_identifierGet export job statusjob_identifier (string)
Intercom-Version (string)
app_id (string) required
client_id (string) required
get_export_reporting_data_get_datasetsList available datasets and attributesIntercom-Version (string)
get_download_reporting_data_by_job_identifierDownload the data from a completed reporting data export job. Octet header required You will have to specify the header Accept: application/octet-stream when hitting this endpoint.job_identifier (string)
Intercom-Version (string)
Accept (string) required
app_id (string) required
post_fin_startInitialize Fin by passing it the user's message along with conversation history and user details. These additional pieces of context will be used by Fin to provide a better and more contextual answer to the user. % admonition type='warning' name='Managed Availability' % The Fin Agent API is currently under managed availability. Please reach out to your accounts team to discuss access. % /admonition % Once Fin is initialized, it progresses through a series of statuses such as thinking, awaitinIntercom-Version (string)
data: {
. conversation_id (string)
. message
. user
. attachments (array)
. conversation_metadata
} (object) required
post_fin_replyOnce Fin has returned a response to a user's message, its status will be awaiting_user_reply. If a user replies, use this endpoint to send this response to Fin. % admonition type='warning' name='Managed Availability' % The Fin Agent API is currently under managed availability. Please reach out to your accounts team to discuss access. % /admonition %Intercom-Version (string)
data: {
. conversation_id (string)
. message
. user
. attachments (array)
} (object) required
get_help_center_collectionsYou can fetch a list of all collections by making a GET request to https://api.intercom.io/help_center/collections. Collections will be returned in descending order on the updated_at attribute. This means if you need to iterate through results then we'll show the most recently updated collections first.Intercom-Version (string)
post_help_center_collectionsYou can create a new collection by making a POST request to https://api.intercom.io/help_center/collections.Intercom-Version (string)
data: {
. name (string)
. description (string)
. translated_content
. parent_id (string)
. help_center_id (integer)
} (object) required
get_help_center_collections_by_idYou can fetch the details of a single collection by making a GET request to https://api.intercom.io/help_center/collections/id.id (integer)
Intercom-Version (string)
put_help_center_collections_by_idYou can update the details of a single collection by making a PUT request to https://api.intercom.io/collections/id.id (integer)
Intercom-Version (string)
data: {
. name (string)
. description (string)
. translated_content
. parent_id (string)
} (object) required
delete_help_center_collections_by_idYou can delete a single collection by making a DELETE request to https://api.intercom.io/collections/id.id (integer)
Intercom-Version (string)
get_help_center_help_centers_by_idYou can fetch the details of a single Help Center by making a GET request to https://api.intercom.io/help_center/help_center/id.id (integer)
Intercom-Version (string)
get_help_center_help_centersYou can list all Help Centers by making a GET request to https://api.intercom.io/help_center/help_centers.Intercom-Version (string)
get_internal_articlesYou can fetch a list of all internal articles by making a GET request to https://api.intercom.io/internal_articles.Intercom-Version (string)
post_internal_articlesYou can create a new internal article by making a POST request to https://api.intercom.io/internal_articles.Intercom-Version (string)
data: {
. title (string)
. body (string)
. author_id (integer)
. owner_id (integer)
} (object) required
get_internal_articles_by_idYou can fetch the details of a single internal article by making a GET request to https://api.intercom.io/internal_articles/id.id (integer)
Intercom-Version (string)
put_internal_articles_by_idYou can update the details of a single internal article by making a PUT request to https://api.intercom.io/internal_articles/id.id (integer)
Intercom-Version (string)
data: {
. title (string)
. body (string)
. author_id (integer)
. owner_id (integer)
} (object) required
delete_internal_articles_by_idYou can delete a single internal article by making a DELETE request to https://api.intercom.io/internal_articles/id.id (integer)
Intercom-Version (string)
get_internal_articles_searchYou can search for internal articles by making a GET request to https://api.intercom.io/internal_articles/search.Intercom-Version (string)
folder_id (string)
post_companiesYou 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='warning' 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 creatIntercom-Version (string)
data: {
. name (string)
. company_id (string)
. plan (string)
. size (integer)
. website (string)
. industry (string)
. custom_attributes (object)
. remote_created_at (integer)
. monthly_spend (integer)
} (object) required
get_companiesYou can fetch a single company by passing in company_id or name. https://api.intercom.io/companies?name=name https://api.intercom.io/companies?company_id=company_id You can fetch all companies and filter by segment_id or tag_id as a query parameter. https://api.intercom.io/companies?tag_id=tag_id https://api.intercom.io/companies?segment_id=segment_idIntercom-Version (string)
name (string)
company_id (string)
tag_id (string)
segment_id (string)
page (integer)
per_page (integer)
get_companies_by_idYou can fetch a single company.id (string)
Intercom-Version (string)
put_companies_by_idYou can update a single company using the Intercom provisioned id. % admonition type='warning' name='Using company_id' % When updating a company it is not possible to update company_id. This can only be set once upon creation of the company. % /admonition %id (string)
Intercom-Version (string)
delete_companies_by_idYou can delete a single company.id (string)
Intercom-Version (string)
get_companies_by_id_contactsYou can fetch a list of all contacts that belong to a company.id (string)
Intercom-Version (string)
get_companies_by_id_segmentsYou can fetch a list of all segments that belong to a company.id (string)
Intercom-Version (string)
post_companies_listYou 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 APIhttps://deveIntercom-Version (string)
page (integer)
per_page (integer)
order (string)
get_companies_scrollThe list all companies functionality does not work well for huge datasets, and can result in errors and performance problems when paging deeply. The Scroll API provides an efficient mechanism for iterating over all companies in a dataset. - Each app can only have 1 scroll open at a time. You'll get an error message if you try to have more than one open per app. - If the scroll isn't used for 1 minute, it expires and calls with that scroll param will fail - If the end of the scroll is reacIntercom-Version (string)
scroll_param (string)
post_contacts_by_id_companiesYou can attach a company to a single contact.id (string)
Intercom-Version (string)
data: {
. id (string)
} (object) required
get_contacts_by_id_companiesYou can fetch a list of companies that are associated to a contact.id (string)
Intercom-Version (string)
delete_contacts_by_contact_id_companies_by_idYou can detach a company from a single contact.contact_id (string)
id (string)
Intercom-Version (string)
get_contacts_by_id_notesYou can fetch a list of notes that are associated to a contact.id (integer)
Intercom-Version (string)
post_contacts_by_id_notesYou can add a note to a single contact.id (integer)
Intercom-Version (string)
data: {
. body (string)
. contact_id (string)
. admin_id (string)
} (object) required
get_contacts_by_contact_id_segmentsYou can fetch a list of segments that are associated to a contact.contact_id (string)
Intercom-Version (string)
get_contacts_by_contact_id_subscriptionsYou can fetch a list of subscription types that are attached to a contact. These can be subscriptions that a user has 'opted-in' to or has 'opted-out' from, depending on the subscription type. This will return a list of Subscription Type objects that the contact is associated with. The data property will show a combined list of: 1.Opt-out subscription types that the user has opted-out from. 2.Opt-in subscription types that the user has opted-in to receiving.contact_id (string)
Intercom-Version (string)
post_contacts_by_contact_id_subscriptionsYou 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 wascontact_id (string)
Intercom-Version (string)
data: {
. id (string)
. consent_type (string)
} (object) required
delete_contacts_by_contact_id_subscriptions_by_idYou can remove a specific subscription from a contact. This will return a subscription type model for the subscription type that was removed from the contact.contact_id (string)
id (string)
Intercom-Version (string)
get_contacts_by_contact_id_tagsYou can fetch a list of all tags that are attached to a specific contact.contact_id (string)
Intercom-Version (string)
post_contacts_by_contact_id_tagsYou can tag a specific contact. This will return a tag object for the tag that was added to the contact.contact_id (string)
Intercom-Version (string)
data: {
. id (string)
} (object) required
delete_contacts_by_contact_id_tags_by_idYou can remove tag from a specific contact. This will return a tag object for the tag that was removed from the contact.contact_id (string)
id (string)
Intercom-Version (string)
put_contacts_by_idYou can update an existing contact ie. user or lead. % admonition type='info' % This endpoint handles both contact updates and custom object associations. See update a contact with an association to a custom object instance in the request/response examples to see the custom object association format. % /admonition %id (string)
Intercom-Version (string)
data (undefined) required
get_contacts_by_idYou can fetch the details of a single contact.id (string)
Intercom-Version (string)
delete_contacts_by_idYou can delete a single contact.id (string)
Intercom-Version (string)
post_contacts_mergeYou can merge a contact with a role of lead into a contact with a role of user.Intercom-Version (string)
data: {
. from (string)
. into (string)
} (object) required
post_contacts_searchYou 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. % admonition type='warning' name='Optimizing search queries' % Search queries can be complex, so optimizing them can help the performance of your search. Use the AND and OR opIntercom-Version (string)
data: {
. query
. pagination
} (object) required
get_contactsYou can fetch a list of all contacts ie. users or leads in your workspace. % admonition type='warning' name='Pagination' % You can use pagination to limit the number of results returned. The default is 50 results per page. See the pagination sectionhttps://developers.intercom.com/docs/build-an-integration/learn-more/rest-apis/pagination/ pagination-for-list-apis for more details on how to use the starting_after param. % /admonition %Intercom-Version (string)
post_contactsYou can create a new contact ie. user or lead.Intercom-Version (string)
data (undefined) required
get_contacts_find_by_external_id_by_external_idYou can fetch the details of a single contact by external ID. Note that this endpoint only supports users and not leads.external_id (string)
Intercom-Version (string)
post_contacts_by_id_archiveYou can archive a single contact.id (string)
Intercom-Version (string)
post_contacts_by_id_unarchiveYou can unarchive a single contact.id (string)
Intercom-Version (string)
post_contacts_by_id_blockBlock a single contact.brNote: conversations of the contact will also be archived during the process.brMore details in FAQ How do I block Inbox spam?https://www.intercom.com/help/en/articles/8838656-inbox-faqsid (string)
Intercom-Version (string)
post_conversations_by_conversation_id_tagsYou can tag a specific conversation. This will return a tag object for the tag that was added to the conversation.conversation_id (string)
Intercom-Version (string)
data: {
. id (string)
. admin_id (string)
} (object) required
delete_conversations_by_conversation_id_tags_by_idYou can remove tag from a specific conversation. This will return a tag object for the tag that was removed from the conversation.conversation_id (string)
id (string)
Intercom-Version (string)
data: {
. admin_id (string)
} (object) required
get_conversationsYou can fetch a list of all conversations. You can optionally request the result page size and the cursor to start after to fetch the result. % admonition type='warning' name='Pagination' % You can use pagination to limit the number of results returned. The default is 20 results per page. See the pagination sectionhttps://developers.intercom.com/docs/build-an-integration/learn-more/rest-apis/pagination/ pagination-for-list-apis for more details on how to use the starting_after param. % /admIntercom-Version (string)
per_page (integer)
starting_after (string)
post_conversationsYou can create a conversation that has been initiated by a contact ie. user or lead. % 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.Intercom-Version (string)
data: {
. from (object)
. body (string)
. created_at (integer)
. message_type (string)
} (object) required
get_conversations_by_idYou can fetch the details of a single conversation. This will return a single Conversation model with all its conversation parts. % admonition type='warning' name='Hard limit of 500 parts' % The maximum number of conversation parts that can be returned via the API is 500. If you have more than that we will return the 500 most recent conversation parts. % /admonition % For AI agent conversation metadata, please note that you need to have the agent enabled in your workspace, which is a paid feid (integer)
Intercom-Version (string)
display_as (string)
include_translations (boolean)
put_conversations_by_idYou can update an existing conversation. % admonition type='info' name='Replying and other actions' % If you want to reply to a coveration or take an action such as assign, unassign, open, close or snooze, take a look at the reply and manage endpoints. % /admonition % % admonition type='info' % This endpoint handles both conversation updates and custom object associations. See update a conversation with an association to a custom object instance in the request/response examples to seeid (integer)
Intercom-Version (string)
display_as (string)
data: {
. read (boolean)
. title (string)
. custom_attributes
. company_id (string)
} (object) required
delete_conversations_by_id% admonition type='warning' name='Irreversible operation' % Deleting a conversation is permanent and cannot be reversed. % /admonition % Deleting a conversation permanently removes it from the inbox. All sensitive data is deleted, including admin and user replies, conversation attributes, uploads, and related content. The conversation will still appear in reporting, though some data may be incomplete due to the deletion.id (integer)
Intercom-Version (string)
post_conversations_searchYou 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. % admonition type='warning' name='Optimizing search queries' % Search queries can be complex, so optimizing them can help the performance of your searcIntercom-Version (string)
data: {
. query
. pagination
} (object) required
post_conversations_by_id_replyYou can reply to a conversation with a message from an admin or on behalf of a contact, or with a note for admins.id (string)
Intercom-Version (string)
data (undefined) required
post_conversations_by_id_partsFor 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.id (string)
Intercom-Version (string)
data (undefined) required
post_conversations_by_id_customersYou can add participants who are contacts to a conversation, on behalf of either another contact or an admin. % admonition type='warning' 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 %id (string)
Intercom-Version (string)
data: {
. admin_id (string)
. customer (object)
} (object) required
delete_conversations_by_conversation_id_customers_by_contact_idYou can add participants who are contacts to a conversation, on behalf of either another contact or an admin. % admonition type='warning' 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 %conversation_id (string)
contact_id (string)
Intercom-Version (string)
data (undefined) required
post_conversations_redactYou 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 %Intercom-Version (string)
data (undefined) required
post_conversations_by_id_convertYou can convert a conversation to a ticket.id (integer)
Intercom-Version (string)
data: {
. ticket_type_id (string)
. attributes
} (object) required
post_custom_channel_events_notify_new_conversationNotifies Intercom that a new conversation was created in your custom channel/platform. This triggers conversation creation and workflow automations within Intercom for your custom channel integration. Note: This endpoint is currently under managed availability. Please reach out to your accounts team to discuss access and tailored, hands-on support.Intercom-Version (string) required
data: {
. event_id (string)
. external_conversation_id (string)
. contact
} (object) required
post_custom_channel_events_notify_new_messageNotifies Intercom that a new message was sent in a conversation on your custom channel/platform. This allows Intercom to process the message and trigger any relevant workflow automations. Note: This endpoint is currently under managed availability. Please reach out to your accounts team to discuss access and tailored, hands-on support.Intercom-Version (string) required
data (undefined) required
post_custom_channel_events_notify_quick_reply_selectedNotifies Intercom that a user selected a quick reply option in your custom channel/platform. This allows Intercom to process the response and trigger any relevant workflow automations. Note: This endpoint is currently under managed availability. Please reach out to your accounts team to discuss access and tailored, hands-on support.Intercom-Version (string) required
data (undefined) required
post_custom_channel_events_notify_attribute_collectedNotifies Intercom that a user provided a response to an attribute collector in your custom channel/platform. This allows Intercom to process the attribute and trigger any relevant workflow automations. Note: This endpoint is currently under managed availability. Please reach out to your accounts team to discuss access and tailored, hands-on support.Intercom-Version (string) required
data (undefined) required
post_custom_object_instances_by_custom_object_type_identifierCreate or update a custom object instancecustom_object_type_identifier (string)
Intercom-Version (string)
data: {
. external_id (string)
. external_created_at (integer)
. external_updated_at (integer)
. custom_attributes (object)
} (object) required
get_custom_object_instances_by_custom_object_type_identifierFetch a Custom Object Instance by external_id.custom_object_type_identifier (string)
external_id (string) required
Intercom-Version (string)
delete_custom_object_instances_by_custom_object_type_identifierDelete a single Custom Object instance by external_id.custom_object_type_identifier (string)
external_id (string) required
Intercom-Version (string)
get_custom_object_instances_by_custom_object_type_identifier_by_idFetch a Custom Object Instance by id.id (string)
custom_object_type_identifier (string)
Intercom-Version (string)
delete_custom_object_instances_by_custom_object_type_identifier_by_idDelete a single Custom Object instance using the Intercom defined id.id (string)
custom_object_type_identifier (string)
Intercom-Version (string)
get_data_attributesYou can fetch a list of all data attributes belonging to a workspace for contacts, companies or conversations.Intercom-Version (string)
model (string)
include_archived (boolean)
post_data_attributesYou can create a data attributes for a contact or a company.Intercom-Version (string)
data: {
. name (string)
. model (string)
. data_type (string)
. description (string)
. options (array)
. messenger_writable (boolean)
} (object) required
put_data_attributes_by_idYou can update a data attribute. 🚧 Updating the data type is not possible It is currently a dangerous action to execute changing a data attribute's type via the API. You will need to update the type via the UI instead.id (integer)
Intercom-Version (string)
data: {
. archived (boolean)
. description (string)
. options (array)
. messenger_writable (boolean)
} (object) required
post_eventsYou 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 apphttp://docs.intercom.io/configuring-Intercom/tracking-user-events-in-yIntercom-Version (string)
data: {
. event_name (string)
. created_at (integer)
. user_id (string)
. id (string)
. email (string)
. metadata (object)
} (object) required
get_events🚧 Please note that you can only 'list' events that are less than 90 days old. Event counts and summaries will still include your events older than 90 days but you cannot 'list' these events individually if they are older than 90 days The events belonging to a customer can be listed by sending a GET request to https://api.intercom.io/events with a user or lead identifier along with a type parameter. The identifier parameter can be one of user_id, email or intercom_user_id. The type parameteIntercom-Version (string)
filter (object) required
type (string) required
summary (boolean)
post_events_summariesCreate 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.Intercom-Version (string)
data: {
. user_id (string)
. event_summaries (object)
} (object) required
post_export_content_dataTo 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 shouldIntercom-Version (string)
data: {
. created_at_after (integer)
. created_at_before (integer)
} (object) required
get_export_content_data_by_job_identifierYou can view the status of your job by sending a GET request to the URL https://api.intercom.io/export/content/data/job_identifier - the job_identifier is the value returned in the response when you first created the export job. More on it can be seen in the Export Job Model. 🚧 Jobs expire after two days All jobs that have completed processing and are thus available to download from the provided URL will have an expiry limit of two days from when the export ob completed. After this, the datajob_identifier (string)
Intercom-Version (string)
post_export_cancel_by_job_identifierYou can cancel your jobjob_identifier (string)
Intercom-Version (string)
get_export_workflows_by_idExport a workflow configuration by its ID. This endpoint returns the complete workflow definition including its steps, targeting rules, and attributes. % admonition type='warning' name='Unstable API' % This API is currently in the Unstable version. Its behavior may change in future releases. % /admonition %id (string)
Intercom-Version (string)
get_download_content_data_by_job_identifierWhen a job has a status of complete, and thus a filled download_url, you can download your data by hitting that provided URL, formatted like so: https://api.intercom.io/download/content/data/xyz1234. Your exported message data will be streamed continuously back down to you in a gzipped CSV format. 📘 Octet header required You will have to specify the header Accept: application/octet-stream when hitting this endpoint.job_identifier (string)
Intercom-Version (string)
get_jobs_status_by_idRetrieve the status of job execution.id (string)
Intercom-Version (string)
post_messagesYou 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 untIntercom-Version (string)
data: {
. message_type (string)
. subject (string)
. body (string)
. template (string)
. from (object)
. to
. cc
. bcc
. created_at (integer)
. create_conversation_without_contact_reply (boolean)
} (object) required
get_news_news_itemsYou can fetch a list of all news itemsIntercom-Version (string)
post_news_news_itemsYou can create a news itemIntercom-Version (string)
data: {
. title (string)
. body (string)
. sender_id (integer)
. state (string)
. deliver_silently (boolean)
. labels (array)
. reactions (array)
. newsfeed_assignments (array)
} (object) required
get_news_news_items_by_idYou can fetch the details of a single news item.id (integer)
Intercom-Version (string)
put_news_news_items_by_idUpdate a news itemid (integer)
Intercom-Version (string)
data: {
. title (string)
. body (string)
. sender_id (integer)
. state (string)
. deliver_silently (boolean)
. labels (array)
. reactions (array)
. newsfeed_assignments (array)
} (object) required
delete_news_news_items_by_idYou can delete a single news item.id (integer)
Intercom-Version (string)
get_news_newsfeeds_by_id_itemsYou can fetch a list of all news items that are live on a given newsfeedid (string)
Intercom-Version (string)
get_news_newsfeedsYou can fetch a list of all newsfeedsIntercom-Version (string)
get_news_newsfeeds_by_idYou can fetch the details of a single newsfeedid (string)
Intercom-Version (string)
get_notes_by_idYou can fetch the details of a single note.id (integer)
Intercom-Version (string)
get_segmentsYou can fetch a list of all segments.Intercom-Version (string)
include_count (boolean)
get_segments_by_idYou can fetch the details of a single segment.id (string)
Intercom-Version (string)
get_subscription_typesYou can list all subscription types. A list of subscription type objects will be returned.Intercom-Version (string)
post_phone_call_redirectsYou 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.Intercom-Version (string)
data: {
. phone (string)
. custom_attributes
} (object) required
get_callsRetrieve a paginated list of calls.Intercom-Version (string)
page (integer)
per_page (integer)
get_calls_by_idRetrieve a single call by id.id (string)
Intercom-Version (string)
get_calls_by_id_recordingRedirects to a signed URL for the call's recording if it exists.id (string)
Intercom-Version (string)
get_calls_by_id_transcriptReturns the transcript for the specified call as a downloadable text file.id (string)
Intercom-Version (string)
post_calls_searchRetrieve 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.Intercom-Version (string)
data: {
. conversation_ids (array)
} (object) required
get_tagsYou can fetch a list of all tags for a given workspace.Intercom-Version (string)
post_tagsYou 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 thIntercom-Version (string)
data (undefined) required
get_tags_by_idYou can fetch the details of tags that are on the workspace by their id. This will return a tag object.id (string)
Intercom-Version (string)
delete_tags_by_idYou can delete the details of tags that are on the workspace by passing in the id.id (string)
Intercom-Version (string)
get_teamsThis will return a list of team objects for the App.Intercom-Version (string)
get_teams_by_idYou can fetch the details of a single team, containing an array of admins that belong to this team.id (string)
Intercom-Version (string)
get_ticket_statesYou can get a list of all ticket states for a workspace.Intercom-Version (string)
post_ticket_types_by_ticket_type_id_attributesYou can create a new attribute for a ticket type.ticket_type_id (string)
Intercom-Version (string)
data: {
. name (string)
. description (string)
. data_type (string)
. required_to_create (boolean)
. required_to_create_for_contacts (boolean)
. visible_on_create (boolean)
. visible_to_contacts (boolean)
. multiline (boolean)
. list_items (string)
. allow_multiple_values (boolean)
} (object) required
put_ticket_types_by_ticket_type_id_attributes_by_idYou can update an existing attribute for a ticket type.ticket_type_id (string)
id (string)
Intercom-Version (string)
data: {
. name (string)
. description (string)
. required_to_create (boolean)
. required_to_create_for_contacts (boolean)
. visible_on_create (boolean)
. visible_to_contacts (boolean)
. multiline (boolean)
. list_items (string)
. allow_multiple_values (boolean)
. archived (boolean)
} (object) required
get_ticket_typesYou can get a list of all ticket types for a workspace.Intercom-Version (string)
post_ticket_typesYou 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 Cheatsheethttps://twemoji-cheatsheet.vercel.app/Intercom-Version (string)
data: {
. name (string)
. description (string)
. category (string)
. icon (string)
. is_internal (boolean)
} (object) required
get_ticket_types_by_idYou can fetch the details of a single ticket type.id (string)
Intercom-Version (string)
put_ticket_types_by_idYou can update a ticket type. 📘 Updating a ticket type. For the icon propery, use an emoji from Twemoji Cheatsheethttps://twemoji-cheatsheet.vercel.app/id (string)
Intercom-Version (string)
data: {
. name (string)
. description (string)
. category (string)
. icon (string)
. archived (boolean)
. is_internal (boolean)
} (object) required
post_tickets_by_id_replyYou can reply to a ticket with a message from an admin or on behalf of a contact, or with a note for admins.id (string)
Intercom-Version (string)
data (undefined) required
post_tickets_by_ticket_id_tagsYou can tag a specific ticket. This will return a tag object for the tag that was added to the ticket.ticket_id (string)
Intercom-Version (string)
data: {
. id (string)
. admin_id (string)
} (object) required
delete_tickets_by_ticket_id_tags_by_idYou can remove tag from a specific ticket. This will return a tag object for the tag that was removed from the ticket.ticket_id (string)
id (string)
Intercom-Version (string)
data: {
. admin_id (string)
} (object) required
post_ticketsYou can create a new ticket.Intercom-Version (string)
data (undefined) required
post_tickets_enqueueEnqueues ticket creation for asynchronous processing, returning if the job was enqueued successfully to be processed. We attempt to perform a best-effort validation on inputs before tasks are enqueued. If the given parameters are incorrect, we won't enqueue the job.Intercom-Version (string)
data (undefined) required
put_tickets_by_idYou can update a ticket.id (string)
Intercom-Version (string)
data: {
. ticket_attributes (object)
. ticket_state_id (string)
. company_id (string)
. open (boolean)
. is_shared (boolean)
. snoozed_until (integer)
. admin_id (integer)
. assignee_id (string)
} (object) required
get_tickets_by_idYou can fetch the details of a single ticket.id (string)
Intercom-Version (string)
delete_tickets_by_id% admonition type='warning' name='Irreversible operation' % Deleting a ticket is permanent and cannot be reversed. % /admonition % Deleting a ticket permanently removes it from the inbox. All sensitive data is deleted, including admin and user replies, ticket attributes, uploads, and related content. The ticket will still appear in reporting, though some data may be incomplete due to the deletion.id (string)
Intercom-Version (string)
post_tickets_searchYou can search for multiple tickets by the value of their attributes in order to fetch exactly which ones you want. To search for tickets, you send a POST request to https://api.intercom.io/tickets/search. This will accept a query object in the body which will define your filters. % admonition type='warning' name='Optimizing search queries' % Search queries can be complex, so optimizing them can help the performance of your search. Use the AND and OR operators to combine multiple filters tIntercom-Version (string)
data: {
. query
. pagination
} (object) required
put_visitorsSending a PUT request to /visitors will result in an update of an existing Visitor. Option 1. You can update a visitor by passing in the user_id of the visitor in the Request body. Option 2. You can update a visitor by passing in the id of the visitor in the Request body.Intercom-Version (string)
data: {
. id (string)
. user_id (string)
. name (string)
. custom_attributes (object)
} (object) required
get_visitorsYou can fetch the details of a single visitor.Intercom-Version (string)
user_id (string) required
post_visitors_convertYou 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.Intercom-Version (string)
data: {
. type (string)
. user (object)
. visitor (object)
} (object) required
get_brandsRetrieves all brands for the workspace, including the default brand. The default brand id always matches the workspaceIntercom-Version (string)
get_brands_by_idFetches a specific brand by its unique identifierid (string)
Intercom-Version (string)
get_emailsLists all sender email address settings for the workspaceIntercom-Version (string)
get_emails_by_idFetches a specific email setting by its unique identifierid (string)
Intercom-Version (string)