Update Recording
Update metadata for an existing recording.
PATCH
https://api.identitycall.ai/api/v1/public/recordings/:idUpdate the display name of a recording.
Requires write permission
Path Parameters
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
id | integer | Yes | - | Recording ID |
Request Body
Body Parameters (application/json)
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
display_name | string | No | - | New display name |
tags | string[] | No | - | Replaces the recording's entire tag set. Names are matched case-insensitively against the recording's project and created there if missing. |
operator_id | integer | null | No | - | Sets the operator credited with the call. Send null to clear it; omit the field to leave it unchanged. |
Changing tags
tags replaces the whole set rather than adding to it, so send the tags you want the recording to end up with — not just the new ones:
# recording ends up with exactly vip + escalated, whatever it had before
curl -X PATCH "https://api.identitycall.ai/api/v1/public/recordings/$PUBLIC_ID" \
-H "Authorization: Bearer $IDENTITYCALL_API_KEY" \
-H "Content-Type: application/json" \
-d '{"tags": ["vip", "escalated"]}'| You send | Result |
|---|---|
"tags": ["a", "b"] | Recording carries exactly a and b |
"tags": [] | Every tag is removed from the recording |
| field omitted | Tags are left exactly as they were |
To add one tag without knowing the current set, read it from Get Recording first and send the union. Removing a tag from one recording this way does not delete it from the project — for that, see Delete Tag.
Changing the operator
Use this to correct attribution after the fact, or to set it on recordings you uploaded before you had the agent roster mapped:
curl -X PATCH "https://api.identitycall.ai/api/v1/public/recordings/{public_id}" \
-H "Authorization: Bearer $IDENTITYCALL_API_KEY" \
-H "Content-Type: application/json" \
-d '{"operator_id": 42}'| You send | Result |
|---|---|
"operator_id": 42 | Operator 42 is credited, with source api |
"operator_id": null | The assignment is cleared |
| field omitted | The existing assignment is left alone |
An operator you set this way is not overwritten by voice identification or routing. See Attributing the call to an operator for how to look up ids.
Request
cURL
curl -X PATCH "https://api.identitycall.ai/api/v1/public/recordings/123" \
-H "Authorization: Bearer $IDENTITYCALL_API_KEY" \
-H "Content-Type: application/json" \
-d '{"display_name": "Q1 Sales Call - Updated"}'Response
Response200 OK
{
"data": {
"public_id": "018f3a00-0000-7000-8000-0000000000a1",
"name": "Q1 Sales Call - Updated",
"status": "completed",
"language": "en",
"duration_ms": 185000,
"created_at": "2025-01-15T10:30:00Z",
"updated_at": "2025-01-15T15:45:00Z",
"dialogues_count": 24,
"goals_evaluated": true,
"keywords_detected": 8,
"pauses_detected": 3,
"audio_attached": true
}
}Errors
| Status | Error | Description |
|---|---|---|
| 404 | “Resource not found” | Recording doesn’t exist |
| 422 | Validation errors | Invalid field values |