Skip to main content
The Voice Calls API lets you place and receive phone calls programmatically. You call a simple REST API; Trackly handles the telephony provider and carrier connection for you. Use it to power click-to-call, outbound campaigns, inbound call queues with live agents, supervisor monitoring, and call recording.
Voice Calls is a distinct product served under the /v1/voice path. It is unrelated to the deprecated v1 SMS API. It must be enabled on your account before use — requests from an unentitled account return 403 voice_not_entitled.

Base URL

Authentication & scopes

Every request uses the same API-key authentication as the rest of the Trackly API — an X-Api-Key header (or Authorization: Bearer). See Authentication. Voice endpoints additionally require a product scope on the API key:

Core concepts

Calls

A single call leg. A primary call is the customer-facing leg; bridge and monitor legs are agents and supervisors joined into the call’s conference.

Queues

Inbound callers are parked on hold audio in a queue, then claimed FIFO by an agent via dequeue.

Agents

A reusable, named destination (a phone number). Reference an agent by its id in a connectTo field (place/answer/dequeue) or the to on monitor. The to on Place a Call is a plain E.164 number, not an agent id.

Recordings

Start/stop recording on an active call, then list and download the resulting audio files.

Call states

A call moves through these states. status=active on List Calls matches any non-terminal state.

Compliance

Every outbound dial to a phone number — to on Place a Call, and the resolved connectTo on place/answer/dequeue or the to on monitor — is screened against your account’s compliance suppression: Do-Not-Call, per-number opt-out, litigation/reassignment suppression, and TCPA quiet hours. This includes numbers that resolve from an agent. A blocked dial returns 403 with a compliance_* code.

Concurrency

Each account has a ceiling on simultaneous active calls. When it is reached, new calls return 429 concurrency_limit. Retry once existing calls complete.

Idempotency

Place a Call accepts an Idempotency-Key header. Reusing the same key returns the original call rather than placing a second one — safe for network retries.

Call recording

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 recording. See Start Recording.

Webhooks

Attach a notifyUrl to a queue to receive call.received and call.ended events; set a notifySecret to have them signed with X-Trackly-Signature. See Queue Webhooks.

Quickstart

Place an outbound call and bridge it to an agent on answer: