Skip to main content

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:
  1. Get a LiveKit tokenPOST /voice/softphone/token joins your browser to the organization’s voice room and publishes your microphone.
  2. Dial the PSTN legPOST /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

  1. Open Developer → SDK Live Demo in the dashboard.
  2. 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.
  3. Destination: enter the destination in E.164 format (for example +15559876543). Pick a sandbox number or your own phone.
  4. Press Call and allow the microphone prompt.
  5. 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.