A reference guide for building AI agents: every method, how to authenticate, and the permissions each one needs.
The LiveChat API is how an app or AI agent works with a LiveChat account: listing and reading live chats, sending a reply into a conversation, transferring or ending a chat, and reading or updating customers and agents. Access is granted through a token and a set of scopes that decide what each call can read or write, and an agent is limited to the chats and accounts those scopes reach. The API is split into a messaging side for conversations and a configuration side for agents and groups, and it can push events to a webhook when something happens.
How an app or AI agent connects to LiveChat determines what it can reach. There are a few routes, each governed by the token behind it and the scopes that token carries.
The Web API is the stateless route, where each method is a POST to its action path, such as /agent/action/send_event. It suits an app or AI agent that calls LiveChat on demand without holding a connection open.
The RTM API holds a websocket connection open, so the same methods are sent over a persistent socket and incoming events arrive as pushes on the same connection. It suits a live agent application that needs realtime updates.
Webhooks deliver the actions that have been registered to a receiver URL over the Web API route, so a stateless integration is notified of events without holding a socket open.
Text, the company behind LiveChat, hosts a remote MCP server at https://mcp.text.com/ that lets an AI assistant call LiveChat through the Model Context Protocol. It exposes search and fetch, chat transcript and tag tools, and ticket tools, all bounded by the signed-in user's existing scopes. Claude and ChatGPT connect to it directly.
An app obtains a Bearer access token through one of the OAuth flows, sign in with LiveChat, the authorization code grant for server-side apps, or the implicit grant for browser apps. The token carries only the scopes declared for the app and granted by the user.
A Personal Access Token is generated per agent and sent with the Basic authentication scheme, where the credentials are base64 encoded. It suits a quick call or testing an app under construction, tied to that one agent's permissions.
The LiveChat API is split into areas an agent can act on, such as live chats, the events inside them, customers, agents, and groups. Each area has its own methods and its own scopes, and some grant access to far more than others.
List and read chats and their threads, start and resume a chat, deactivate a chat, and read archived chats.
Send a message or other event into a chat, send a rich-message postback, and preview an event before sending.
Transfer a chat to another agent or group, and add or remove a user from a chat.
Update or delete the custom properties on a chat, thread, or event, and tag or untag a thread.
Read a customer, update a customer's details, and ban a customer.
Create, read, list, update, and delete the agents on a license.
Create, read, list, update, and delete the groups that route chats.
Register, list, and unregister the webhooks that push events to a receiver URL.
Create, list, update, and delete the tags and custom properties defined for a license.
Set an agent's routing status to accepting or not accepting chats, and list current routing statuses.
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.
| Method | Endpoint | What it does | Access | Permission | Version | |
|---|---|---|---|---|---|---|
ChatsList and read chats and their threads, start and resume a chat, deactivate a chat, and read archived chats.7 | ||||||
| POST | /agent/action/list_chats | List chats a requester has access to. | read | chats--all:ro | Current | |
chats--access:ro limits this to chats the requester has access to, where chats--all:ro covers every chat on the license. Acts onchat Permission (capability) chats--all:roVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| POST | /agent/action/list_threads | List the threads within a single chat. | read | chats--all:ro | Current | |
chats--access:ro restricts the result to threads the requester can access. Acts onthread Permission (capability) chats--all:roVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| POST | /agent/action/get_chat | Get a single chat, including its events. | read | chats--all:ro | Current | |
Validates access to the requested thread. chats--access:ro suffices for a chat the requester can reach. Acts onchat Permission (capability) chats--all:roVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| POST | /agent/action/list_archives | List archived chats, with filters such as date range and customer country. | read | chats--all:ro | Current | |
chats--access:ro limits archives to chats the requester had access to. Acts onarchive Permission (capability) chats--all:roVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| POST | /agent/action/start_chat | Start a new chat, optionally with initial events. | write | chats--all:rw | Current | |
An optional active parameter sets whether the new chat starts active. chats--access:rw also works. Acts onchat Permission (capability) chats--all:rwVersionAvailable since the API’s base version Webhook event incoming_chatRate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| POST | /agent/action/resume_chat | Resume a chat that has been deactivated. | write | chats--all:rw | Current | |
Takes the same optional active parameter as start_chat. chats--access:rw also works. Acts onchat Permission (capability) chats--all:rwVersionAvailable since the API’s base version Webhook event incoming_chatRate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| POST | /agent/action/deactivate_chat | Deactivate a chat, which ends the active conversation. | write | chats--all:rw | Current | |
The chat identifier is sent as id. chats--access:rw also works. Acts onchat Permission (capability) chats--all:rwVersionAvailable since the API’s base version Webhook event chat_deactivatedRate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
Events & messagesSend a message or other event into a chat, send a rich-message postback, and preview an event before sending.3 | ||||||
| POST | /agent/action/send_event | Send an event, such as a message, into a chat. | write | chats--all:rw | Current | |
Posts a visible message or other event to the customer. chats--access:rw also works. Acts onevent Permission (capability) chats--all:rwVersionAvailable since the API’s base version Webhook event incoming_eventRate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| POST | /agent/action/send_event_preview | Send a preview of an event so the customer sees it being composed. | write | chats--all:rw | Current | |
A preview is not stored as a sent message. chats--access:rw also works. Acts onevent Permission (capability) chats--all:rwVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| POST | /agent/action/send_rich_message_postback | Send a postback for a rich message button the customer interacted with. | write | chats--all:rw | Current | |
Used with interactive rich-message cards. chats--access:rw also works. Acts onevent Permission (capability) chats--all:rwVersionAvailable since the API’s base version Webhook event incoming_rich_message_postbackRate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
Chat access & usersTransfer a chat to another agent or group, and add or remove a user from a chat.3 | ||||||
| POST | /agent/action/transfer_chat | Transfer a chat to another agent or group. | write | chats--all:rw | Current | |
Can be used with inactive chats as well as active ones. chats--access:rw also works. Acts onchat Permission (capability) chats--all:rwVersionAvailable since the API’s base version Webhook event chat_transferredRate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| POST | /agent/action/add_user_to_chat | Add an agent or customer to a chat. | write | chats--all:rw | Current | |
chats--access:rw also works. Acts onchat user Permission (capability) chats--all:rwVersionAvailable since the API’s base version Webhook event user_added_to_chatRate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| POST | /agent/action/remove_user_from_chat | Remove an agent or customer from a chat. | write | chats--all:rw | Current | |
chats--access:rw also works. Acts onchat user Permission (capability) chats--all:rwVersionAvailable since the API’s base version Webhook event user_removed_from_chatRate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
Chat properties & tagsUpdate or delete the custom properties on a chat, thread, or event, and tag or untag a thread.3 | ||||||
| POST | /agent/action/update_chat_properties | Update the custom properties stored on a chat. | write | chats--all:rw | Current | |
Properties are namespaced custom fields stored on the chat. chats--access:rw also works. Acts onchat property Permission (capability) chats--all:rwVersionAvailable since the API’s base version Webhook event chat_properties_updatedRate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| POST | /agent/action/tag_thread | Add a tag to a thread. | write | chats--all:rw | Current | |
The tag must already exist on the license, defined through the Configuration API. chats--access:rw also works. Acts onthread tag Permission (capability) chats--all:rwVersionAvailable since the API’s base version Webhook event thread_taggedRate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| POST | /agent/action/untag_thread | Remove a tag from a thread. | write | chats--all:rw | Current | |
chats--access:rw also works. Acts onthread tag Permission (capability) chats--all:rwVersionAvailable since the API’s base version Webhook event thread_untaggedRate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
CustomersRead a customer, update a customer's details, and ban a customer.3 | ||||||
| POST | /agent/action/get_customer | Get a single customer's details. | read | customers:ro | Current | |
Returns customer profile and session fields. Acts oncustomer Permission (capability) customers:roVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| POST | /agent/action/update_customer | Update a customer's details. | write | customers:rw | Current | |
Changes the stored customer record. Acts oncustomer Permission (capability) customers:rwVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| POST | /agent/action/ban_customer | Ban a customer for a set number of days. | write | customers.ban:rw | Current | |
Banning blocks the customer from starting new chats for the given period. Acts oncustomer Permission (capability) customers.ban:rwVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
AgentsCreate, read, list, update, and delete the agents on a license.5 | ||||||
| POST | /configuration/action/create_agent | Create an agent on the license. | write | accounts--all:rw | Current | |
Creating an agent does not activate it; LiveChat sends an invitation email. Creation needs the accounts--all:rw scope, broader than the agents--all:rw used by the other agent methods. Acts onagent Permission (capability) accounts--all:rwVersionAvailable since the API’s base version Webhook event agent_createdRate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| POST | /configuration/action/get_agent | Get a single agent's configuration. | read | agents--all:ro | Current | |
Acts onagent Permission (capability) agents--all:roVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| POST | /configuration/action/list_agents | List the agents on the license, with an optional suspended filter. | read | agents--all:ro | Current | |
Acts onagent Permission (capability) agents--all:roVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| POST | /configuration/action/update_agent | Update an agent's configuration. | write | agents--all:rw | Current | |
Acts onagent Permission (capability) agents--all:rwVersionAvailable since the API’s base version Webhook event agent_updatedRate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| POST | /configuration/action/delete_agent | Delete an agent from the license. | write | agents--all:rw | Current | |
Acts onagent Permission (capability) agents--all:rwVersionAvailable since the API’s base version Webhook event agent_deletedRate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
GroupsCreate, read, list, update, and delete the groups that route chats.4 | ||||||
| POST | /configuration/action/create_group | Create a group that routes chats to a set of agents. | write | groups--all:rw | Current | |
Acts ongroup Permission (capability) groups--all:rwVersionAvailable since the API’s base version Webhook event group_createdRate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| POST | /configuration/action/list_groups | List the groups on the license. | read | groups--all:ro | Current | |
Acts ongroup Permission (capability) groups--all:roVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| POST | /configuration/action/update_group | Update a group's configuration. | write | groups--all:rw | Current | |
Acts ongroup Permission (capability) groups--all:rwVersionAvailable since the API’s base version Webhook event group_updatedRate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| POST | /configuration/action/delete_group | Delete a group from the license. | write | groups--all:rw | Current | |
Acts ongroup Permission (capability) groups--all:rwVersionAvailable since the API’s base version Webhook event group_deletedRate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
WebhooksRegister, list, and unregister the webhooks that push events to a receiver URL.3 | ||||||
| POST | /configuration/action/register_webhook | Register a webhook so LiveChat pushes a chosen action to a receiver URL. | write | webhooks--all:rw | Current | |
Webhooks are registered for a client ID and then enabled per license. Registering through this method is equivalent to configuring webhooks in the Developer Console. Acts onwebhook Permission (capability) webhooks--all:rwVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| POST | /configuration/action/list_webhooks | List the webhooks registered for the client. | read | webhooks--all:ro | Current | |
Acts onwebhook Permission (capability) webhooks--all:roVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| POST | /configuration/action/unregister_webhook | Unregister a webhook so LiveChat stops pushing its action. | write | webhooks--all:rw | Current | |
Acts onwebhook Permission (capability) webhooks--all:rwVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
Tags & properties (config)Create, list, update, and delete the tags and custom properties defined for a license.3 | ||||||
| POST | /configuration/action/create_tag | Create a tag that agents can apply to threads. | write | tags--all:rw | Current | |
Tags must be defined here before tag_thread can apply them. Acts ontag Permission (capability) tags--all:rwVersionAvailable since the API’s base version Webhook event tag_createdRate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| POST | /configuration/action/list_tags | List the tags defined for the license. | read | tags--all:ro | Current | |
Acts ontag Permission (capability) tags--all:roVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| POST | /configuration/action/register_property | Register a custom property an integration can store on chats, threads, or events. | write | properties--all:rw | Current | |
Properties are owned by the client ID, not the license. A property must be registered and published before it can hold values. Acts onproperty Permission (capability) properties--all:rwVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
Routing statusSet an agent's routing status to accepting or not accepting chats, and list current routing statuses.2 | ||||||
| POST | /agent/action/set_routing_status | Set an agent's routing status, such as accepting or not accepting chats. | write | agents--my:rw | Current | |
agents--my:rw sets the requester's own status; agents--all:rw sets another agent's. Bot variants agents-bot--my:rw and agents-bot--all:rw apply to bots. Acts onrouting status Permission (capability) agents--my:rwVersionAvailable since the API’s base version Webhook event routing_status_setRate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| POST | /agent/action/list_routing_statuses | List the current routing statuses of agents. | read | agents--all:ro | Current | |
Listing bot statuses additionally needs agents-bot--all:ro. Acts onrouting status Permission (capability) agents--all:roVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
LiveChat can notify an app or AI agent when something happens in an account, instead of the app repeatedly asking. LiveChat posts the event payload to a webhook URL that has been registered for the chosen actions.
| Event | What it signals | Triggered by |
|---|---|---|
incoming_chat | Fires when a new chat starts, and carries the initial events of the chat. | /agent/action/start_chat/agent/action/resume_chat |
incoming_event | Fires when a new event, such as a message, occurs in a chat, and carries its content. | /agent/action/send_event |
incoming_rich_message_postback | Fires when a customer interacts with a rich-message button, sending a postback. | /agent/action/send_rich_message_postback |
chat_deactivated | Fires when a chat is deactivated, which ends the active conversation. | /agent/action/deactivate_chat |
chat_transferred | Fires when a chat is transferred to another agent or group. | /agent/action/transfer_chat |
user_added_to_chat | Fires when an agent or customer is added to a chat. | /agent/action/add_user_to_chat |
user_removed_from_chat | Fires when an agent or customer is removed from a chat. | /agent/action/remove_user_from_chat |
chat_properties_updated | Fires when the custom properties on a chat are updated. | /agent/action/update_chat_properties |
thread_tagged | Fires when a tag is added to a thread. | /agent/action/tag_thread |
thread_untagged | Fires when a tag is removed from a thread. | /agent/action/untag_thread |
routing_status_set | Fires when an agent's routing status changes. | /agent/action/set_routing_status |
agent_created | Fires when an agent is created on the license. | /configuration/action/create_agent |
agent_updated | Fires when an agent's configuration is updated. | /configuration/action/update_agent |
agent_deleted | Fires when an agent is deleted from the license. | /configuration/action/delete_agent |
group_created | Fires when a group is created. | /configuration/action/create_group |
group_updated | Fires when a group is updated. | /configuration/action/update_group |
group_deleted | Fires when a group is deleted. | /configuration/action/delete_group |
tag_created | Fires when a tag is created for the license. | /configuration/action/create_tag |
LiveChat limits how fast an app or AI agent can call, through a per-license request quota shared across every token and integration on that license, and returns a too_many_requests error once the quota is spent.
LiveChat caps how fast an app or AI agent can call through a request quota tied to the license, and that quota is shared across every token and integration on the same license, so several agents drawing on one license draw down the same allowance. Exceeding it returns a too_many_requests error, at which point the caller should back off and spread requests over time rather than bursting. LiveChat does not publish the exact request-per-window figure in its developer reference, so an integration should read the rate-limit response headers and retry after the period they indicate.
List methods page through a limit parameter, which defaults to 10 and tops out at 100, and a page_id that points at the next page. A response returns next_page_id and previous_page_id when more pages exist, and those page identifiers stay valid for up to one month before they have to be regenerated.
Requests and responses are JSON. Uploaded files go through a separate upload_file method rather than being inlined into an event, and individual list methods cap a page at 100 records through the limit parameter.
The status codes an agent should handle, and what to do about each.
| Status | Code | Meaning | What to do |
|---|---|---|---|
| 200 | authentication | The access token is missing, invalid, or expired. LiveChat returns the error in a JSON body with an error object holding a type, a message, and optional data, rather than only in the HTTP status. | Refresh or reissue the token, then resend the request with a valid Authorization header. |
| 200 | authorization | The token is valid but its scopes do not allow the action, such as calling a chats--all method with only chats--access granted. | Grant the missing scope to the app, or call a method the current scopes allow. |
| 200 | validation | The request was malformed or a field was missing or invalid. The error message names the problem. | Correct the named field and resend. |
| 200 | too_many_requests | The request quota for the license was exceeded. The quota is shared across every token and integration on that license. | Back off and retry after a short wait, and spread calls across time rather than bursting. |
| 200 | request_timeout | The request exceeded the 15-second processing threshold before completing. | Retry the request, and narrow the work if it is a large query. |
| 200 | internal | An unexpected server-side error occurred while handling the request. | Retry after a short wait, and contact support if it persists. |
LiveChat versions its APIs with a single dated version string in the request path. The newest stable version is v3.6, released on 7 August 2025, and v3.5 stays supported alongside it.
v3.6 is the newest stable version of the LiveChat APIs. It added chat access validation and new filters for listing archives, renamed chat summary to chat info, expanded customer data with carts and omnichannel support, added system and deleted event types, introduced thread summaries with auto-summarization, moved bot authorization to tokens instead of an author-id header, and added thinking indicators. It was released on 7 August 2025.
v3.5 added new archive filters including customer countries, removed the older push-notification configuration methods, and introduced tag management pushes for created, updated, and deleted tags. A follow-up on 7 December 2022 added thread access validation. It was released on 23 November 2022 and remains supported.
v3.4 added deletion-related pushes for chats and threads, richer archive filtering with event-type modifiers, and Configuration API integration with agent and bot pushes. It was released on 22 December 2021.
An integration pins one version in the URL and moves up when it chooses to.
LiveChat API changelog ↗Bollard AI sits between a team's AI agents and LiveChat. Grant each agent exactly the access it needs, read or write, area by area, and every call is checked and logged.