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"
}
}
Stops an in-progress recording. The call’s
recordingState moves to stopped; the finished audio is retrievable once the provider finalizes it.
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
stopped after this call. Transitions to ready once the audio is finalized.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. |