Recordings API
List, fetch, and mark recordings filed via the v1 API.
The recordings endpoints are the core of most integrations — poll for completed work, fetch full content, then mark recordings filed after syncing to an external system.
List recordings
GET /api/v1/recordingsScope: read:recordings
Primary polling endpoint for Zapier, Clio, Actionstep, and custom integrations. By default returns completed, unsynced recordings.
Query parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
status | string | COMPLETED | DRAFT, PENDING, TRANSCRIBING, REVIEW_PENDING, COMPLETED, ARCHIVED |
syncState | string | unsynced | unsynced, synced, or all |
updatedSince | ISO 8601 | — | Filter by last update time |
cursor | string | — | Pagination cursor from meta.nextCursor |
include | string | — | Set to content to include note/document bodies in the list response |
limit | integer | 100 | Min 1, max 500 |
Default list responses are metadata-first — no transcript or large content bodies. Fetch GET /recordings/:id for full content. Use include=content only when you need bodies in the list response (e.g. a single Zapier trigger step).
Example request
GET /api/v1/recordings?status=COMPLETED&syncState=unsynced&limit=50
Authorization: Bearer ardela_pk_...Example response
{
"data": [{
"id": "clxxx123",
"title": "Client Meeting Notes",
"status": "COMPLETED",
"priority": "MEDIUM",
"audioDuration": 180,
"notes": [{
"id": "note_1",
"templateName": "Meeting Notes",
"templateId": "tmpl_123",
"sortOrder": 1,
"createdAt": "2025-12-02T10:00:00.000Z"
}],
"documents": [{
"id": "doc_1",
"templateName": "Letter",
"templateId": "tmpl_456",
"sortOrder": 2,
"createdAt": "2025-12-02T10:00:00.000Z"
}],
"author": {
"id": "user123",
"name": "Jane Doe",
"email": "jane@firm.com"
},
"client": {
"id": "client123",
"name": "Acme Corp",
"referenceNumber": "CLI-001"
},
"matter": {
"id": "matter123",
"name": "Contract Review",
"referenceNumber": "MAT-2025-001"
},
"createdAt": "2025-12-02T10:00:00.000Z",
"updatedAt": "2025-12-02T10:30:00.000Z",
"lastSyncedAt": null,
"syncCount": 0
}],
"meta": {
"count": 1,
"limit": 50,
"hasMore": false,
"nextCursor": null
}
}Pagination
When meta.hasMore is true, pass meta.nextCursor as the cursor query parameter on the next request. Continue until hasMore is false.
Get a recording
GET /api/v1/recordings/:idScope: read:recordings
Returns full recording details including transcript, notes, documents, and sync metadata. Use this after the list endpoint when you need complete content.
Response fields
| Field | Description |
|---|---|
transcript | Full transcript text |
notes[] | Generated notes with content, template metadata |
documents[] | Generated documents with content, template metadata |
client, matter | Linked client and matter with reference numbers |
author | Recording author name and email |
lastSyncedAt, syncCount | Filing history |
List and detail responses include at most 50 note/document blocks per recording.
Mark recording filed
POST /api/v1/recordings/:id/filingsScope: write:recordings
Call after successfully creating a document or note in an external CRM or practice management system. Updates sync metadata so the recording no longer appears in syncState=unsynced polls.
Request body
{
"provider": "clio",
"externalId": "doc_123",
"externalUrl": "https://app.clio.com/documents/doc_123",
"filedAt": "2026-05-30T12:00:00.000Z",
"metadata": {
"matterId": "matter_123",
"documentType": "note"
}
}| Field | Required | Description |
|---|---|---|
provider | Yes | External system identifier (e.g. clio, actionstep, zapier) |
externalId | Yes | ID of the created record in the external system |
externalUrl | No | Link back to the external record |
filedAt | No | ISO 8601 timestamp (defaults to now) |
metadata | No | Provider-specific references (JSON object) |
Rules
- Recording must have
status: COMPLETED— filing draft or in-progress recordings returns 409 - Recording must belong to the API key's workspace
- Repeating the same
provider+externalIdis idempotent and does not incrementsyncCountagain
Example response
{
"success": true,
"data": {
"id": "clxxx123",
"lastSyncedAt": "2026-05-30T12:00:00.000Z",
"syncCount": 1,
"syncMetadata": {
"provider": "clio",
"externalId": "doc_123",
"externalUrl": "https://app.clio.com/documents/doc_123",
"filedAt": "2026-05-30T12:00:00.000Z",
"metadata": { "matterId": "matter_123" }
}
}
}Status values
| Status | Description |
|---|---|
DRAFT | Being edited |
PENDING | Queued for transcription |
TRANSCRIBING | Transcription in progress |
REVIEW_PENDING | Awaiting review |
COMPLETED | Ready to sync |
ARCHIVED | Archived |
Priority levels
LOW · MEDIUM · HIGH · URGENT
Related
- Integrations — Zapier and Clio examples
- Webhooks — push notifications for
recording.completed - Errors & limits
