Data API — Agents

API reference for listing, reading, creating, editing, and deleting CCaaS agents, and for managing an agent's default outbound caller ID.

The Agents API lets an external system read and maintain the CCaaS agent roster — profile, licenses, skill levels, agent-wide skill settings, and default outbound caller ID — one agent at a time or up to 500 per request. This page is the endpoint-by-endpoint reference. For how writes behave, worked examples, and integration recipes, see Data API — Agent Management.

📘

Interactive Reference

The same endpoints are available in the API Reference, where requests can be built and sent with Try It. The machine-readable OpenAPI 3.1 description is also served by each tenant at GET /v1/openapi.json.


Overview

Base URLhttps://<hostname>.xima.cloud/rest/api
AuthenticationBearer token from an API Service User. Any valid token can read; writes require a Service User with full access created on the tenant being written to
Request and response formatJSON. Refusals from the agent management endpoints are Problem documents (application/problem+json)
LimitsUp to 500 agents per bulk request, a 10 MiB Content-Length limit, and one agent write at a time per tenant — see Limits

Authentication

Every request requires a Service User bearer token in the Authorization header:

Authorization: Bearer <api_bearer_token>

Service Users are created under API Enablement > API Service Users. See API Service Users.

⚠️

Writes Require Full Access

Creating, editing, and deleting agents and setting a default outbound caller ID require a Service User with unrestricted access; a restricted one receives 403. A corporate central repository token can read agents but every write, dry runs included, is refused with 403 EPHEMERAL_SERVICE_USER_READ_ONLY.

Identifying an Agent

The {id} path parameter accepts either of the following. A name or an extension on its own is never accepted.

IdentifierDescription
The agent's idA UUID, for XIMA agents only
The agent's keyThe exact name(extension) — for example, Jane Doe(101) — URL-encoded (Jane%20Doe(101)). Works for both XIMA and UC agents, and is the only way to address a UC agent

Endpoints

MethodPathSummary
GET/v1/agentsList licensed agents
GET/v1/agents/{id}Read one agent in full
GET/v1/agents/licenses/seatsSeat counts per license
POST/v1/agents/createCreate one XIMA agent
POST/v1/agents/create/bulkCreate up to 500 XIMA agents
PATCH/v1/agents/{id}Edit one agent
PATCH/v1/agentsEdit up to 500 agents
DELETE/v1/agents/{id}Delete a XIMA agent
GET/v1/agents/{id}/default-outbound-caller-idRead the agent's default outbound caller ID
PUT/v1/agents/{id}/default-outbound-caller-idSet the agent's default outbound caller ID
DELETE/v1/agents/{id}/default-outbound-caller-idClear the agent's default outbound caller ID
GET/v1/agents/{id}/outbound-caller-idsThe caller IDs the phone system offers the agent
GET/v1/openapi.jsonThe OpenAPI description (no token needed)

List Licensed Agents

GET /v1/agents

Lists licensed agents only. An agent without a license is not listed, but can still be read and edited by its id or name(extension). This older endpoint answers errors in the SimpleError shape.

Parameters

NameInTypeRequiredDescription
typequerystringNoXIMA or UC to list only that type of agent. Any other value is 400
AuthorizationheaderstringYesBearer <api_bearer_token>

Responses

CodeDescription
200 OKAn AgentList
400 Bad Requesttype is not XIMA or UC (SimpleError)
401 UnauthorizedMissing or invalid token (SimpleError)

Example Request

curl -L -X GET 'https://<hostname>.xima.cloud/rest/api/v1/agents?type=XIMA' \
-H 'Authorization: Bearer <api_bearer_token>'

Example Response — 200 OK

{
  "agents": [
    {
      "id": "53436b64-2d5c-4f0e-9a51-6c3b0f8e7d21",
      "agent": "Jane Doe(101)",
      "name": "Jane Doe",
      "extension": "101",
      "type": "XIMA",
      "email": "[email protected]"
    },
    {
      "agent": "Desk Phone(2001)",
      "name": "Desk Phone",
      "extension": "2001",
      "type": "UC",
      "email": "[email protected]"
    }
  ]
}

Read One Agent

GET /v1/agents/{id}

Returns one agent in full. The response is the same shape PATCH /v1/agents/{id} accepts, so an agent can be read, changed, and sent back.

Parameters

NameInTypeRequiredDescription
idpathstringYesA XIMA agent's id, or the exact name(extension) of a XIMA or UC agent, URL-encoded
AuthorizationheaderstringYesBearer <api_bearer_token>

Responses

CodeDescription
200 OKAn AgentDetail
401 UnauthorizedMissing or invalid token
404 Not FoundAGENT_NOT_FOUND — no agent with that id or name(extension)
409 ConflictAGENT_ID_AMBIGUOUS — more than one phone-system user has that name(extension)
413 Payload Too LargeBODY_TOO_LARGE — the Content-Length header is over 10 MiB

Example Request

curl -L -X GET 'https://<hostname>.xima.cloud/rest/api/v1/agents/53436b64-2d5c-4f0e-9a51-6c3b0f8e7d21' \
-H 'Authorization: Bearer <api_bearer_token>'

Example Response — 200 OK

{
  "id": "53436b64-2d5c-4f0e-9a51-6c3b0f8e7d21",
  "agent": "Jane Doe(101)",
  "name": "Jane Doe",
  "extension": "101",
  "type": "XIMA",
  "email": "[email protected]",
  "profile": {
    "id": "53436b64-2d5c-4f0e-9a51-6c3b0f8e7d21",
    "name": "Jane Doe",
    "preferredName": "Jane",
    "emailAddress": "[email protected]",
    "extension": "101",
    "connectedNumbers": [],
    "noAnswerOverflow": {
      "destinationType": "VOICEMAIL_EXTENSION",
      "destination": "101"
    },
    "recordingMode": "AUTOMATIC",
    "canListenOwnRecordings": true,
    "canDownloadOwnRecordings": false,
    "canListenSkillRecordings": false,
    "canDownloadSkillRecordings": false,
    "canListenRoleRecordings": false,
    "canDownloadRoleRecordings": false
  },
  "licenses": [
    "CCAAS_VOICE",
    "CCAAS_VOICE.CCAAS_WEB_CHAT_ADDON"
  ],
  "skillLevels": [
    {
      "skillId": "ee3b0d75-…",
      "skillName": "Support",
      "skillLevel": 7
    }
  ],
  "skillSettings": {
    "maxSimultaneousSessions": 3,
    "voiceEnabled": true,
    "chatEnabled": true,
    "emailEnabled": false
  },
  "defaultOutboundCallerId": {
    "label": "Main",
    "outboundCallerId": "8015550100"
  }
}

License Seats

GET /v1/agents/licenses/seats

Returns the seat counts per license, as the Agent Licensing page shows them.

Parameters

NameInTypeRequiredDescription
AuthorizationheaderstringYesBearer <api_bearer_token>

Responses

CodeDescription
200 OKLicenseSeats
401 UnauthorizedMissing or invalid token
413 Payload Too LargeBODY_TOO_LARGE — the Content-Length header is over 10 MiB

Example Response — 200 OK

{
  "seats": [
    {
      "license": "CCAAS_VOICE",
      "limit": 50,
      "assigned": 48,
      "remaining": 2,
      "concurrent": false
    }
  ]
}

Create One Agent

POST /v1/agents/create

Creates one XIMA agent. A create carries no default outbound caller ID — sending defaultOutboundCallerId is 400 FIELD_NOT_ALLOWED_ON_CREATE. Create the agent, then set its default with Set Default Outbound Caller ID. Omitting licenses gives the starter licenses a new agent gets in the web interface.

Parameters

NameInTypeRequiredDescription
dryRunquerybooleanNoCheck everything a real write would and save nothing. Defaults to false. A dry-run create reports no id
AuthorizationheaderstringYesBearer <api_bearer_token>
Content-TypeheaderstringYesapplication/json

Request Body

An AgentCreate. profile with name, extension, and emailAddress is required.

{
  "profile": {
    "name": "Jane Doe",
    "extension": "101",
    "emailAddress": "[email protected]",
    "recordingMode": "AUTOMATIC"
  },
  "licenses": [
    "CCAAS_VOICE"
  ],
  "skillLevels": [
    {
      "skillName": "Support",
      "skillLevel": 7
    }
  ],
  "skillSettings": {
    "maxSimultaneousSessions": 2
  }
}

Responses

CodeDescription
201 CreatedA WriteResponse with one CREATED result. The new agent's id is in results[0].id
200 OKDry run: a WriteResponse with one VALID result
400 Bad RequestThe agent is invalid. errors[].reason says why
401 UnauthorizedMissing or invalid token
403 ForbiddenNo full access, or a corporate token (EPHEMERAL_SERVICE_USER_READ_ONLY)
409 ConflictName, extension, or email in use; seat limit reached; agent not licensed for a skill
413 Payload Too LargeBODY_TOO_LARGE — the body is over 10 MiB
429 Too Many RequestsWRITE_IN_PROGRESS — another agent write is in progress. Retry after a short wait
503 Service UnavailableSETTINGS_BUSY — another settings save held the lock. Nothing was saved. Retry

Example Request

curl -L -X POST 'https://<hostname>.xima.cloud/rest/api/v1/agents/create' \
-H 'Authorization: Bearer <api_bearer_token>' \
-H 'Content-Type: application/json' \
-d '{"profile":{"name":"Jane Doe","extension":"101","emailAddress":"[email protected]"},"licenses":["CCAAS_VOICE"]}'

Create Many Agents

POST /v1/agents/create/bulk

Creates up to 500 XIMA agents in one settings save, each exactly as the single create. Once processed, the response is 200 with a result for each item — a refused item does not stop the others. Items are applied in order, so seats, names, extensions, and emails taken by earlier items count against later ones.

Parameters

NameInTypeRequiredDescription
AuthorizationheaderstringYesBearer <api_bearer_token>
Content-TypeheaderstringYesapplication/json

Request Body

An AgentBulkCreate — only dryRun and agents. Any other key, or a ?dryRun query parameter, refuses the whole request with 400 MALFORMED_BODY.

{
  "dryRun": false,
  "agents": [
    {
      "profile": {
        "name": "Jane Doe",
        "extension": "101",
        "emailAddress": "[email protected]"
      }
    }
  ]
}

Responses

CodeDescription
200 OKA WriteResponse with one result per item. Check summary and each result's status
400 Bad RequestThe body is not dryRun and a list of agents, or the URL has ?dryRun
401 UnauthorizedMissing or invalid token
403 ForbiddenNo full access, or a corporate token. Nothing was processed
413 Payload Too LargeTOO_MANY_ITEMS (more than 500 agents) or BODY_TOO_LARGE (over 10 MiB). Split the batch
429 Too Many RequestsWRITE_IN_PROGRESS — another agent write is in progress. Retry
503 Service UnavailableSETTINGS_BUSY — another settings save held the lock. Nothing was saved. Retry

Edit One Agent

PATCH /v1/agents/{id}

Edits one agent. Only the fields present change; lists such as connectedNumbers and licenses are replaced whole, while skillLevels only adds, updates, or (with skillLevel: 0) removes the skills listed. A defaultOutboundCallerId in the body is checked with the phone system before anything is saved.

Parameters

NameInTypeRequiredDescription
idpathstringYesA XIMA agent's id, or the exact name(extension), URL-encoded
dryRunquerybooleanNoCheck everything a real write would and save nothing, including the phone-system check of a caller ID change
AuthorizationheaderstringYesBearer <api_bearer_token>
Content-TypeheaderstringYesapplication/json

Request Body

An AgentUpdate. An id in the body is optional; if sent, it must match the path (400 ID_MISMATCH).

{
  "profile": {
    "recordingMode": "MANUAL"
  },
  "skillLevels": [
    {
      "skillName": "Billing",
      "skillLevel": 0
    }
  ]
}

Responses

CodeDescription
200 OKA WriteResponse with one UPDATED (or VALID for a dry run) result. Check failures
400 Bad RequestThe edit is invalid — for example, RENAME_NOT_ALLOWED or UC_PROFILE_NOT_EDITABLE
401 UnauthorizedMissing or invalid token
403 ForbiddenNo full access, or a corporate token
404 Not FoundAGENT_NOT_FOUND
409 ConflictIn use; seat limit; not licensed for a skill; caller ID not allowed or unlabelled; ambiguous id
413 Payload Too LargeBODY_TOO_LARGE
429 Too Many RequestsWRITE_IN_PROGRESS. Retry
502 Bad GatewayCALLER_ID_CHECK_FAILED — the caller ID could not be checked with the phone system. Nothing was saved. Retry
503 Service UnavailableSETTINGS_BUSY. Nothing was saved. Retry

Edit Many Agents

PATCH /v1/agents

Applies up to 500 edits in one settings save, each naming its agent in id. Once processed, the response is 200 with a result for each item. If any item changes a defaultOutboundCallerId that cannot be checked with the phone system, or the request's caller ID checks reach 30 seconds in all, the whole request fails with 502 and nothing is saved.

Parameters

NameInTypeRequiredDescription
AuthorizationheaderstringYesBearer <api_bearer_token>
Content-TypeheaderstringYesapplication/json

Request Body

An AgentBulkUpdate — only dryRun and agents, with id required on every item.

{
  "dryRun": false,
  "agents": [
    {
      "id": "53436b64-…",
      "licenses": [
        "CCAAS_VOICE"
      ]
    },
    {
      "id": "Desk Phone(2001)",
      "skillLevels": [
        {
          "skillName": "Sales",
          "skillLevel": 5
        }
      ]
    }
  ]
}

Responses

CodeDescription
200 OKA WriteResponse with one result per item. Check summary and each result's status
400 Bad RequestThe body is not dryRun and a list of agents, or the URL has ?dryRun
401 UnauthorizedMissing or invalid token
403 ForbiddenNo full access, or a corporate token. Nothing was processed
413 Payload Too LargeTOO_MANY_ITEMS or BODY_TOO_LARGE. Split the batch
429 Too Many RequestsWRITE_IN_PROGRESS. Retry
502 Bad GatewayCALLER_ID_CHECK_FAILED — nothing in the request was saved, for any agent. Retry
503 Service UnavailableSETTINGS_BUSY. Nothing was saved. Retry

Delete an Agent

DELETE /v1/agents/{id}

Deletes a XIMA agent and frees its license seats, exactly as the web interface does. The agent's name(extension) must be sent in the body as confirmation. A delete is not refused for an agent on a call or the last agent on a skill, and has no dry run.

Parameters

NameInTypeRequiredDescription
idpathstringYesA XIMA agent's id, or the exact name(extension), URL-encoded
AuthorizationheaderstringYesBearer <api_bearer_token>
Content-TypeheaderstringYesapplication/json

Request Body

An AgentDeleteConfirmation. Without it, or with a different name(extension), the delete is refused with 400 DELETE_CONFIRMATION_MISMATCH.

{
  "agent": "Jane Doe(101)"
}

Responses

CodeDescription
200 OKA WriteResponse with one DELETED result
400 Bad RequestDELETE_CONFIRMATION_MISMATCH or UC_AGENT_NOT_DELETABLE
401 UnauthorizedMissing or invalid token
403 ForbiddenNo full access, or a corporate token
404 Not FoundAGENT_NOT_FOUND
409 ConflictAGENT_ID_AMBIGUOUS
413 Payload Too LargeBODY_TOO_LARGE
429 Too Many RequestsWRITE_IN_PROGRESS. Retry
503 Service UnavailableSETTINGS_BUSY. Nothing was deleted. Retry

Get Default Outbound Caller ID

GET /v1/agents/{id}/default-outbound-caller-id

Returns the caller ID the agent dials out with by default.

Parameters

NameInTypeRequiredDescription
idpathstringYesA XIMA agent's id, or the exact name(extension), URL-encoded
AuthorizationheaderstringYesBearer <api_bearer_token>

Responses

CodeDescription
200 OKAn OutboundCallerId
204 No ContentThe agent has no default
401 UnauthorizedMissing or invalid token
404 Not FoundAGENT_NOT_FOUND
409 ConflictAGENT_ID_AMBIGUOUS
413 Payload Too LargeBODY_TOO_LARGE

Example Response — 200 OK

{
  "label": "Main",
  "outboundCallerId": "8015550100"
}

Set Default Outbound Caller ID

PUT /v1/agents/{id}/default-outbound-caller-id

Sets the agent's default outbound caller ID — this is how a new agent gets its default once the create has saved it. The caller ID is checked with the phone system first. The caller ID the agent already has is not a change: it is not checked and nothing is written. A label in the body is ignored; the phone system's label is stored.

Parameters

NameInTypeRequiredDescription
idpathstringYesA XIMA agent's id, or the exact name(extension), URL-encoded
dryRunquerybooleanNoCheck the caller ID with the phone system and save nothing
AuthorizationheaderstringYesBearer <api_bearer_token>
Content-TypeheaderstringYesapplication/json

Request Body

A CallerIdToSet. A missing, empty, or blank outboundCallerId is 400 CALLER_ID_REQUIRED — use Clear Default Outbound Caller ID to clear it.

{
  "outboundCallerId": "8015550100"
}

Responses

CodeDescription
200 OKA WriteResponse with one UPDATED (or VALID) result; failures carries CALLER_ID_SAVE_FAILED if the write did not take
400 Bad RequestCALLER_ID_REQUIRED
401 UnauthorizedMissing or invalid token
403 ForbiddenNo full access, or a corporate token
404 Not FoundAGENT_NOT_FOUND
409 ConflictCALLER_ID_NOT_ALLOWED or CALLER_ID_NO_LABEL — the agent may not use the caller ID
413 Payload Too LargeBODY_TOO_LARGE
429 Too Many RequestsWRITE_IN_PROGRESS. Retry
502 Bad GatewayCALLER_ID_CHECK_FAILED — the phone system could not be asked. Nothing was saved. Retry
503 Service UnavailableSETTINGS_BUSY. Nothing was saved. Retry

Clear Default Outbound Caller ID

DELETE /v1/agents/{id}/default-outbound-caller-id

Clears the agent's default outbound caller ID. No check with the phone system is needed.

Parameters

NameInTypeRequiredDescription
idpathstringYesA XIMA agent's id, or the exact name(extension), URL-encoded
dryRunquerybooleanNoReport the outcome and save nothing
AuthorizationheaderstringYesBearer <api_bearer_token>

Responses

CodeDescription
200 OKA WriteResponse with one UPDATED (or VALID) result
400 Bad RequestThe request is invalid
401 UnauthorizedMissing or invalid token
403 ForbiddenNo full access, or a corporate token
404 Not FoundAGENT_NOT_FOUND
409 ConflictAGENT_ID_AMBIGUOUS
413 Payload Too LargeBODY_TOO_LARGE
429 Too Many RequestsWRITE_IN_PROGRESS. Retry
503 Service UnavailableSETTINGS_BUSY. Nothing was saved. Retry

List Outbound Caller IDs

GET /v1/agents/{id}/outbound-caller-ids

Returns the caller IDs the phone system offers the agent, and the one currently selected. This older endpoint answers errors in the SimpleError shape. See also Available Outbound Caller IDs.

Parameters

NameInTypeRequiredDescription
idpathstringYesThe agent's extension, its exact name(extension), or a recording-pause alias, URL-encoded. Not the agent's id — a UUID is not recognized here
AuthorizationheaderstringYesBearer <api_bearer_token>

Responses

CodeDescription
200 OKOutboundCallerIdOptions
401 UnauthorizedMissing or invalid token
404 Not FoundNo such agent

OpenAPI Description

GET /v1/openapi.json

Returns the OpenAPI 3.1 description of these endpoints. No token is needed.

CodeDescription
200 OKThe OpenAPI 3.1 document

Models

AgentList

FieldTypeDescription
agentsarray of AgentThe licensed agents. Required

Agent

FieldTypeDescription
idstringXIMA agents only: the agent's id
agentstringThe agent's key, name(extension). Addresses XIMA and UC agents alike
namestringThe agent's name
extensionstringThe agent's extension
typestringXIMA — a browser (WebRTC) agent created in Xima — or UC — an agent from the phone system, which cannot be created, deleted, or have its profile edited here
emailstringThe agent's email address

AgentDetail

The full agent, as returned by Read One Agent. profile is present for XIMA agents only.

FieldTypeDescription
id, agent, name, extension, type, emailAs in Agent
profileProfileXIMA agents only
licensesarray of stringThe agent's complete set of licenses, using the Agent Licensing page's identifiers — for example, CCAAS_VOICE, CCAAS_REALTIME, CCAAS_VOICE.CCAAS_WEB_CHAT_ADDON, CCAAS_VOICE.CCAAS_EMAIL_ADDON, CCAAS_CRM, CCAAS_TRANSCRIPTION, CCAAS_QA_EVALUATION, or UCAAS_* names on UCaaS licensing
skillLevelsarray of SkillLevelThe skills the agent is on, each at level 1 to 10
skillSettingsSkillSettingsAgent-wide skill settings
defaultOutboundCallerIdOutboundCallerIdAbsent when the agent has no default

Profile

A XIMA agent's profile. On a create, omitted fields take a new agent's defaults; on an edit, only the fields present change and connectedNumbers is replaced whole.

FieldTypeDescription
idstringRead only. Ignored with a warning on a create
namestringRequired on create. Unique. Cannot contain ( ) [ ]. Cannot be changed
preferredNamestringDisplay name
emailAddressstringRequired on create. A valid address, unique across agents. Can be changed
extensionstringRequired on create. Not used by another agent, phone-system user, or skill. Cannot be changed
connectedNumbersarray of ConnectedNumberPhones the agent can take calls on. Replaced whole
noAnswerOverflowNoAnswerOverflowWhere an unanswered direct call goes
recordingModestringAUTOMATIC · AUTOMATIC_PAUSING_PROHIBITED · MANUAL · DISABLED. NOT_WEBRTC_DISABLED is not offered for XIMA agents (400 RECORDING_MODE_NOT_ALLOWED). Cannot be cleared
canListenOwnRecordingsbooleanWhether the agent can listen to their own recordings
canDownloadOwnRecordingsbooleanNeeds canListenOwnRecordings
canListenSkillRecordingsbooleanWhether the agent can listen to recordings for their skills
canDownloadSkillRecordingsbooleanNeeds canListenSkillRecordings
canListenRoleRecordingsbooleanChangeable only while Agent Access to Recordings by Role is on (else 400 ROLE_RECORDINGS_NOT_ENABLED)
canDownloadRoleRecordingsbooleanNeeds canListenRoleRecordings; same tenant setting applies

ConnectedNumber

A phone the agent can take calls on.

FieldTypeDescription
namestringThe number's name
numberstringThe phone number
disablePress1ToAnswerbooleanTurns off the press-1 confirmation when answering
disableCallLinkbooleanTurns off Call Link for this number
enableSipSubscribebooleanTurns on SIP subscribe for this number
claimedBystringRead only: the agent currently using this number
rememberbooleanRead only

NoAnswerOverflow

FieldTypeDescription
destinationTypestringIVR · SKILL · AGENT · DIALABLE_NUMBER · VOICEMAIL_EXTENSION
destinationstringThe destination of that type

SkillLevel

One skill membership. Skills not listed are left alone.

FieldTypeDescription
skillIdstringThe skill's id from List Skills. Preferred
skillNamestringThe skill's exact name, used when skillId is absent
skillLevelinteger0 to 10. Above 0 adds or updates the membership; 0 removes it. Required to add

SkillSettings

Agent-wide settings across all the agent's skills, as in the admin skill grid. In a write, an omitted field is left as it is.

FieldTypeDescription
maxSimultaneousSessionsinteger0 to 50 concurrent interactions
voiceEnabledbooleanVoice participation
chatEnabledbooleanChat participation
emailEnabledbooleanEmail participation

OutboundCallerId

FieldTypeDescription
labelstringThe caller ID's label from the phone system
outboundCallerIdstringThe caller ID

OutboundCallerIdOptions

FieldTypeDescription
selectedOutboundCallerIdOutboundCallerIdThe caller ID the agent currently has selected
outboundCallerIdsarray of OutboundCallerIdEvery caller ID the phone system offers the agent

LicenseSeats

FieldTypeDescription
seatsarray of LicenseSeatOne entry per license: license, limit, assigned, remaining (negative when the tenant is over its limit), and concurrent (the license limits concurrent logins rather than assignments, so assigned can exceed limit)

AgentCreate

FieldTypeDescription
profileProfileRequired, with name, extension, and emailAddress
licensesarray of stringThe agent's complete set of licenses. Omit for the starter licenses (facet DEFAULTED)
skillLevelsarray of SkillLevelSkill memberships
skillSettingsSkillSettingsAgent-wide skill settings
sendWelcomeEmailbooleanDefaults to true

AgentUpdate

Only the fields present change. agent, name, extension, type, and email are accepted read only, so a fetched agent can be sent back.

FieldTypeDescription
idstringRequired in a bulk edit. On PATCH /v1/agents/{id}, must match the path if sent
profileProfileXIMA agents only
licensesarray of stringReplaces this agent's licenses with exactly this set. Omitted, the licenses are left alone — except that an edit carrying a profile re-adds the starter licenses if the agent has lost them
skillLevelsarray of SkillLevelSkill memberships to add, update, or remove
skillSettingsSkillSettingsAgent-wide skill settings
defaultOutboundCallerIdstring, OutboundCallerId, or nullA caller ID to set, or null to clear. Checked with the phone system before anything is saved

AgentBulkCreate

FieldTypeDescription
dryRunbooleanValidate every item and save nothing
agentsarray of AgentCreateRequired. 1 to 500 agents

AgentBulkUpdate

FieldTypeDescription
dryRunbooleanValidate every item and save nothing
agentsarray of AgentUpdateRequired. 1 to 500 agents, each with id

AgentDeleteConfirmation

FieldTypeDescription
agentstringRequired. The agent's name(extension), exactly

CallerIdToSet

FieldTypeDescription
outboundCallerIdstringRequired. The caller ID to set
labelstringIgnored: the label stored is the one the phone system gives the caller ID

WriteResponse

Returned by every write, single or bulk.

FieldTypeDescription
dryRunbooleanWhether the request was a dry run
resultsarray of WriteResultOne per item, in request order. Each carries index, id (present exactly when the agent exists after the request), agent, name, extension, email, type, status (CREATED · UPDATED · DELETED · REJECTED · VALID), facets, defaultOutboundCallerId, warnings, errors, and failures
summaryobjectCounts: created, updated, deleted, rejected, valid, and withFailures (items saved with at least one entry in failures)

Each result's facets reports profile, licenses, skillLevels, defaultOutboundCallerId, and welcomeEmail separately, each with a status of NOT_REQUESTED, APPLIED, DEFAULTED, VALID, REJECTED, NOT_APPLIED, or FAILED. See How Responses Work.

Problem

The application/problem+json body for every refusal the agent management endpoints make.

FieldTypeDescription
typestringA link to the guide section for this kind of refusal
titlestringThe HTTP reason phrase
statusintegerThe HTTP status
detailstringFor people; may change. Branch on errors[].reason
errorsarray of AgentErrorEach with facet, field (dotted path, or null), reason, message, and optional details
dryRun, results, summaryPresent on item-level refusals of a single write only

Every reason value is listed under Errors.

SimpleError

The older error shape, used for 401, the 403 for a Service User without full access, 405, 406, 415, and every error from the two older endpoints.

FieldTypeDescription
exceptionstringThe server's exception class name
messagestringFor people

Limits

LimitDescription
Bulk size500 agents per request. More returns 413 TOO_MANY_ITEMS
Body size10 MiB per request, by Content-Length, on every agent management endpoint. More returns 413 BODY_TOO_LARGE
ConcurrencyOne agent write at a time per tenant. A second concurrent write returns 429 WRITE_IN_PROGRESS — retry after a short wait, and never send writes in parallel
Caller ID checksUp to 7 seconds per check and 30 seconds per request. A check that cannot run returns 502 CALLER_ID_CHECK_FAILED with nothing saved

See API Limits & Statuses for statuses shared by every CCaaS API.


Related Pages