curl "https://api.tracklysms.com/api/v1/voice/calls?status=active&limit=50" \
-H "X-Api-Key: trk_your_api_key_here"
{
"calls": [
{
"id": "665f1e2a9c4b1a0012ab34cd",
"direction": "outbound",
"state": "established",
"legKind": "primary",
"from": "+18005551234",
"to": "+14155551234",
"connectTo": "+14155559876",
"queueId": null,
"conferenceId": "665f1e2a9c4b1a0012ab34ce",
"parentCallId": null,
"bridgedCallId": "665f1e2a9c4b1a0012ab34cf",
"monitorRole": null,
"record": true,
"recordingState": "started",
"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)
List Calls
List your voice calls newest-first, filterable by status and queue.
GET
/
v1
/
voice
/
calls
curl "https://api.tracklysms.com/api/v1/voice/calls?status=active&limit=50" \
-H "X-Api-Key: trk_your_api_key_here"
{
"calls": [
{
"id": "665f1e2a9c4b1a0012ab34cd",
"direction": "outbound",
"state": "established",
"legKind": "primary",
"from": "+18005551234",
"to": "+14155551234",
"connectTo": "+14155559876",
"queueId": null,
"conferenceId": "665f1e2a9c4b1a0012ab34ce",
"parentCallId": null,
"bridgedCallId": "665f1e2a9c4b1a0012ab34cf",
"monitorRole": null,
"record": true,
"recordingState": "started",
"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"
}
]
}
Returns your account’s voice calls by stored creation time descending, then call ID descending when timestamps match. Legacy calls without a creation timestamp appear last, ordered by call ID descending, with
createdAt: null. Call IDs are identifiers, not timestamps.
Filter by lifecycle status or queue, and page through results with the cursor returned on each response. Filters are evaluated on each request.
Requires the voice_calls.read scope and the Voice Calls product entitlement.
Query Parameters
string
Filter by lifecycle state. Pass
active for all non-terminal calls, or a specific state (e.g. established). See Call states.string
Return only calls associated with this queue id.
string
Pass the raw call ID returned as
nextCursor to continue after that call’s stored creation time and ID. The cursor call must still be visible to this endpoint in your account, but need not still match the status or queue filter.integer
default:50
Maximum number of calls to return. Maximum
100.Response Fields
array
The matching calls, ordered by stored creation time descending and then call ID descending. Calls without a creation timestamp appear last.
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, started, stopped, ready, failed, or deleted.array
Provider file ids for completed recordings.
object
The metadata attached to the call.
string | null
A machine-readable reason when the call failed.
string | null
ISO 8601 timestamp when the call started.
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.
string
The last returned call ID. Returned whenever the page is full (the number of results equals
limit), indicating there may be more. Pass it back unchanged as the cursor query parameter to fetch the next page; a page that comes back with fewer results than limit (or empty) is the end.Examples
curl "https://api.tracklysms.com/api/v1/voice/calls?status=active&limit=50" \
-H "X-Api-Key: trk_your_api_key_here"
{
"calls": [
{
"id": "665f1e2a9c4b1a0012ab34cd",
"direction": "outbound",
"state": "established",
"legKind": "primary",
"from": "+18005551234",
"to": "+14155551234",
"connectTo": "+14155559876",
"queueId": null,
"conferenceId": "665f1e2a9c4b1a0012ab34ce",
"parentCallId": null,
"bridgedCallId": "665f1e2a9c4b1a0012ab34cf",
"monitorRole": null,
"record": true,
"recordingState": "started",
"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 |
|---|---|---|
| 422 | invalid_status | The status value is not active or a known call state. |
| 422 | invalid_queue | queue is not a valid queue id. |
| 422 | invalid_cursor | cursor is malformed, identifies a missing call, or identifies a call that is not visible to this endpoint in your account. |
| 403 | voice_not_entitled | Voice calling is not enabled for your account. |