The intercom API reference.
The intercom API reference.
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.",
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.
The Intercom defined code of the workspace the company is associated to.
The custom attributes you have set on the company.
{ "type": "company", "id": "531ee472cce572a6ec000006", "name": "Blue Sun", "app_id": "ecahpwf5", "plan": { "type": "plan", "id": "269315", "name": "Pro" }, "company_id": "6", "remote_created_at": 1663597223, "created_at": 1663597223, "updated_at": 1663597223, "last_request_at": 1663597223, "size": 100, "website": "https://www.intercom.com", "industry": "Software", "monthly_spend": 100, "session_count": 100, "user_count": 100, "custom_attributes": { "paid_subscriber": true, "monthly_spend": 155.5, "team_mates": 9 }, "tags": { "type": "tag.list", "tags": [ … ] }, "segments": { "type": "segment.list", "segments": [ … ] } }
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.
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.
The company id you have defined for the company. Can't be updated
The URL for this company's website. Please note that the value specified here is not validated. Accepts any string.
A hash of key/value pairs containing any other data about the company you want Intercom to store.
curl -i -X POST \
https://api.intercom.io/companies \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-H 'Intercom-Version: Unstable' \
-d '{
"company_id": "company_remote_id",
"name": "my company",
"remote_created_at": 1374138000
}'
{ "type": "company", "company_id": "company_remote_id", "id": "67506105d5eefd6f04e7d00e", "app_id": "this_is_an_id147_that_should_be_at_least_", "name": "my company", "remote_created_at": 1374138000, "created_at": 1733320965, "updated_at": 1733320965, "monthly_spend": 0, "session_count": 0, "user_count": 0, "tags": { "type": "tag.list", "tags": [] }, "segments": { "type": "segment.list", "segments": [] }, "plan": {}, "custom_attributes": { "creation_source": "api" } }
You 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_id}
curl -i -X GET \
'https://api.intercom.io/companies?company_id=string&name=string&page=0&per_page=0&segment_id=string&tag_id=string' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Intercom-Version: Unstable'
{ "type": "list", "data": [ { … } ], "pages": { "type": "pages", "next": null, "page": 1, "per_page": 15, "total_pages": 1 }, "total_count": 1 }
curl -i -X GET \
'https://api.intercom.io/companies/{id}' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Intercom-Version: Unstable'
{ "type": "company", "company_id": "1", "id": "6750610cd5eefd6f04e7d021", "app_id": "this_is_an_id159_that_should_be_at_least_", "name": "company1", "remote_created_at": 1733320972, "created_at": 1733320972, "updated_at": 1733320972, "monthly_spend": 0, "session_count": 0, "user_count": 1, "tags": { "type": "tag.list", "tags": [] }, "segments": { "type": "segment.list", "segments": [] }, "plan": {}, "custom_attributes": {} }
curl -i -X PUT \
'https://api.intercom.io/companies/{id}' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Intercom-Version: Unstable'
{ "type": "company", "company_id": "1", "id": "6750610fd5eefd6f04e7d02b", "app_id": "this_is_an_id165_that_should_be_at_least_", "name": "company2", "remote_created_at": 1733320975, "created_at": 1733320975, "updated_at": 1733320975, "monthly_spend": 0, "session_count": 0, "user_count": 1, "tags": { "type": "tag.list", "tags": [] }, "segments": { "type": "segment.list", "segments": [] }, "plan": {}, "custom_attributes": {} }
curl -i -X DELETE \
'https://api.intercom.io/companies/{id}' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Intercom-Version: Unstable'
{ "id": "67506112d5eefd6f04e7d035", "object": "company", "deleted": true }
curl -i -X GET \
'https://api.intercom.io/companies/{id}/contacts' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Intercom-Version: Unstable'
{ "type": "list", "data": [], "total_count": 0, "pages": { "type": "pages", "page": 1, "per_page": 50, "total_pages": 0 } }
curl -i -X GET \
'https://api.intercom.io/companies/{id}/segments' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Intercom-Version: Unstable'
{ "type": "list", "data": [] }
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.
You can use pagination to limit the number of results returned. The default is 20
results per page. See the pagination section for more details on how to use the starting_after
param.
curl -i -X POST \
'https://api.intercom.io/companies/list?order=string&page=0&per_page=0' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Intercom-Version: Unstable'
{ "type": "list", "data": [ { … } ], "pages": { "type": "pages", "next": null, "page": 1, "per_page": 15, "total_pages": 1 }, "total_count": 1 }
The 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.
You can get the first page of companies by simply sending a GET request to the scroll endpoint. For subsequent requests you will need to use the scroll parameter from the response.
Since scroll is often used on large datasets network errors such as timeouts can be encountered. When this occurs you will see a HTTP 500 error with the following message: "Request failed due to an internal network error. Please restart the scroll operation." If this happens, you will need to restart your scroll query: It is not possible to continue from a specific point when using scroll.
curl -i -X GET \
'https://api.intercom.io/companies/scroll?scroll_param=string' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Intercom-Version: Unstable'
{ "type": "list", "data": [ { … } ], "pages": null, "total_count": null, "scroll_param": "7c2bc6a8-7312-4f0e-89ab-e1ef761ececd" }
curl -i -X POST \
'https://api.intercom.io/contacts/{id}/companies' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-H 'Intercom-Version: Unstable' \
-d '{
"id": "67506121d5eefd6f04e7d060"
}'
{ "type": "company", "company_id": "1", "id": "67506121d5eefd6f04e7d060", "app_id": "this_is_an_id197_that_should_be_at_least_", "name": "company6", "remote_created_at": 1733320993, "created_at": 1733320993, "updated_at": 1733320993, "monthly_spend": 0, "session_count": 0, "user_count": 1, "tags": { "type": "tag.list", "tags": [] }, "segments": { "type": "segment.list", "segments": [] }, "plan": {}, "custom_attributes": {} }
curl -i -X GET \
'https://api.intercom.io/contacts/{id}/companies' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Intercom-Version: Unstable'
successful
The majority of list resources in the API are paginated to allow clients to traverse data over multiple requests.
Their responses are likely to contain a pages object that hosts pagination links which a client can use to paginate through the data without having to construct a query. The link relations for the pages field are as follows.
{ "type": "list", "data": [ { … } ], "pages": { "type": "pages", "next": null, "page": 1, "per_page": 50, "total_pages": 1 }, "total_count": 1 }
curl -i -X DELETE \
'https://api.intercom.io/contacts/{contact_id}/companies/{id}' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Intercom-Version: Unstable'
{ "type": "company", "company_id": "1", "id": "67506126d5eefd6f04e7d070", "app_id": "this_is_an_id205_that_should_be_at_least_", "name": "company8", "remote_created_at": 1733320998, "created_at": 1733320998, "updated_at": 1733320998, "monthly_spend": 0, "session_count": 0, "user_count": 0, "tags": { "type": "tag.list", "tags": [] }, "segments": { "type": "segment.list", "segments": [] }, "plan": {}, "custom_attributes": {} }