Voice Calls
Have a live speech-to-speech conversation with a model in the browser
Voice Calls turns Lounge into a phone line to a model. Pick a realtime model and a voice, start the call, and talk — the model listens, answers out loud, and the transcript builds as you go. Every call runs over the same Realtime API your own apps can use.

Starting a Call
- Pick a model from the selector — only models with an active realtime mapping appear, newest first
- Pick a Voice — the voice list comes from the selected model, so it changes when you switch models
- Click Start call and allow microphone access when the browser asks
The status label on the right walks through the handshake — preparing audio, requesting the microphone, authorizing, connecting, configuring — and settles on Live with a call timer next to it. The model and voice are locked for the duration of the call; end it to change either.
Your browser never sees an API key. The page mints a short-lived client secret server-side for the call, and the audio itself is streamed as 24 kHz PCM with echo cancellation and noise suppression on.
During the Call
The model uses semantic voice activity detection, so there is no push-to-talk: stop speaking and it answers, start speaking again and it stops to listen. An interrupted answer stays in the transcript marked (interrupted).
| Control | What it does |
|---|---|
| Mute / Unmute | Stops sending your microphone audio without ending the call |
| End call | Hangs up and saves the call to your history |
| Voice activity indicator | Shows who currently has the floor, and your mute state |
Below the controls, a usage line totals the call: how many responses it took, input and output tokens, and how many of those were audio tokens.
Voice calls are billed to a pay-as-you-go organization with credits, so the organization switcher on this page only lists those — DevPass and Lounge membership workspaces can't place calls. Without one selected, the page asks you to create one in the dashboard first.
Call History
Ended calls are saved per organization and listed in the sidebar, grouped by date, with each call's duration and time. Click one to reopen its transcript, along with the model and voice it used and its token totals. Use the ⋮ menu on a call to rename or delete it, and New Call to get back to a fresh screen.
Calls are titled from your opening line, so history reads like a list of topics. A call you leave mid-conversation — by navigating away or closing the tab — is still saved with whatever was said up to that point.

Using It From Your Own App
The same endpoint backs the Realtime API: connect a WebSocket to wss://api.llmgateway.io/v1/realtime, authenticate with an API key, and use the standard OpenAI realtime event protocol. For browser clients, mint an ephemeral client secret from your backend instead of shipping a key:
curl -X POST "https://api.llmgateway.io/v1/realtime/client_secrets" \
-H "Authorization: Bearer $LLM_GATEWAY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"expires_after": { "anchor": "created_at", "seconds": 120 },
"session": { "type": "realtime", "model": "gpt-realtime" }
}'Calls made here appear in your activity feed and analytics like any other request, with audio input and output costs broken out.
How is this guide?
Last updated on