Skip to main content

Entry points

Common UI options

Accepted by both createFloating and createBar.

Floating only

Bar only

UI controllers

controller.destroy() removes the visual surface only. To release WebRTC, audio and the call lock:
If you supplied a shared dialer, destroy it only after every consumer has finished with it.

RingeeDialer methods

call(input)

Authentication states

AuthState: checking, anonymous, sending_code, awaiting_code, verifying, authenticated, expired, signed_out, error.

Call states

DialerState: uninitialized, initializing, ready, connecting, dialing, ringing, active, held, reconnecting, ending, ended, error.
The exact sequence may skip states depending on the browser, the network or the remote destination. Render from the current state; do not assume every state always fires.

Events

Every subscription returns an unsubscribe function:

Persistence

The agent session is stored in sessionStorage under a key scoped by integration and origin. It survives reloads in the same tab and is removed when the tab closes or signOut() runs. WebRTC credentials live only in memory and are minted again on restore. If a browser blocks sessionStorage, the SDK still works but asks for a code after every reload.

What happens under the hood

  1. The SDK reads window.location.origin.
  2. It sends the publishable key and origin to Ringee.
  3. The backend validates the signature, that the integration is active, and the exact origin.
  4. The SDK checks sessionStorage for an agent session.
  5. If present, Ringee revalidates it and returns a fresh WebRTC credential.
  6. Otherwise it requests email OTP authentication.
  1. The agent enters an email address.
  2. Ringee sends a one-time code without revealing whether the email exists.
  3. The agent verifies the code.
  4. The backend validates workspace membership and calling permissions.
  5. The browser receives a Ringee session and temporary WebRTC credentials.
  6. The SDK connects the engine and emits ready.
  1. The SDK validates E.164 locally.
  2. It acquires a lock so another tab cannot start a call.
  3. The backend validates the session, caller ID, credit, Do Not Call, blocks and contact.
  4. Ringee creates the call record and returns a signed correlation token.
  5. The browser requests microphone permission.
  6. The SDK starts the WebRTC call and maps provider states to Ringee states.
  7. On completion it releases audio and the lock, computes duration, and emits ended or failed.
The SDK never exposes SIP passwords, Telnyx JWTs or provider-specific objects to the host application.

Next steps

Errors

Every code and how to react

Security

CSP, iframes and self-hosting