Everything an AI agent can do with the Dixa API.

A reference guide for building AI agents: every method, how to authenticate, and the permissions each one needs.

Endpoints39
API versionv1
Last updated23 June 2026
Orientation

How the Dixa API works.

The Dixa API is how an app or AI agent works with a Dixa customer service workspace: reading and creating conversations, replying to a customer or adding an internal note, closing or transferring a conversation, and managing end users, agents, teams, queues, and tags. Access is granted through a single API token created by an administrator, and that token is organization-scoped with no per-endpoint permissions, so it reaches everything the API exposes across the organization. A conversation event, like a message added or a conversation closed, can be pushed to a subscribed webhook.

39Endpoints
10Capability groups
19Read
20Write
0Permissions
Authentication
Dixa authenticates with an API token sent as a Bearer token in the Authorization header. The token is created by an administrator in Settings, under Integrations, on the API Tokens tab, with 'Dixa API' selected as the version. Agents cannot generate tokens. The same token is used for every call, and there is no OAuth flow for the core API.
Permissions
A Dixa API token is organization-scoped and has no granular per-endpoint scopes. It carries the access of the whole organization, so any code holding the token can read and write across all conversations, end users, agents, teams, and settings the API exposes. There is no built-in way to limit a token to read-only or to a single area, which is why a gateway in front of the token matters for least-privilege access.
Versioning
Dixa runs a current v1 API, called the Dixa API, at https://dev.dixa.io. It replaces an older Integrations API at integrations.dixa.io, which Dixa is sunsetting and has published a migration guide for. The token chooses which API it targets, set when the token is created, and new work should use the 'Dixa API' v1 token.
Data model
Dixa is resource-oriented JSON over HTTPS. The core resource is a conversation, which holds messages and internal notes, sits in a queue, is handled by an agent on a team, is requested by an end user, and can carry tags and custom attributes. A conversation runs on a channel, like email, chat, or phone. A state change, like a message added or a conversation closed, can be pushed to a webhook subscription.
Connect & authenticate

Connection & authentication methods.

How an app or AI agent connects to Dixa determines what it can reach. There is a route for making calls and a route for receiving events, and each is governed by the API token behind it, which carries the access of the whole organization.

Ways to connect

REST API (Dixa API v1)

The v1 Dixa API answers at https://dev.dixa.io and uses JSON request and response bodies. A call authenticates with an API token sent as a Bearer token in the Authorization header. The token is created by an administrator in Dixa and carries the access of the whole organization. This API replaces the older Integrations API.

Best forConnecting an app or AI agent to Dixa.
Governed byThe API token and the organization access it carries.
Docs ↗

Webhooks

Dixa POSTs a JSON payload to a subscribed HTTPS URL when a conversation event fires, like ConversationCreated, ConversationMessageAdded, or ConversationClosed. Each delivery carries an X-DIXA-SIGNATURE header, a comma-separated timestamp and HMAC signature, so the receiver can verify the payload came from Dixa using the subscription's verification secret.

Best forReceiving Dixa conversation events at an app or AI agent.
Governed byThe verification secret on the subscription.
Docs ↗
Authentication

API token

A Dixa API token is created by an administrator in Settings, under Integrations, on the API Tokens tab, choosing the 'Dixa API' version. It is sent as a Bearer token in the Authorization header. The token is organization-scoped, with no granular per-endpoint scopes, so it carries the access of the whole organization and any agent given it can read and write across all conversations, users, and settings the API exposes.

TokenBearer API token (Authorization: Bearer)
Best forServer-side calls and integrations.
Docs ↗
Capability map

What an AI agent can do in Dixa.

The Dixa API is split into areas an agent can act on, like conversations, end users, agents, teams, queues, and tags. Each area has its own methods, and writes can reply to a customer, close a ticket, or permanently anonymize personal data.

Conversations

7 endpoints

Create, read, close, reopen, and transfer conversations, and add messages to them.

Writes here change real conversation data and can reply to customers.
View endpoints

Messages & notes

4 endpoints

Read a conversation's messages, add a message, and add or list internal notes.

Writes here send messages or add notes to a real conversation.
View endpoints

Tags

4 endpoints

Create tags, list them, and add or remove tags on a conversation.

Writes here change real tag data on conversations.
View endpoints

End users (contacts)

4 endpoints

Create, read, and update end users, and read the conversations they requested.

Writes here change real customer contact records.
View endpoints

Agents

4 endpoints

Create, list, read, and update agents, and read an agent's presence status.

Writes here change real agent accounts.
View endpoints

Teams

4 endpoints

Create teams, list them, and list or change a team's members.

Writes here change real team membership.
View endpoints

Queues

3 endpoints

Create queues, list them, and assign agents to a queue.

Writes here change real queue routing.
View endpoints

Custom attributes

3 endpoints

List custom attribute definitions, and set custom attributes on end users and conversations.

Writes here change real custom attribute values.
View endpoints

Analytics & metrics

3 endpoints

List available metrics and records, and fetch aggregated or unaggregated metric data.

Reads here return reporting and performance data.
View endpoints

Webhooks

3 endpoints

Create, list, read, patch, and delete webhook subscriptions, and read their delivery status.

Writes here change where conversation events are delivered.
View endpoints
Endpoint reference

Every Dixa API method.

Filter by method, access, or permission, or search any path. Select a row for version detail, rate limits, the related webhook event, and the source.

MethodEndpointWhat it doesAccessPermissionVersion

Conversations

Create, read, close, reopen, and transfer conversations, and add messages to them.7

A token reaches every conversation in the organization; Dixa has no per-endpoint scopes.

Acts onconversation
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventConversationCreated
Rate limitStandard limits apply

Read-only; the token can read any conversation in the organization.

Acts onconversation
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Closes a real customer conversation.

Acts onconversation
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventConversationClosed
Rate limitStandard limits apply

Returns a closed conversation to an active state.

Acts onconversation
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Re-routes a live conversation to a different queue.

Acts onconversation
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventConversationTransferred
Rate limitStandard limits apply

Irreversibly removes personal data, used for data-subject erasure requests.

Acts onconversation
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only; there is no plain list-all endpoint, so search is how conversations are found.

Acts onconversation
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Messages & notes

Read a conversation's messages, add a message, and add or list internal notes.4

Read-only; returns the message history of a conversation.

Acts onmessage
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Sends a real message; an outbound message is delivered to the customer.

Acts onmessage
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventConversationMessageAdded
Rate limitStandard limits apply

A note is internal and not sent to the customer.

Acts onnote
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventConversationNoteAdded
Rate limitStandard limits apply

Read-only.

Acts onnote
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Tags

Create tags, list them, and add or remove tags on a conversation.4

Adds a reusable tag to the organization's tag list.

Acts ontag
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts ontag
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Tags a real conversation.

Acts ontag
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventConversationTagAdded
Rate limitStandard limits apply

Removes a tag from a real conversation.

Acts ontag
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventConversationTagRemoved
Rate limitStandard limits apply

End users (contacts)

Create, read, and update end users, and read the conversations they requested.4

Creates a real customer contact record.

Acts onend user
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only; returns a customer's contact details.

Acts onend user
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Changes a real customer contact record.

Acts onend user
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts onconversation
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Agents

Create, list, read, and update agents, and read an agent's presence status.4

Creates a real agent account in the organization.

Acts onagent
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts onagent
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts onagent
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only; reports whether an agent is online and available.

Acts onagent
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Teams

Create teams, list them, and list or change a team's members.4

Creates a real team in the organization.

Acts onteam
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts onteam
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts onteam
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Changes real team membership.

Acts onteam
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Queues

Create queues, list them, and assign agents to a queue.3

Creates a real routing queue.

Acts onqueue
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts onqueue
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Changes who receives conversations from a queue.

Acts onqueue
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Custom attributes

List custom attribute definitions, and set custom attributes on end users and conversations.3

Read-only; returns the fields that can be set on users and conversations.

Acts oncustom attribute
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Changes custom field values on a real customer contact.

Acts oncustom attribute
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Changes custom field values on a real conversation.

Acts oncustom attribute
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Analytics & metrics

List available metrics and records, and fetch aggregated or unaggregated metric data.3

Read-only.

Acts onmetric
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only despite the POST verb; the body carries the query, not a change.

Acts onmetric
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only despite the POST verb; the body carries the query, not a change.

Acts onrecord
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Webhooks

Create, list, read, patch, and delete webhook subscriptions, and read their delivery status.3

Sets a URL that will receive conversation events.

Acts onwebhook subscription
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts onwebhook subscription
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only; shows whether recent events were delivered.

Acts onwebhook subscription
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply
No endpoints match those filters.
Webhooks

Webhook events.

Dixa can notify an app when something happens to a conversation, like a conversation being created, a message added, or a conversation closed. It posts a JSON payload to a subscribed URL, so an integration learns about activity without polling.

EventWhat it signalsTriggered by
ConversationCreatedA conversation was created in Dixa./v1/conversations
ConversationMessageAddedA message was added to a conversation./v1/conversations/{conversationId}/messages
ConversationNoteAddedAn internal note was added to a conversation./v1/conversations/{conversationId}/notes
ConversationClosedA conversation was closed./v1/conversations/{conversationId}/close
ConversationTransferredA conversation was transferred to another queue or agent./v1/conversations/{conversationId}/transfer/queue
ConversationTagAddedA tag was added to a conversation./v1/conversations/{conversationId}/tags/{tagId}
ConversationTagRemovedA tag was removed from a conversation./v1/conversations/{conversationId}/tags/{tagId}
ConversationRatedA conversation was rated by the end user, or a rating comment was left. One event fires per rating or comment.In-app only
ConversationEnqueuedA conversation entered a queue.In-app only
ConversationPendingA conversation moved to a pending state, awaiting a reply.In-app only
ConversationAssignedA conversation was assigned to an agent.In-app only
ConversationUnassignedA conversation was unassigned from an agent.In-app only
No events match that search.
Rate limits & pagination

Rate limits, pagination & request size.

Dixa limits how fast an app can call by a per-token request rate, measured per second with a short burst allowance and a daily ceiling.

Request rate

Dixa meters requests per API token. The limit is 10 requests per second with a short burst allowance of 4 requests, and a daily ceiling of 864,000 requests per token. Going over returns HTTP 429 Too Many Requests. Dixa does not send a Retry-After header, so a client backs off on its own, ideally with exponential backoff. Because the limit is per token rather than per account, splitting work across separate tokens raises the total throughput available.

Pagination

List endpoints return results in pages and accept paging parameters on the query string. Search runs through POST /v1/search/conversations, which takes text and filter criteria in the body, since there is no plain list-all-conversations endpoint. Read the per-endpoint reference for the exact page-size and cursor parameters, which vary by endpoint.

Request size

Requests and responses are JSON. Dixa does not publish a single fixed payload size limit across the API; individual endpoints, such as bulk tagging or bulk notes, set their own batch ceilings, documented on those endpoints.

Errors

Status codes & error handling.

The status codes an agent should handle, and what to do about each.

StatusCodeMeaningWhat to do
400Bad RequestThe request was malformed or a parameter was missing or invalid.Fix the request body or parameters and resend. The request is not retryable as-is.
401UnauthorizedNo valid API token was provided, or the token is wrong or expired.Send a valid token in the Authorization header as 'Bearer ', and rotate the token if it is compromised.
403ForbiddenThe token is valid but not permitted to perform the request.Confirm the token was created as a 'Dixa API' token by an administrator.
404Not FoundThe requested resource, like a conversation or end user, does not exist.Check the id in the path and confirm the resource exists.
429Too Many RequestsThe per-token rate limit was exceeded, at 10 requests per second with a burst of 4 and a daily ceiling of 864,000 requests.Back off and retry with exponential backoff. Dixa does not send a Retry-After header, so the client sets its own delay.
500Internal Server ErrorAn error on Dixa's side. It is rare.Retry with backoff, and contact Dixa support if it persists.
Versioning & freshness

Version history.

Dixa runs a single current v1 API, the Dixa API, which replaces the older Integrations API that is being sunset. The token chooses which API it targets, and v1 is the version to build on.

Version history

What changed, and when

Latest versionv1
v1Current version
Dixa API v1 (current)

The v1 Dixa API at https://dev.dixa.io is the current API, covering conversations, messages, internal notes, end users, agents, teams, queues, tags, custom attributes, analytics, and webhooks. It is selected by the token version when an API token is created. It supersedes the older Integrations API, which Dixa is sunsetting, with a published migration guide that maps the old endpoints and fields to v1.

What changed
  • Current API for conversations, end users, agents, teams, queues, tags, custom attributes, analytics, and webhooks.
  • Adds CSAT and rating endpoints and side-conversation support over earlier coverage.
  • Replaces the deprecated Integrations API at integrations.dixa.io, with a migration guide mapping old endpoints to v1.
Integrations API (deprecated)
Integrations API being sunset

The earlier Integrations API, hosted at integrations.dixa.io, is deprecated and being sunset in favor of the v1 Dixa API. Dixa provides a migration guide that maps each Integrations API endpoint and field to its Dixa API equivalent, for example moving user creation from the old users endpoint to the new endusers endpoint.

What changed
  • Marked deprecated; Dixa is sunsetting it.
  • Migration guide maps Conversations, Anonymization, Endpoints, Flows, Queues, Tags, and Users to the Dixa API.
  • New integrations should build on the v1 Dixa API instead.

Build on the v1 Dixa API; the older Integrations API is being retired.

Dixa API migration guide ↗
Questions

Dixa API, answered.

How do I authenticate with the Dixa API?+
Create an API token in Dixa under Settings, Integrations, then the API Tokens tab, choosing 'Dixa API' as the version. Only an administrator can do this. Send the token on every request as 'Authorization: Bearer '. There is no OAuth flow for the core API, so the token is the single credential.
What can a Dixa API token access, and can I limit it?+
A token is organization-scoped with no granular per-endpoint scopes, so it carries the access of the whole organization and can read and write across all conversations, users, agents, teams, and settings the API exposes. Dixa has no built-in way to restrict a token to read-only or to one area. To grant least-privilege access, an integration puts a gateway in front of the token that limits which methods and resources a given agent can call.
What are the rate limits?+
Dixa limits each API token to 10 requests per second, with a burst allowance of 4 requests and a daily ceiling of 864,000 requests per token. Exceeding a limit returns HTTP 429 Too Many Requests. There is no Retry-After header, so a client sets its own backoff, ideally exponential. Because the limit is per token, splitting work across separate tokens increases total throughput.
How do I list or find conversations?+
There is no plain list-all-conversations endpoint. Conversations are found through POST /v1/search/conversations, which accepts free text, filter criteria, or both in the request body. To read a single conversation, use GET /v1/conversations/{conversationId}, and to read the conversations a specific customer requested, use GET /v1/endusers/{userId}/conversations.
How do I receive events instead of polling?+
Subscribe a webhook with POST /v1/webhooks and give it an HTTPS URL and the conversation events to receive, such as ConversationCreated, ConversationMessageAdded, ConversationNoteAdded, ConversationClosed, ConversationTransferred, or ConversationRated. Dixa then POSTs a JSON payload to that URL when each event fires, so an integration learns about activity without polling the API.
How do I verify a webhook really came from Dixa?+
Each delivery carries an X-DIXA-SIGNATURE header with two comma-separated parts, a timestamp t and an HMAC signature v1, both HEX encoded. The receiver computes an HMAC over the payload using the subscription's verification secret, found on the webhook's Details page, and compares it to v1. A mismatch is rejected, which stops a third party from spoofing events.
What is the difference between the Dixa API and the Integrations API?+
The Dixa API, at https://dev.dixa.io, is the current v1 API and the one to build on. The older Integrations API, at integrations.dixa.io, is being sunset, and Dixa publishes a migration guide that maps the old endpoints and fields to the new ones. A token is created for a specific API version, so a new integration should use a 'Dixa API' token.
Related

More support API guides for agents

What is Bollard AI?

Control what every AI agent can do in Dixa.

Bollard AI sits between a team's AI agents and Dixa. Grant each agent exactly the access it needs, read or write, conversation by conversation, and every call is checked and logged.

  • Set read, write, or full access per agent, never a shared Dixa token.
  • Denied by default, so an agent reaches only what has been explicitly allowed.
  • Every call recorded in plain English: who, what, where, and the decision.
Dixa
Support Agent
Read conversations ResourceOffReadFull use
Reply to customers ActionOffReadFull use
Close conversations ActionOffReadFull use
Anonymize data ActionOffReadFull use
Per-agent access, set in Bollard AI, not in Dixa