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": "Slack Notification Service", "description": "Posts conversation updates to Slack channel", "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 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": "Slack Notification Service", "description": "Posts conversation updates to Slack channel", "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": "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.
- 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 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 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": "Slack Notification Service", "description": "Posts conversation updates to Slack channel", "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 }
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}" }
Fin Agent
Access Fin programmatically via the Fin Agent API endpoints.
The Fin Agent API is currently under managed availability. Please reach out to your accounts team to discuss access and tailored, hands-on support.
Integration is centered around two endpoints (/fin/start and /fin/reply) and a set of webhook events that notify your application of Fin's status and responses.
Webhook Events
Configure a webhook endpoint in the Fin Agent API settings to receive events. See the setup guide for configuration details.
fin_status_updated- Fired when Fin's status changes (escalated, resolved, complete)fin_replied- Fired when Fin sends a reply to the user
All webhook requests include an X-Fin-Agent-API-Webhook-Signature header for request validation.