List Recordings
Retrieve a paginated list of completed recordings.
GET
https://api.identitycall.ai/api/v1/public/recordingsReturns a list of recordings with their status and metadata.
Requires read permission
Query Parameters
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
page | integer | No | 1 | Page number |
per_page | integer | No | 20 | Items per page (1-100) |
status | string | No | - | Filter by transcription status |
date_from | string | No | - | Only calls at or after this time (called_at, or created_at when unknown). A date (2026-10-01) starts that day in the account time zone; a timestamp (2026-10-01T08:00:00+03:00, URL-encode + as %2B) is exact. Invalid values return 400. |
date_to | string | No | - | Only calls at or before this time. A date (2026-10-31) includes that whole day; a timestamp is exact. Works alone or with date_from. |
operator_id | integer | No | - | Only recordings this operator took part in, as the credited operator or as the colleague on the other end of an internal call. Get ids from GET /operators or the operators list in GET /recordings/filters. |
agent_id | integer | No | - | Deprecated. Filters by the internal voice-cluster identity. Use operator_id. |
Request
cURL
curl -X GET "https://api.identitycall.ai/api/v1/public/recordings?page=1&per_page=20" \
-H "Authorization: Bearer $IDENTITYCALL_API_KEY"Response
Response200 OK
{
"data": [
{
"public_id": "018f3a00-0000-7000-8000-0000000000a1",
"name": "Sales Call - John Smith",
"status": "completed",
"duration_ms": 185000,
"created_at": "2025-01-15T10:30:00Z",
"speakers": ["Speaker 1", "Speaker 2"],
"goal_achievement": 87.5
},
{
"public_id": "018f3a00-0000-7000-8000-0000000000a2",
"name": "Support Call #4521",
"status": "completed",
"duration_ms": 420000,
"created_at": "2025-01-15T11:45:00Z",
"speakers": ["Agent", "Customer"],
"goal_achievement": 100.0
}
],
"meta": {
"current_page": 1,
"total_pages": 5,
"total_count": 98,
"per_page": 20
}
}Response Fields
| Field | Type | Description |
|---|---|---|
id | integer | Unique recording ID |
name | string | Recording display name |
status | string | Transcription status (pending, processing, completed, failed) |
duration_ms | integer | Recording duration in milliseconds |
called_at | string | null | When the call happened (ISO 8601), as reported by the phone system. date_from/date_to filter on it. |
created_at | string | When the recording was imported (ISO 8601) |
speakers | array | List of speaker labels |
goal_achievement | number | null | Percentage of goals met (0-100) by the credited operator. For the colleague on an internal call, read participants. |
client_assessment | object | null | How the customer did against the project’s client criteria: { percentage, met_count, total_count, conflict, criteria: [{ name, met, reasoning }] }. Never part of the operator’s score; null when the call was not assessed. See Results. |
participants | array | Everyone from your roster on the call, credited operator first: { operator_id, name, side, goal_achievement }. side is ours for the credited operator and far for a colleague on the other end. Each person has their own goal_achievement (null until they are evaluated). Empty when the call has no credited operator. |
operator | object | null | Who handled the call: { id, name, source }. source records how the attribution was made — api when you sent operator_id, manual or review when someone chose in-app, voice or routing when IdentityCall inferred it. This is the identity every performance metric credits. |
agent | object | null | Deprecated. The internal voice-cluster identity ({ id, name }), which exists only when speaker identification has matched one. Read operator instead. |
Internal calls recorded on both lines
When two colleagues talk and both lines are recorded, the call is returned once. The item is whichever of the two recordings was imported first (its operator may be the caller or the callee); both people appear in participants, each with their own goal_achievement, and GET /recordings/:id/results on that item returns the goal results of both, marked by subject_operator_id. Filtering by operator_id finds the call by either person.