Skip to main content
The Calling SDK lets your web app place real voice calls from the browser over WebRTC — no plugins. You embed one script, hand it an API key, and call connect() then initCall(). Wave handles the SIP registration, media, and the short-lived session credentials for you.
Web Calling uses the webrtc:write scope. In sandbox, calls are origin-locked and destination-locked to your signup number; a production key (sk_live_) removes the destination lock.

Install

Before you start

  1. Allow your origin. In the Wave dashboard, add the origin your app runs on (e.g. https://app.example.com) to your project’s allowed origins. The SDK fetches its session from /v1/webrtc/config, which rejects any origin that isn’t on the list.
  2. Use a webrtc:write key. The key is sent from the browser, so it’s origin-locked by design.
A key embedded in a browser is visible to anyone who loads your page. Wave origin-locks it (and destination-locks it in sandbox) to contain the blast radius — but for production, treat the embedded key as public and scope it to webrtc:write only.

Quickstart

Configuration

new WaveSDK(config, events)

Methods

Events

Pass handlers in the second argument to the constructor.
You never handle the SIP password or session token yourself. The SDK fetches them, keeps the call alive, and auto-rotates the credential about a minute before it expires.

Error codes

onFailed(error) gives you an error.code:

Next steps

How voice works

Where a browser call sits in the call lifecycle.

Calls & recordings

Read the log and fetch a recording.