curl -X POST https://api.tracklysms.com/api/v1/voice/calls/665f1e2a9c4b1a0012ab34cd/recording/stop \
-H "X-Api-Key: trk_your_api_key_here"
{
"call": {
"id": "665f1e2a9c4b1a0012ab34cd",
"direction": "outbound",
"state": "established",
"legKind": "primary",
"from": "+18005551234",
"to": "+14155551234",
"connectTo": "+14155559876",
"queueId": null,
"conferenceId": "665f1e2a9c4b1a0012abc0de",
"parentCallId": null,
"bridgedCallId": "665f1e2a9c4b1a0012ab77aa",
"monitorRole": null,
"record": true,
"recordingState": "stopped",
"recordingFileIds": [],
"customData": { "caseId": "abc-123" },
"error": null,
"startedAt": "2026-08-21T18:00:00.000000Z",
"answeredAt": "2026-08-21T18:00:12.000000Z",
"endedAt": null,
"createdAt": "2026-08-21T18:00:00.000000Z"
}
}
Voice Calls (v1)
Stop Recording
Stop recording a call.
POST
/
v1
/
voice
/
calls
/
{callId}
/
recording
/
stop
curl -X POST https://api.tracklysms.com/api/v1/voice/calls/665f1e2a9c4b1a0012ab34cd/recording/stop \
-H "X-Api-Key: trk_your_api_key_here"
{
"call": {
"id": "665f1e2a9c4b1a0012ab34cd",
"direction": "outbound",
"state": "established",
"legKind": "primary",
"from": "+18005551234",
"to": "+14155551234",
"connectTo": "+14155559876",
"queueId": null,
"conferenceId": "665f1e2a9c4b1a0012abc0de",
"parentCallId": null,
"bridgedCallId": "665f1e2a9c4b1a0012ab77aa",
"monitorRole": null,
"record": true,
"recordingState": "stopped",
"recordingFileIds": [],
"customData": { "caseId": "abc-123" },
"error": null,
"startedAt": "2026-08-21T18:00:00.000000Z",
"answeredAt": "2026-08-21T18:00:12.000000Z",
"endedAt": null,
"createdAt": "2026-08-21T18:00:00.000000Z"
}
}
Requests that this leg’s individual recording stop. The latest
recordingControl describes command processing; recordingState retains any already advanced aggregate state. Audio is retrievable when the provider finalizes it. After an uncertain response, inspect the call before retrying.
Requires the voice_calls.write scope and the Voice Calls product entitlement.
Path Parameters
string
required
The id of the call whose recording should stop.
Response Fields
object
The updated call.
Hide Call properties
Hide Call properties
string
The call’s unique identifier.
string
inbound or outbound.string
Lifecycle state. See Call states.
string
primary, bridge, or monitor.string
The calling number.
string
The destination number.
string | null
The resolved bridge target, if any.
string | null
The queue this call is parked in, if any.
string | null
The provider conference id once a bridge or monitor leg is attached.
string | null
For a bridge/monitor leg, the primary call it belongs to.
string | null
For a primary call, the currently bridged agent leg.
string | null
MONITOR or ADVISOR for a monitor leg.boolean
Whether recording was requested.
string | null
Aggregate recording telemetry:
stopped or an already advanced state. It does not identify the outcome of a later start command.object | null
Latest explicit command:
action, generation, and processing status. Completion confirms the command outcome, not observed recording audio. See recording controls.array
Provider file ids for completed recordings.
object
Metadata carried on the call object.
string | null
A machine-readable reason when the call failed.
string | null
ISO 8601 timestamp when the call was placed.
string | null
ISO 8601 timestamp when the call was answered.
string | null
ISO 8601 timestamp when the call ended.
string | null
ISO 8601 timestamp when the record was created.
Examples
curl -X POST https://api.tracklysms.com/api/v1/voice/calls/665f1e2a9c4b1a0012ab34cd/recording/stop \
-H "X-Api-Key: trk_your_api_key_here"
{
"call": {
"id": "665f1e2a9c4b1a0012ab34cd",
"direction": "outbound",
"state": "established",
"legKind": "primary",
"from": "+18005551234",
"to": "+14155551234",
"connectTo": "+14155559876",
"queueId": null,
"conferenceId": "665f1e2a9c4b1a0012abc0de",
"parentCallId": null,
"bridgedCallId": "665f1e2a9c4b1a0012ab77aa",
"monitorRole": null,
"record": true,
"recordingState": "stopped",
"recordingFileIds": [],
"customData": { "caseId": "abc-123" },
"error": null,
"startedAt": "2026-08-21T18:00:00.000000Z",
"answeredAt": "2026-08-21T18:00:12.000000Z",
"endedAt": null,
"createdAt": "2026-08-21T18:00:00.000000Z"
}
}
Error Codes
| Status | Code | Meaning |
|---|---|---|
| 403 | voice_not_entitled | Voice calling is not enabled for your account. |
| 404 | call_not_found | No call with that id exists on your account. |
| 409 | call_not_ready | The call has not yet been accepted by the provider. |
| 502 | provider_error | The upstream telephony provider rejected the request. |