Gemini 3.8 Live

WEBSOCKET /v1/realtimeLow-latency voice conversation over one socket, with 30 voices, live video input, tool calling, and replies you can interrupt as you speak.
At a glance
Pricing
Example request
Parameters
Notes
Connecting
Full-duplex voice over a WebSocket at wss://api.empiriolabs.ai/v1/realtime?model=gemini-3-8-live, authenticated with the ordinary Authorization Bearer header. Configure the session with session.update before you send the first audio: voice, instructions, turn detection and tools. These settings are fixed once the conversation starts.
Sending audio and video
- Append microphone audio as
input_audio_buffer.appendevents: 16-bit PCM at 16 kHz, or at 24 kHz withinput_audio_formatset topcm24. - Append live video frames as
input_image_buffer.appendevents, as base64 JPEG or PNG images. - Voice activity detection is on by default, so keep streaming for about a second after the speech ends. Set
turn_detectionto null to end each turn yourself withinput_audio_buffer.commit.
Voices and language
- Use one of the 30 voices in the
voicelist, for example Puck, Kore or Charon. Any other value is refused. - The model replies in the language you speak.
Replies
- Speech streams as
response.audio.deltaevents, 16-bit PCM at 24 kHz, with the words asresponse.audio_transcript.deltaevents. Your own speech is transcribed as well. - Speaking while the model replies interrupts it.
Tools
- Function calling with JSON Schema parameters. Return each result as a
function_call_outputitem with itscall_id.
Billing
Audio and text tokens are priced separately in both directions, video frames bill as input tokens, and reasoning tokens bill as output tokens. Each completed turn is billed on its own from the usage the model reports, including a reply you interrupt.
Machine-readable schema: GET https://api.empiriolabs.ai/v1/models/gemini-3-8-live.
