Skip to main content
Voice is Beta. It works — real customers run real calls on it, in both directions — but it is switched on per account rather than sold on a plan, and the developer surface is read-only.
You have to ask us. Phone is not on any published plan’s price list. That is deliberate: “upgrade” points at a plan that does not grant it, and “coming soon” is simply false. Request it and we turn it on for your account.

What is built

Outbound

A campaign dials a lead list — one task per lead, with pause, resume and cancel.

Inbound

A caller dials your number and an agent answers. One running inbound campaign per workspace at a time.
Also live: test calls from the dashboard (in-browser, or a real call to a phone you name), call recordings, diarised transcripts and summaries, and metering into your usage. Not built: voice on the website widget. Website text chat is available; the audio widget is a separate thing and it does not exist.

Getting a number

Onboarding is deliberate rather than self-serve. There is no “buy a number” button.
1

Order

Pick a country and supply KYC documents.
2

We approve the KYC

3

We provision the number

Telephony partner details are entered, SIP trunks are created, and the number is activated.
Until a number has an active SIP trunk attached, starting a campaign fails with a message saying exactly that — it is not a silent no-op.

What a developer can reach

Voice is not on /api/v2/. The API surface is v1, read-mostly, and it cannot place a call.
There is no API way to start a call. Campaigns, jobs and phone-number routes deny API keys entirely — they are dashboard operations. An API key reads call records and writes a summary; that is the whole of it.
Recording visibility follows your plan’s retention setting: past the window, a recording stops being served through the API and the dashboard.

Getting told when a call ends

One webhook event fires today: Subscribe to it on /api/v2/webhooks/endpoints/ with webhooks:manage, and read deliveries back with webhooks:read.
The published event catalogue also lists call.started and call.failed. Neither is emitted yet. They are in the catalogue as declarations, not as promises you can build on — do not wait on one.Read the catalogue from code rather than hardcoding a list: GET /api/v2/webhooks/catalogue/.

How a call is answered

Media runs on a self-hosted LiveKit deployment with SIP trunking to the telephony provider. When a call connects, the worker asks the platform who should answer and what they know — the agent’s persona, its knowledge and its tools are the same ones the text channels use. Your assistant is one assistant, whichever channel reaches it. A voice turn bills to the phone channel, so telephony spend is reported as itself rather than folded into another channel’s column.

Limits worth knowing

  • One running inbound campaign per workspace. Per-number routing is not built.
  • Recording storage and retention are plan settings; retention is honoured for API and dashboard visibility.
  • Cancellation of an in-progress call is cooperative, like everywhere else on the platform.

Channels

Which channels exist and what each one can carry.

Webhooks

Signing, delivery and replay.