Skip to main content
POST
Places an outbound telephone call from one of your assigned numbers. When connectTo is supplied, Trackly dials that telephone target after the destination answers and bridges the conversation when the target answers. Hosted calling returns 201; Trackly-managed calling returns 202. Neither response proves an answered or bridged conversation. A managed 202 includes a Location header such as /api/v1/voice/calls/{call.id}. Request that path with the same API key to read the accepted call. For a salesperson using a browser headset, use Salesforce and browser calling. This endpoint does not attach a browser agent through connectTo. If your business is approved for agent-first outbound calling, use the browser calling flow; direct phone-first calls through this endpoint return 403 agent_first_required. When calling-review enforcement is enabled for your account, an unverified approval blocks new calls. Requires the voice_calls.write scope and the Voice Calls product entitlement.

Body Parameters

string
Omit this field or use hosted for hosted calling. Use managed for enabled Trackly-managed calling. Managed calls require an Idempotency-Key and retain the issuing API key’s ownership for later access and controls.
string
required
Destination phone number in E.164 format (e.g. +14155551234).
string
required
The calling number in E.164 format. Must be a number that has been assigned to your account.
string
A telephone destination to bridge the call to once it is answered. Accepts either an E.164 number or the id of a phone agent, not a browser agent. The resolved destination is screened against your account’s compliance suppression (DNC, opt-out, quiet hours) before dialing.
boolean
default:false
Request recording of this call leg from answer. On the hosted backend, joining a conference ends its individual recording; this does not enable hosted conference recording. For Trackly-managed calls, capture starts on the selected call leg when it answers. See call recording.
object
Key/value metadata retained on the call object. The hosted backend also forwards it to the provider. Values must be JSON-serializable.
object
An optional caller attestation to this recipient’s existing consent or confirmed contact: { "kind": "consent", "date": "YYYY-MM-DD" }. Normal Voice accounts can omit it. If supplied, kind and date are required; null and {} are invalid. The response contains {} when the request omitted this field. kind may be consent or confirmed_contact. Use the actual date, not an import, list-creation, or dial date, today’s date as a default, or an answer by an unidentified person. You may also provide an opaque evidenceReference from your records; if supplied, it must be stable, printable, at most 200 characters, and have no leading or trailing whitespace, phone number, email address, or message content. Trackly binds supplied provenance to this account and destination. Supplying it does not itself verify consent or run reassigned-number screening.
Authorized businesses can screen a US recipient as an optional, separate request before calling. Normal Voice accounts do not need that request or recipientProvenance to place a call; account-specific automatic screening admission is off by default. A business explicitly enrolled in automatic admission needs a qualifying date and a current screening result for US outbound recipients; it does not need to send a source-record reference to Trackly. If optional screening confirms reassignment, a seller-scoped restriction can block a new call to that recipient even when the call omits provenance. A no_data result does not establish a reassigned-number safe harbor.

Headers

string
Required for Trackly-managed calling: a nonblank key of at most 128 characters. Reuse the same key, API key and request body; changed input returns 409 idempotency_conflict. For hosted calling, this header is optional and an existing key returns its call without comparing the body; validation and compliance checks still apply, and a definitive rejection can release the key. An uncertain response can leave the original call pending, so reuse its key instead of starting another attempt.

Response Fields

object
The created call.

Examples

Error Codes