Skip to main content
The Conduit API is only available on the v3 plan. Contact support@conduit.ai to enable API access for your workspace.

Overview

The Conduit API gives you programmatic access to contacts, conversations, tickets, calls, escalations, custom attributes, knowledge base, and workspace metadata. Read and write endpoints are available depending on your token’s access level. All endpoints are REST-based and return JSON. Base URL

Authentication

All requests require a Bearer token in the Authorization header. Generate API tokens from Settings > API & MCP. The setting is personal, so tokens can grant access to one or more workspaces where you are an admin.
Tokens are scoped to one or more workspaces. Use the List Workspaces endpoint to discover which workspaces your token can access.

Pagination

List endpoints return paginated results. Use limit (1-100, default 20) and cursor to page through results.
Pass next_cursor as the cursor query parameter in your next request to fetch the next page. When has_more is false, you’ve reached the end.

Polling for new activity

Cursors page through a result set once. Keeping an external system in sync needs the opposite: only what has changed since you last looked. Two timestamp filters cover that.
1

Find threads that moved

Call List Conversations with updated_after set to the highest updated_at you have already stored.
2

Fetch only the new messages in each thread

For each conversation returned, call List Conversation Messages with created_after set to the highest created_at you have stored for that thread. This replaces re-paging the whole transcript.
Both filters are inclusive (at or after), and created_at is truncated to the millisecond, so the message on the boundary is normally returned again. Deduplicate on the message id rather than assuming every result is new. created_after filters on created_at (when Conduit recorded the message), not sent_at (when the channel says it was sent). Those differ for messages imported from a connected channel, and only created_at moves forward as Conduit observes messages, so it is the safe watermark. Using sent_at as your cursor will eventually skip a backdated import.

Telling AI replies from operator replies

Every message carries is_sent_by_autopilot. It is true only when Conduit’s AI agent generated and sent the message, and false for operator replies, workflow sends, and messages ingested from a connected channel’s own UI. Use the flag directly. Do not infer automation from sender.user_id: AI sends usually leave it null, but so do host replies typed in an OTA’s own UI and messages sent by workflows, and a small number of AI sends do carry a user id.

Rate Limits

By default, API requests are limited to 120 requests per minute per workspace. If you exceed the limit, the API returns 429 Too Many Requests with a Retry-After header indicating when you can retry. Some workspaces may have higher limits based on plan or entitlement. See Rate Limits for details.

Errors

All errors return a JSON object with an error field: