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 URLAuthentication
All requests require a Bearer token in theAuthorization 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.
Pagination
List endpoints return paginated results. Uselimit (1-100, default 20) and cursor to page through results.
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.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 carriesis_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 returns429 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 anerror field: