Skip to main content

Make your first outbound PSTN call

Two paths turn a new Orbit account into a phone that dials the PSTN:
  • Option A — register a SIP trunk with your own PBX or softphone software, and let API-origin calls dial out over it.
  • Option B — the browser softphone, where an agent dials straight from a web page with no SIP client to install.
Both end at the same place: an outbound PSTN call with a readable lifecycle (ringingansweredcompleted). This guide walks either path end to end and links the deep-dive page for the path you pick.
Every outbound leg terminates through the Devotel softswitch. A trunk you register here is one origin surface; the termination path stays on Orbit’s own network either way.

1. Prerequisites

Which prerequisite applies depends on the path:
  • Option A (SIP/trunk): a SIP-capable PBX (FreeSWITCH, Asterisk, 3CX) or a desktop SIP client (for example MicroSIP or Linphone), plus inbound SIP-credentials you mint on the account.
  • Option B (browser softphone): an HTTPS page and a browser with a microphone grant — the same rules the browser softphone guide lists in full.
  • Either path: at least one voice-enabled DID in the account to present as caller ID, and an API key with voice scope if you dial via the API.

2. Buy a voice-capable number

If the account has no DID yet, work through Buy and provision numbers — search inventory with capabilities=voice (or sms,voice when messaging will share the number), purchase, and poll the order until the line reports provisioned:
Keep the E.164 of the purchased number — it is the from on every dial below, and it is the only caller ID the outbound surface accepts.

3. Option A — register a SIP trunk

This path connects your own phone system to Orbit. The full lifecycle (direction choice, probe-before-save, credential capture, routing, monitoring) is a nine-step walkthrough in Connect a SIP trunk; the short version for a first call:
  1. Create the trunk with the carrier-facing details:
  1. Register the device that will originate calls (your PBX, or a SIP client on an agent’s desk) against the SIP edge host shown in Settings → SIP trunks, using the digest or IP-allowlist auth the trunk is configured with.
  2. Skip to section 5 — once the originating surface exists, the dial step is identical to Option B.
A trunk that fails to register never carries the first call — run the pre-save probe (POST /api/v1/voice/sip-trunks/probe, exercised in sip-trunk-setup) and it names the failing phase (DNS, connect, or REGISTER) instead of a generic rejected call.

4. Option B — the browser softphone

The no-install path: mint a short-lived credential, connect the client, dial. The full guide is Set up the browser (WebRTC) softphone; on a first call you need three moves.
  1. Mint a token:
  1. From your own page, mount the SDK softphone and connect — a minimal HTML page:
  1. Dial from the browser, or call the endpoint directly once the client is connected:
Credentials live 60 minutes — re-mint before expiresAt instead of recycling. The browser-fallback reality and the inbound decision (DNIS → queue or SIP routing for inbound rings) live in the softphone guide.

5. Dial a single PSTN call

With either origin surface registered, the dial step is one API call — POST /api/v1/voice/calls. Pass the bought DID as from and any PSTN destination as to; a record: true flag captures the audio for the post-call read:
The 2xx response returns data.id (call_…) — the handle every later step uses. Options answer_url/staticVerbs, AMD, and metadata-level bookkeeping are at Program an outbound voice call; for a first call there is nothing to configure beyond to and from.

6. Read the lifecycle states

A call moves ringingin_progress → a terminal completed on answer (or failed / no-answer on a declined or unanswered ring). Poll the record:
…or subscribe to call.completed / call.failed webhooks under Settings → Webhooks and verify the delivery signature. The Voice calls page in the dashboard lists the same progression per call; the full state map and webhook payloads live in programmable-voice-call.

7. Common errors

These cover the failures a first outbound call hits in the wild: SIP failures past this short list are covered in Troubleshooting: SIP trunk down or calls failing; lifecycle outcomes that look like (no-answer, busy, unreachable) map in programmable-voice-call.

Where to go next