Choose the right voice product
Voice on Devotel Orbit has three outbound surfaces. Pick the wrong one and you end up re-platforming the flow a month in. This page routes you to the right one once, then links deeper setup guides for each.Three surfaces, three jobs
Browser softphone — a human agent talks. Place and answer PSTN calls from a browser (or embedded SIP/web client), with queues, extensions, hold, transfer, and disposition codes. Set it up with the browser softphone guide. Outbound dialer — a campaign dials a list, agents take answered calls. Predictive, progressive, preview, and agentless modes with pacing, DNC scrubbing, abandon-rate ceilings, and dispositions built in. Set it up with the outbound dialer campaign guide.POST /voice/calls — your server originates a call with one request.
One-off programmatic legs: a reminder, a page-cast, a click-to-call from
your CRM, or a dial leg inside a programmable flow. Program what happens
when the callee answers either inline (staticVerbs) or by pointing the
call at a URL on your server (answer_url). See the
Voice API reference for the request shape and the
programmable DSL reference for the
verb vocabulary.
Decision table
All three surfaces read the same call log after the
fact — pick a surface on who DRIVES the call, not on where the record
lands.
Common workflows mapped
A BDR team working leads. The person decides when to dial and what to say, so a person drives the call: give them the browser softphone. If the team also uploads a shared list and works it top-down, that list belongs in the dialer even when humans talk — see the hybrid note below. A scheduled appointment reminder. Your scheduler firesPOST /voice/calls per appointment with staticVerbs — a say with the
reminder text, optionally a gather to confirm or rebook. No list, no
agent, one request per reminder. If the reminder must offer “press 1 for an
agent,” let the verb sequence dial the queue or ring group.
A canary ops page-cast. Your alerting runbook posts one call per
on-call rotation with an answer_url; when the engineer answers, your
server returns the verbs — read back the alert and offer a dial-leg into
the incident bridge. The fallback (answer_fallback) decides what the
callee hears if your endpoint is unreachable.
Hybrid patterns
Start withPOST /voice/calls when volume is small or trigger-driven: a
few hundred reminders a day, internal tooling, a new-segment experiment.
Move the flow to the dialer when you need campaign machinery the API
surface deliberately lacks — ordered priority across contacts, pacing that
respects agent availability and the abandonment ceiling, DNC persisted
across campaigns, and disposition-driven retries.
The softphone and the API also coexist: an agent works inbound queues on
the softphone while your back office originates product-click-to-call legs
via POST /voice/calls that route into the same queues.
Entry points per surface
- Softphone — Set up the browser (WebRTC) softphone, plus the embedded SDK demo if the client lives in your own app.
- Dialer — Launch an outbound dialer campaign; the exact request shapes sit in the dialer API reference.
- Programmatic calls —
POST /voice/callson the Voice API reference; the DSL verbs (say,gather,dial,hangup, …) are catalogued in the programmable voice DSL reference.
When NOT to expose the API
If the goal is to forward inbound PSTN calls to your own PBX or carrier rather than to originate AI-flow/agent legs on Orbit, you don’t want a call-origination API at all — you want a SIP trunk. Provision termination and origination trunks and route the numbers over them; the API surfaces above stay unused. See the SIP trunk setup guide.Glossary
AMD — Answering Machine Detection. The carrier flags the answered side as a person or a machine so a campaign can drop voicemails and a flow can branch. In the dialer it’s a campaign setting; overPOST /voice/calls
send amd: true.
STIR/SHAKEN — the caller-ID attestation framework carriers use to grade
how trustworthy your outbound number’s identity is. Orbit attaches the
attestation level to each outbound leg so downstream networks treat
verified calls accordingly; nothing for you to compute at call time.
DNC — Do-Not-Call. The dialer enforces your workspace’s DNC registry
before every attempt, and any contact can be scrubbed back into no-dial
status from the suppression surfaces. Consent and quiet-hours are required
before a contact enters a list at all — the
dialer campaign guide walks the
eligibility gates.
Verify your choice
Dial one test call matching the surface you picked and confirm the path end to end: the softphone rings a browser, the dialer paces one list row to one agent, andPOST /voice/calls returns 201 with a call id that appears in
the shared call log. Then build the real flow on the surface that passed.