Data API — Recordings

API reference for listing CCaaS call recordings by time range and downloading the audio for a single recording.

The Recordings API lets an external system collect CCaaS call recordings programmatically — for archiving, quality assurance, compliance retention, or analysis in a third-party tool. Collection is a two-step process: list the recordings for a time range to get each recording's metadata and recordingKey, then download the audio for each recording one at a time.

📘

Interactive Reference

The same endpoints are available in the API Reference, where requests can be built and sent with Try It.


Overview

Base URLhttps://<hostname>.xima.cloud/rest/api
AuthenticationBearer token from an API Service User
Response formatJSON (recording list), OGG audio (recording audio)
LimitsOne audio request per 3 seconds per tenant, and a rolling 5-day egress cap 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.

Endpoints

MethodPathSummary
GET/v2/recordingsList recordings for a time range
GET/v2/recordings/{hostname}/{recording_key}/audioDownload the audio for one recording

List Recordings

GET /v2/recordings

Returns the metadata for every call recording within a time range. Each record describes the recording — the parties, call direction, skill, agent, and file size — but does not include the audio itself. Use each record's recordingKey with Download Recording Audio to download the audio.

GET https://<hostname>.xima.cloud/rest/api/v2/recordings

Parameters

NameInTypeRequiredDescription
startTimequerystring (ISO 8601)YesStart of the time range to query, including the time zone offset — for example, 2026-11-02T08:00:00.000-07:00
endTimequerystring (ISO 8601)YesEnd of the time range to query, including the time zone offset — for example, 2026-11-02T17:00:00.000-07:00
AuthorizationheaderstringYesBearer <api_bearer_token>
Content-TypeheaderstringYesapplication/json
📘

URL-Encode the Time Zone Offset

A + in a time zone offset (for example, +10:00) must be sent as %2B in the query string, or it is read as a space.

Responses

CodeDescription
200 OKAn array of Recording objects, one per recording in the time range. An empty array means no recordings matched
400 Bad RequeststartTime or endTime is missing or not a valid ISO 8601 date-time
401 UnauthorizedThe bearer token is missing, expired, or invalid
403 ForbiddenThe Service User does not have access to the requested data

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

Example Request

curl -L -X GET 'https://<hostname>.xima.cloud/rest/api/v2/recordings?startTime=2026-11-02T08:00:00.000-07:00&endTime=2026-11-02T17:00:00.000-07:00' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <api_bearer_token>'

Example Response — 200 OK

[
  {
    "recordingKey": "af66cf94-29fc-43f8-8228-b5640379578d-1793638800000",
    "callKey": "b4c3911a-7128-4da1-9ed6-d590f7c1a2b7-1793638776000-1793639868000",
    "startTime": 1793638800000,
    "duration": 1068993,
    "size": 0,
    "eventId": 99390,
    "recordingSystemId": 0,
    "status": "PENDING",
    "callingParty": "15550100147",
    "receivingParty": "Jane Doe(101)",
    "tenantName": "example-ns",
    "tagData": "Default",
    "callDirection": "INBOUND",
    "skill": "Sales",
    "agent": "Jane Doe(101)"
  }
]

Download Recording Audio

GET /v2/recordings/{hostname}/{recording_key}/audio

Returns the audio file for a single recording as an OGG-encoded binary stream. The recording_key comes from the recordingKey field, and hostname from the tenantName field, of a Recording returned by List Recordings.

GET https://<hostname>.xima.cloud/rest/api/v2/recordings/{hostname}/{recording_key}/audio
⚠️

One Recording per Request

Recording metadata can be listed in bulk, but audio must be requested one recording at a time, no more often than once every 3 seconds per tenant. Bulk audio exports are not supported.

Parameters

NameInTypeRequiredDescription
hostnamepathstringYesThe name of the CCaaS tenant the recording belongs to — the recording's tenantName
recording_keypathstringYesThe unique identifier of the recording — the recording's recordingKey
AuthorizationheaderstringYesBearer <api_bearer_token>
Content-TypeheaderstringYesaudio/ogg

Responses

CodeDescription
200 OKThe recording's audio as a binary stream. The response Content-Type is audio/ogg
401 UnauthorizedThe bearer token is missing, expired, or invalid
404 Not FoundNo recording with that recording_key exists for the tenant in hostname
429 Too Many RequestsMore than one audio request was sent within 3 seconds for the tenant. Wait and retry
509 Bandwidth Limit ExceededThe tenant's rolling 5-day recording egress cap has been reached

Example Request

curl -L -X GET 'https://<hostname>.xima.cloud/rest/api/v2/recordings/example-ns/af66cf94-29fc-43f8-8228-b5640379578d-1793638800000/audio' \
-H 'Content-Type: audio/ogg' \
-H 'Authorization: Bearer <api_bearer_token>' \
--output recording.ogg

Example Response — 200 OK

A binary OGG audio stream. Save the response body to a file, as the --output option does above.


Models

Recording

One call recording, as returned by List Recordings.

FieldTypeDescription
recordingKeystringThe unique identifier of the recording. Used as recording_key to download its audio
callKeystringThe identifier of the call the recording belongs to
startTimeinteger (int64)When the recording started, in milliseconds since January 1, 1970 (UTC)
durationinteger (int64)The length of the recording, in milliseconds
sizeinteger (int64)The size of the recording file
eventIdintegerThe identifier of the call event that was recorded
recordingSystemIdintegerThe identifier of the recording system that captured the recording
statusstringThe recording's processing status — for example, PENDING
callingPartystringThe party that placed the call — a phone number or an agent in name(extension) form
receivingPartystringThe party that received the call — a phone number or an agent in name(extension) form
tenantNamestringThe CCaaS tenant the recording belongs to. Used as hostname to download its audio
tagDatastringThe tag applied to the recorded call event
callDirectionstringThe direction of the call — for example, INBOUND
skillstringThe skill the recorded call was handled through, if any
agentstringThe agent on the recorded call, in name(extension) form

Limits

LimitDescription
Request frequencyAudio requests must not exceed one request per 3 seconds per tenant. Exceeding this returns 429 Too Many Requests. The limit is per tenant, so multiple tenants can be queried at the same time
Rolling egress capAudio downloads count against a rolling 5-day egress cap per tenant. Reaching the cap returns 509 Bandwidth Limit Exceeded; contact Xima Support to review usage
✅

Best Practice

Schedule recording collection to run nightly: list the previous day's recordings once, then download each recording's audio in sequence, no more often than once every 3 seconds.

See API Limits & Statuses for full details.


Related Pages