The intercom API reference.
Intercom API (Unstable)
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.",
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.
Custom Object Instances
Everything about your Custom Object instances.
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.
Data Connector
A data connector allows you to make HTTP requests to external APIs from Intercom workflows and AI agents.
A description of what this data connector does.
The HTTP method used by the data connector.
Whether this data connector is assigned to Fin for direct usage.
The time the data connector was last updated.
{ "type": "data_connector", "id": "12345", "name": "Order Status Service", "description": "Fetches order status from external fulfillment API", "state": "live", "http_method": "post", "direct_fin_usage": false, "created_by_admin_id": "12345", "updated_by_admin_id": "12345", "created_at": "2025-11-15T09:30:00Z", "updated_at": "2026-01-20T14:22:15Z", "execution_results_url": "/data_connectors/12345/execution_results" }
Data Connector (Detail)
Full detail view of a data connector, returned by GET /data_connectors/{id}. Includes configuration, data inputs, response fields, and object mappings.
A description of what this data connector does.
The URL of the external API endpoint. Supports template variables like {{order_id}}.
The request body template. Supports template variables.
HTTP headers for the request. Header values are always redacted as "****" in responses.
The HTTP method used by the data connector.
The audience types this connector targets.
How the connector executes.
The expected response format from the connector.
The type of data transformation applied to the response.
Timeout in milliseconds for the client function, if applicable.
Whether OTP authentication is enabled for this connector.
The ID of the admin who last updated this connector.
The time the data connector was last updated.
{ "type": "data_connector", "id": "12345", "name": "Order Status Service", "description": "Fetches order status from external fulfillment API", "state": "live", "url": "https://api.example.com/orders/{{order_id}}/status", "body": "{\"text\": \"{{message}}\"}", "headers": [ { … } ], "http_method": "post", "direct_fin_usage": false, "audiences": [ "users", "leads" ], "execution_type": "server_side", "configuration_response_type": "test_response_type", "data_transformation_type": "full_access", "client_function_name": "string", "client_function_timeout_ms": 0, "data_inputs": [ { … } ], "response_fields": [ { … } ], "object_mappings": [ { … } ], "token_ids": [], "customer_authentication": false, "bypass_authentication": false, "validate_missing_attributes": true, "created_by_admin_id": "456", "updated_by_admin_id": "456", "created_at": "2025-11-15T09:30:00Z", "updated_at": "2026-01-20T14:22:15Z", "execution_results_url": "/data_connectors/12345/execution_results" }
Data Connector Execution Result
An execution result from a data connector HTTP request.
The type of object - data_connector.execution.
The unique identifier of the data connector that produced this result.
The HTTP method used for the request.
The type of error that occurred, if any.
A human-readable error message. Query parameters, userinfo, and fragments in URLs are redacted.
The type of source that triggered this execution.
The conversation associated with this execution, if any.
The request URL. Query parameters, userinfo, and fragments are redacted.
The request body sent to the external API.
{ "type": "data_connector.execution", "id": "99001", "data_connector_id": "12345", "success": true, "http_status": 200, "http_method": "post", "error_type": "3rd_party_error", "error_message": "Connection refused", "execution_time_ms": 245, "source_type": "workflow", "source_id": "5001", "conversation_id": "8001", "created_at": "2026-02-10T18:15:32Z", "request_url": "https://api.example.com/webhook", "request_body": "{\"message\": \"hello\"}", "response_body": "{\"status\": \"ok\"}", "raw_response_body": "{\"status\": \"ok\"}" }
- The production API serverhttps://api.intercom.io/data_connectors
- The european API serverhttps://api.eu.intercom.io/data_connectors
- The australian API serverhttps://api.au.intercom.io/data_connectors
- curl
- Node.js
- Ruby
- PHP
- Python
- Java
- Go
- C#
- R
curl -i -X GET \
'https://api.intercom.io/data_connectors?per_page=20&starting_after=string' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Intercom-Version: Unstable'{ "type": "list", "data": [ { … } ], "pages": { "type": "pages", "per_page": 20, "next": { … } } }
A description of what this data connector does.
The HTTP method used when calling the external API.
The URL of the external API endpoint. Supports template variables like {{order_id}}.
Whether the connector is used directly by Fin (true) or only in workflows (false). Defaults to false.
The user types this connector is available for.
Whether the connector requires customer authentication before executing. Defaults to false.
Whether authentication is bypassed entirely (public endpoint). Defaults to false.
Whether to validate that all required data inputs have values before executing.
A sample JSON response from the external API. Auto-generates response_fields and sets configuration_response_type to mock_response_type.
- The production API serverhttps://api.intercom.io/data_connectors
- The european API serverhttps://api.eu.intercom.io/data_connectors
- The australian API serverhttps://api.au.intercom.io/data_connectors
- curl
- Node.js
- Ruby
- PHP
- Python
- Java
- Go
- C#
- R
curl -i -X POST \
https://api.intercom.io/data_connectors \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-H 'Intercom-Version: Unstable' \
-d '{
"name": "Get Order Status",
"description": "Looks up order status from an external service",
"http_method": "get",
"url": "https://api.example.com/orders/{{order_id}}/status",
"direct_fin_usage": true,
"audiences": [
"leads",
"visitors"
],
"headers": [
{
"name": "Content-Type",
"value": "application/json"
}
],
"data_inputs": [
{
"name": "order_id",
"type": "string",
"description": "The order ID to look up",
"required": true,
"default_value": ""
}
],
"customer_authentication": true,
"bypass_authentication": false,
"validate_missing_attributes": true
}'Data connector created
A description of what this data connector does.
The URL of the external API endpoint. Supports template variables like {{order_id}}.
The request body template. Supports template variables.
HTTP headers for the request. Header values are always redacted as "****" in responses.
The HTTP method used by the data connector.
The audience types this connector targets.
How the connector executes.
The expected response format from the connector.
The type of data transformation applied to the response.
Timeout in milliseconds for the client function, if applicable.
Whether OTP authentication is enabled for this connector.
The ID of the admin who last updated this connector.
The time the data connector was last updated.
{ "type": "data_connector", "id": "125", "name": "Get Order Status", "description": "Looks up order status from an external service", "state": "draft", "http_method": "get", "direct_fin_usage": true, "audiences": [ "leads", "visitors" ], "execution_type": "server_side", "configuration_response_type": "test_response_type", "data_transformation_type": "full_access", "client_function_timeout_ms": 30000, "data_inputs": [ { … } ], "response_fields": [], "object_mappings": [], "token_ids": [], "customer_authentication": true, "bypass_authentication": false, "validate_missing_attributes": true, "created_by_admin_id": "128", "updated_by_admin_id": "128", "created_at": "2026-03-19T11:27:36Z", "updated_at": "2026-03-19T11:27:36Z", "execution_results_url": "/data_connectors/125/execution_results" }
- The production API serverhttps://api.intercom.io/data_connectors/{id}
- The european API serverhttps://api.eu.intercom.io/data_connectors/{id}
- The australian API serverhttps://api.au.intercom.io/data_connectors/{id}
- curl
- Node.js
- Ruby
- PHP
- Python
- Java
- Go
- C#
- R
curl -i -X GET \
'https://api.intercom.io/data_connectors/12345?state_version=draft' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Intercom-Version: Unstable'Data connector found
A description of what this data connector does.
The URL of the external API endpoint. Supports template variables like {{order_id}}.
The request body template. Supports template variables.
HTTP headers for the request. Header values are always redacted as "****" in responses.
The HTTP method used by the data connector.
The audience types this connector targets.
How the connector executes.
The expected response format from the connector.
The type of data transformation applied to the response.
Timeout in milliseconds for the client function, if applicable.
Whether OTP authentication is enabled for this connector.
The ID of the admin who last updated this connector.
The time the data connector was last updated.
{ "type": "data_connector", "id": "12345", "name": "Order Status Service", "description": "Fetches order status from external fulfillment API", "state": "live", "http_method": "post", "direct_fin_usage": false, "audiences": [ "users", "leads" ], "execution_type": "server_side", "configuration_response_type": "test_response_type", "data_transformation_type": null, "client_function_name": null, "client_function_timeout_ms": null, "data_inputs": [ { … } ], "response_fields": [ { … } ], "object_mappings": [], "token_ids": [], "customer_authentication": false, "bypass_authentication": false, "validate_missing_attributes": null, "created_by_admin_id": "456", "updated_by_admin_id": "456", "created_at": "2025-11-15T09:30:00Z", "updated_at": "2026-01-20T14:22:15Z", "execution_results_url": "/data_connectors/12345/execution_results" }
- The production API serverhttps://api.intercom.io/data_connectors/{id}
- The european API serverhttps://api.eu.intercom.io/data_connectors/{id}
- The australian API serverhttps://api.au.intercom.io/data_connectors/{id}
- curl
- Node.js
- Ruby
- PHP
- Python
- Java
- Go
- C#
- R
curl -i -X DELETE \
https://api.intercom.io/data_connectors/12345 \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Intercom-Version: Unstable'{ "id": "125", "object": "data_connector", "deleted": true }
The HTTP method used by the data connector.
The URL of the external API endpoint. Supports template variables like {{order_id}}.
The audience types this connector targets.
The input parameters accepted by this data connector. Replaces all existing inputs.
Whether OTP authentication is enabled for this connector.
Whether to validate missing attributes before execution.
A sample JSON response from the external API. Auto-generates response_fields and sets configuration_response_type to mock_response_type.
- The production API serverhttps://api.intercom.io/data_connectors/{id}
- The european API serverhttps://api.eu.intercom.io/data_connectors/{id}
- The australian API serverhttps://api.au.intercom.io/data_connectors/{id}
- curl
- Node.js
- Ruby
- PHP
- Python
- Java
- Go
- C#
- R
curl -i -X PATCH \
https://api.intercom.io/data_connectors/12345 \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-H 'Intercom-Version: Unstable' \
-d '{
"name": "Updated Connector Name",
"description": "Updated description"
}'Data connector updated
A description of what this data connector does.
The URL of the external API endpoint. Supports template variables like {{order_id}}.
The request body template. Supports template variables.
HTTP headers for the request. Header values are always redacted as "****" in responses.
The HTTP method used by the data connector.
The audience types this connector targets.
How the connector executes.
The expected response format from the connector.
The type of data transformation applied to the response.
Timeout in milliseconds for the client function, if applicable.
Whether OTP authentication is enabled for this connector.
The ID of the admin who last updated this connector.
The time the data connector was last updated.
{ "type": "data_connector", "id": "12345", "name": "Updated Connector Name", "description": "Updated description", "state": "draft", "http_method": "post", "direct_fin_usage": false, "audiences": [ "users", "leads" ], "execution_type": "server_side", "configuration_response_type": "test_response_type", "data_transformation_type": null, "client_function_name": null, "client_function_timeout_ms": null, "data_inputs": [ { … } ], "response_fields": [], "object_mappings": [], "token_ids": [], "customer_authentication": false, "bypass_authentication": false, "validate_missing_attributes": false, "created_by_admin_id": "456", "updated_by_admin_id": "456", "created_at": "2025-11-15T09:30:00Z", "updated_at": "2026-03-24T14:22:15Z", "execution_results_url": "/data_connectors/12345/execution_results" }
Request
Retrieve paginated execution logs for a specific data connector. Results from the last hour are returned by default. Use start_ts and end_ts to customize the time range.
Request/response bodies and request URL are excluded by default. Use include_bodies=true to include bodies. Use include_request_url=true to include the sanitised request URL.
Cursor for pagination. Use the value from pages.next.starting_after in a previous response.
Filter by error type.
Include request/response bodies in the response (default false).
- The production API serverhttps://api.intercom.io/data_connectors/{data_connector_id}/execution_results
- The european API serverhttps://api.eu.intercom.io/data_connectors/{data_connector_id}/execution_results
- The australian API serverhttps://api.au.intercom.io/data_connectors/{data_connector_id}/execution_results
- curl
- Node.js
- Ruby
- PHP
- Python
- Java
- Go
- C#
- R
curl -i -X GET \
'https://api.intercom.io/data_connectors/12345/execution_results?per_page=10&starting_after=string&success=true&error_type=request_configuration_error&start_ts=0&end_ts=0&include_bodies=true&include_request_url=true' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Intercom-Version: Unstable'{ "type": "list", "data": [ { … }, { … } ], "pages": { "type": "pages", "per_page": 10, "next": { … } } }
- The production API serverhttps://api.intercom.io/data_connectors/{data_connector_id}/execution_results/{id}
- The european API serverhttps://api.eu.intercom.io/data_connectors/{data_connector_id}/execution_results/{id}
- The australian API serverhttps://api.au.intercom.io/data_connectors/{data_connector_id}/execution_results/{id}
- curl
- Node.js
- Ruby
- PHP
- Python
- Java
- Go
- C#
- R
curl -i -X GET \
https://api.intercom.io/data_connectors/12345/execution_results/99001 \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Intercom-Version: Unstable'successful
The type of object - data_connector.execution.
The unique identifier of the data connector that produced this result.
The HTTP method used for the request.
The type of error that occurred, if any.
A human-readable error message. Query parameters, userinfo, and fragments in URLs are redacted.
The type of source that triggered this execution.
The conversation associated with this execution, if any.
The request URL. Query parameters, userinfo, and fragments are redacted.
The request body sent to the external API.
{ "type": "data_connector.execution", "id": "99001", "data_connector_id": "12345", "success": true, "http_status": 200, "http_method": "post", "execution_time_ms": 150, "source_type": "workflow", "source_id": "5001", "conversation_id": "8001", "created_at": "2026-02-10T18:15:32Z", "request_url": "https://api.example.com/webhook", "request_body": "{\"channel\": \"#alerts\", \"text\": \"Conversation updated\"}", "response_body": "{\"ok\": true}", "raw_response_body": "{\"ok\": true}" }