Recordings
A recording is a single call audio file plus everything IdentityCall derives from it — transcription, speaker-attributed dialogue, emotion signals, goal evaluations, categories, and a summary. Recordings belong to exactly one project and are identified externally by a UUIDv7 public_id.
Endpoints
| Endpoint | Method | Description |
|---|---|---|
/recordings | GET | List recordings (filter, paginate, full-text search) |
/recordings | POST | Upload a new recording |
/recordings/:id | GET | Get recording detail |
/recordings/:id | PATCH | Update metadata or reassign to a different project |
/recordings/:id | DELETE | Delete a recording (soft delete) |
/recordings/:id/transcription | GET | Get the full transcription |
/recordings/:id/results | GET | Get goal evaluations, pause analysis, and keyword detections |
/recordings/:id/summary | GET | Get the AI-generated call summary |
The :id path parameter accepts either the UUID public_id (preferred, stable) or the legacy numeric id (back-compat).
Idempotency
POST /recordings accepts an optional external_id parameter. Re-POSTing with the same (project_id, external_id) tuple returns the existing recording with 200 OK — the file is not re-uploaded and transcription is not re-enqueued. Use this for retry-safe ingestion from your CRM or PBX.
Scopes
| API key scope | Behavior |
|---|---|
| Account-wide | project_id is required on POST. Can read, update, and move recordings across any project in the account. |
| Project-scoped | project_id is optional on POST (defaults to the key’s project). Mismatched project_id returns 403. |
See the OpenAPI spec for the full request/response schemas.