curl -X POST https://api.tracklysms.com/api/v1/voice/calls/665f1e2a9c4b1a0012ab34cd/recording/start \
-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": "requested",
"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)
Start Recording
Begin recording an active call.
POST
/
v1
/
voice
/
calls
/
{callId}
/
recording
/
start
curl -X POST https://api.tracklysms.com/api/v1/voice/calls/665f1e2a9c4b1a0012ab34cd/recording/start \
-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": "requested",
"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 recording on an active call. The call must be in one of the active states; the recording begins on the provider and the call’s
Requires the
recordingState moves to requested.
Recording calls is subject to consent laws that vary by jurisdiction — many US states and other countries require one-party or all-party consent. You are responsible for obtaining any consent the law requires before you start recording.
voice_calls.write scope and the Voice Calls product entitlement.
Path Parameters
string
required
The id of the call to record.
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
requested immediately after this call. Later transitions to started, stopped, ready, failed, or deleted.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/start \
-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": "requested",
"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_active | The call is not in an active state and cannot be recorded. |
| 409 | call_not_ready | The call has not yet been accepted by the provider. |
| 409 | recording_deleted | The recording for this call was deleted and cannot be restarted. |
| 502 | provider_error | The upstream telephony provider rejected the request. |