Stitchflow
LiveChat logo

LiveChat User Management API Guide

API workflow

How to automate user lifecycle operations through APIs with caveats that matter in production.

UpdatedMar 11, 2026

Summary and recommendation

LiveChat exposes agent lifecycle management through the Configuration API (base: `https://api.livechatinc.com/v3.6/configuration`), authenticated via OAuth 2.0 Bearer tokens issued at `https://accounts.livechat.com/v2/token` - note the distinct domain from the API host. All operations, including list and read actions, use HTTP POST with a JSON body; there are no GET endpoints with query parameters.

Pin the API version in the URL path (`/v3.6/`) and confirm the current stable version in the developer docs before deploying.

Key scopes for user management are `agents--all:rw` (create, update, delete any agent) and `agents--all:ro` (read). Scopes must be declared at app registration in the Developer Console; requesting undeclared scopes at runtime will fail.

The rate limit is 1,000 requests per 10-minute window per license - shared across all tokens and integrations on that license - with `X-RateLimit-Remaining` and `Retry-After` headers available for backoff logic.

For identity graph use cases, the agent `id` field is the agent's email address, not a UUID. This has a direct consequence: changing an agent's email requires deletion and re-creation of the agent record, breaking any downstream reference that stored the original `id`.

Model this carefully in any identity graph that maps LiveChat agents to canonical user records from an IdP.

API quick reference

Has user APIYes
Auth methodOAuth 2.0 (Bearer token)
Base URLOfficial docs
SCIM availableNo
SCIM plan requiredEnterprise

Authentication

Auth method: OAuth 2.0 (Bearer token)

Setup steps

  1. Register an app in the LiveChat Developer Console (https://developers.livechat.com/console/).
  2. Choose OAuth 2.0 grant type: Authorization Code (for user-context) or Client Credentials (for server-to-server).
  3. Request required scopes (e.g., agents--all:rw) during app registration.
  4. Exchange authorization code or client credentials for an access token at https://accounts.livechat.com/v2/token.
  5. Include the token in every API request as: Authorization: Bearer .

Required scopes

Scope Description Required for
agents--all:ro Read all agents in the license. List agents, get agent details
agents--all:rw Create, update, and delete any agent. Create agent, update agent, delete agent
agents--my:ro Read the authenticated agent's own profile. Get own agent profile
agents--my:rw Update the authenticated agent's own profile. Update own agent profile
groups--all:rw Create, update, and delete groups; manage group membership. Group management endpoints
groups--all:ro Read all groups and their members. List groups, get group details

User object / data model

Field Type Description On create On update Notes
id string Unique agent identifier (email address). required immutable Used as the primary key in all agent endpoints.
name string Agent's display name. required optional
role string Agent role: 'administrator' or 'agent'. optional optional Defaults to 'agent' on create.
avatar_path string URL of the agent's avatar image. optional optional
job_title string Agent's job title shown in chat widget. optional optional
mobile string Agent's mobile phone number. optional optional
max_chats_count integer Maximum concurrent chats the agent can handle. optional optional 0 means unlimited.
awaiting_approval boolean Whether the agent invitation is pending acceptance. read-only read-only
groups array[object] List of group objects the agent belongs to, each with id and priority. optional optional Priority values: first, last, normal, supervisor.
notifications object Notification preferences (new_visitor, new_goal, etc.). optional optional
work_scheduler object Agent's work schedule configuration per day. optional optional
routing_status string Current routing status: accepting_chats or not_accepting_chats. read-only read-only Set via Agent API, not Configuration API.

Core endpoints

List Agents

  • Method: GET
  • URL: https://api.livechatinc.com/v3.6/configuration/action/list_agents
  • Watch out for: Despite being a 'list' operation, the endpoint uses POST with a JSON body. Filtering by group_ids is supported in the request body.

Request example

POST /v3.6/configuration/action/list_agents
Authorization: Bearer <token>
Content-Type: application/json
{}

Response example

{
  "agents": [
    {"id":"agent@example.com","name":"Jane Doe","role":"agent"}
  ]
}

Get Agent

  • Method: POST
  • URL: https://api.livechatinc.com/v3.6/configuration/action/get_agent
  • Watch out for: Requires agents--all:ro scope; agents--my:ro only works for the authenticated agent's own record.

Request example

POST /v3.6/configuration/action/get_agent
Authorization: Bearer <token>
{"id":"agent@example.com"}

Response example

{
  "id":"agent@example.com",
  "name":"Jane Doe",
  "role":"agent",
  "max_chats_count":5
}

Create Agent

  • Method: POST
  • URL: https://api.livechatinc.com/v3.6/configuration/action/create_agent
  • Watch out for: Creates an invitation; agent must accept via email. awaiting_approval=true until accepted. Seat limits apply per plan.

Request example

POST /v3.6/configuration/action/create_agent
Authorization: Bearer <token>
{
  "id":"new@example.com",
  "name":"New Agent",
  "role":"agent"
}

Response example

{
  "id":"new@example.com",
  "name":"New Agent",
  "awaiting_approval":true
}

Update Agent

  • Method: POST
  • URL: https://api.livechatinc.com/v3.6/configuration/action/update_agent
  • Watch out for: Returns empty object on success. Only fields included in the body are updated (partial update semantics).

Request example

POST /v3.6/configuration/action/update_agent
Authorization: Bearer <token>
{
  "id":"agent@example.com",
  "max_chats_count":8,
  "role":"administrator"
}

Response example

{}

Delete Agent

  • Method: POST
  • URL: https://api.livechatinc.com/v3.6/configuration/action/delete_agent
  • Watch out for: Permanently removes the agent and reassigns open chats. Cannot delete the last administrator.

Request example

POST /v3.6/configuration/action/delete_agent
Authorization: Bearer <token>
{"id":"agent@example.com"}

Response example

{}

List Groups

  • Method: POST
  • URL: https://api.livechatinc.com/v3.6/configuration/action/list_groups
  • Watch out for: Group IDs are integers, not strings. Agent membership is managed via update_agent or update_group.

Request example

POST /v3.6/configuration/action/list_groups
Authorization: Bearer <token>
{}

Response example

{
  "groups":[
    {"id":1,"name":"Sales","agent_priorities":{}}
  ]
}

Create Group

  • Method: POST
  • URL: https://api.livechatinc.com/v3.6/configuration/action/create_group
  • Watch out for: agent_priorities map uses agent email as key and priority string as value.

Request example

POST /v3.6/configuration/action/create_group
Authorization: Bearer <token>
{
  "name":"Support Tier 2",
  "agent_priorities":{"agent@example.com":"normal"}
}

Response example

{
  "id":5,
  "name":"Support Tier 2"
}

Update Group

  • Method: POST
  • URL: https://api.livechatinc.com/v3.6/configuration/action/update_group
  • Watch out for: Sending agent_priorities replaces the entire map for included agents; omitted agents retain existing priority.

Request example

POST /v3.6/configuration/action/update_group
Authorization: Bearer <token>
{
  "id":5,
  "agent_priorities":{"new@example.com":"first"}
}

Response example

{}

Rate limits, pagination, and events

  • Rate limits: LiveChat enforces per-license rate limits on the Configuration API. Limits are applied per access token / license combination. Exceeding limits returns HTTP 429.
  • Rate-limit headers: Yes
  • Retry-After header: Yes
  • Rate-limit notes: Response headers X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset are returned. On 429, Retry-After header indicates seconds to wait. Exact per-plan differentiation is not publicly documented.
  • Pagination method: cursor
  • Default page size: 1000
  • Max page size: 1000
  • Pagination pointer: page_id
Plan Limit Concurrent
All plans (default) 1000 requests per 10 minutes per license 0
  • Webhooks available: Yes
  • Webhook notes: LiveChat supports webhooks via the Configuration API. Webhooks can be registered per license and fire on agent/chat lifecycle events.
  • Alternative event strategy: LiveChat also supports the Real-Time Messaging (RTM) WebSocket API for push-based event streaming without polling.
  • Webhook events: agent_created, agent_updated, agent_deleted, agent_suspended, agent_unsuspended, agent_approved, chat_started, chat_ended, incoming_chat, routing_status_set

SCIM API status

  • SCIM available: No
  • SCIM version: Not documented
  • Plan required: Enterprise
  • Endpoint: Not documented

Limitations:

  • No SCIM 2.0 endpoint is officially documented by LiveChat.
  • SSO via SAML 2.0 is available on the Enterprise plan (Okta and OneLogin IdPs documented).
  • User provisioning must be performed via the Configuration API or manually.

Common scenarios

Provisioning a new agent requires POST /configuration/action/create_agent with id (email), name, and role. The agent is not active until they accept the invitation email; awaiting_approval: true during this window.

Downstream provisioning steps - group assignment, routing configuration - should gate on awaiting_approval: false to avoid operating on an inactive record. Group assignment is handled via POST /configuration/action/update_agent with a groups array specifying group id and priority.

Offboarding uses POST /configuration/action/delete_agent. Deletion is permanent and immediate; there is no suspend or deactivate state. As a soft-disable pattern before full deletion, setting max_chats_count to 0 via update_agent prevents new chat routing without removing the agent record. Retrieve current group memberships and settings via get_agent before deletion for audit logging.

For IdP-driven role sync - for example, mapping Okta group membership to LiveChat roles - the flow is: receive IdP event, map to 'agent' or 'administrator' (the only two assignable roles; 'owner' cannot be set via API), then POST /configuration/action/update_agent with the updated role field. If group membership also changed, follow with update_group. This pipeline must be custom-built; LiveChat has no native SCIM endpoint at any documented tier.

Provision a new agent and assign to a group

  1. POST /configuration/action/create_agent with id (email), name, and role fields.
  2. Note awaiting_approval=true; agent must accept the invitation email before they can log in.
  3. POST /configuration/action/update_agent with the agent id and groups array including the target group id and priority.
  4. Optionally POST /configuration/action/update_group to set agent_priorities for the new agent.

Watch out for: The agent cannot be assigned chats or appear online until they accept the invitation. Automate a check on awaiting_approval before downstream provisioning steps.

Deprovision an agent (offboarding)

  1. POST /configuration/action/get_agent to retrieve current group memberships and settings for audit logging.
  2. POST /configuration/action/delete_agent with the agent's email id.
  3. Verify open chats are reassigned by monitoring via the Agent Chat API or webhooks.

Watch out for: Deletion is permanent and immediate. There is no suspend/deactivate state - consider updating max_chats_count to 0 as a temporary soft-disable before full deletion.

Sync agent role changes from an IdP (e.g., Okta) via API

  1. Receive a user-update event from the IdP (e.g., via Okta webhook or SCIM-like polling).
  2. Map IdP group/role to LiveChat role ('agent' or 'administrator').
  3. POST /configuration/action/update_agent with id and updated role field.
  4. POST /configuration/action/update_group if group membership also changed.

Watch out for: LiveChat has no native SCIM endpoint; this sync must be custom-built. SSO (SAML) handles authentication but not automated provisioning/deprovisioning.

Why building this yourself is a trap

The most significant integration trap is the invitation model: create_agent does not activate an agent - it sends an email. Any automation that proceeds to assign chats, set routing status, or validate group membership before the agent accepts will operate on a ghost record.

Poll or webhook on agent_approved before treating a provisioning job as complete.

A second trap is the shared rate limit. At 1,000 requests per 10 minutes per license, multiple integrations or sync jobs running concurrently against the same license will contend for the same quota. Bulk onboarding operations should be serialized and instrumented with X-RateLimit-Remaining checks.

The Configuration API is also entirely separate from the Agent Chat API and Customer Chat API - user management endpoints do not exist in those APIs, and mixing base URLs will produce 404s or auth errors.

For identity graph integrity: because id is email-based, any IdP-side email change must trigger a delete-and-recreate cycle in LiveChat, not an update. Treat the LiveChat agent record as non-portable across email changes and design reconciliation logic accordingly.

Automate LiveChat workflows without one-off scripts

Stitchflow builds and maintains end-to-end IT automation across your SaaS stack, including apps without APIs. Built for exactly how your company works, with human approvals where they matter.

Every app coverage, including apps without APIs
60+ app integrations plus browser automation for apps without APIs
IT graph reconciliation across apps and your IdP
Less than a week to launch, maintained as APIs and admin consoles change
SOC 2 Type II. ~2 hours of your team's time

UpdatedMar 11, 2026

* Details sourced from official product documentation and admin references.

Keep exploring

Related apps

Abnormal Security logo

Abnormal Security

API Only
AutomationAPI only
Last updatedMar 2026

Abnormal Security is an enterprise email security platform focused on detecting and investigating threats such as phishing, account takeover (ATO), and vendor email compromise. It does not support SCIM provisioning, which means every app in your stack

ActiveCampaign logo

ActiveCampaign

API Only
AutomationAPI only
Last updatedFeb 2026

ActiveCampaign uses a group-based permission model: every user belongs to exactly one group, and all feature-area access (Contacts, Campaigns, Automations, Deals, Reports, Templates) is configured at the group level, not per individual. The default Adm

ADP logo

ADP

API Only
AutomationAPI only
Last updatedFeb 2026

ADP Workforce Now is a mid-market to enterprise HCM platform that serves as the HR source of record for employee data — payroll, benefits, time, and talent. User access is governed by a hybrid permission model: predefined security roles (Security Maste