Test your browser calling setup with the SDK demo
The dashboard ships a built-in test-call page, Developer → SDK Live
Demo, at /developer/sdk-demo. It places a real outbound call from
the browser through LiveKit/WebRTC — the same path the dashboard
softphone and the Softphone component in the Web SDK
use — so you can verify your whole browser-calling chain from one
screen.
This page exists to give developers a safe, supported way to place a
test call. The raw SIP-over-WSS register path in the Web SDK depends on
a SIP WSS gateway being provisioned, and in most environments it
is not — a raw SIP client will fail to register. The demo rides the
LiveKit/WebRTC path instead, which works out of the box. To embed the
same path in your own app, follow
the browser softphone setup guide.
Demo calls are real outbound calls, billed to your organization. Dial a
sandbox number or your own phone while testing — not a customer.
Who can open it
Placing a call spends wallet credit, so the page is restricted to the
owner, admin, and developer roles. Agents, viewers, and
billing roles can’t reach it. If the page doesn’t appear in your
Developer menu, ask an org owner for one of those roles.
What it exercises
The demo runs the same two-step sequence every browser softphone uses:
- Get a LiveKit token —
POST /voice/softphone/token joins your
browser to the organization’s voice room and publishes your
microphone.
- Dial the PSTN leg —
POST /voice/softphone/dial bridges the
room to the phone number over the wholesale softswitch.
The page shows the call state (connecting, dialing, ringing,
on_call, reconnecting, failed) and, when a call fails, the
specific reason inline — for example a blocked microphone, a caller ID
your org doesn’t own, or a compliance quiet-hours window. The Web SDK
Softphone component runs the same sequence internally.
Place a test call
- Open Developer → SDK Live Demo in the dashboard.
- Caller ID (optional): enter an E.164 number your org owns (for
example
+14155552671). Leave it blank and the API picks your first
dialable number — ownership is enforced either way.
- Destination: enter the destination in E.164 format (for example
+15559876543). Pick a sandbox number or your own phone.
- Press Call and allow the microphone prompt.
- Watch the state badge through
ringing into on_call, then read the
result — a failed call shows the specific reason inline, and
in-call controls let you toggle mute or send DTMF tones.
If the call fails with an ownership error on the caller ID, buy or
port the number first (the caller ID gate is an ownership check, not a
format check). If the microphone prompt never appears, confirm you’re
on HTTPS and that the browser has mic permission for the dashboard
origin.
Where to go next
- Browser softphone setup —
register devices, mint credentials, route inbound, and embed the
softphone in your own app.
- Web SDK — the
Softphone component and its event map.
- API reference — the
/voice/softphone/token and
/voice/softphone/dial endpoints behind this page.