Gemini 3.8 Live Extended Thinking

Gemini 3.8 Live Extended Thinking
Google · Audio Generation
WEBSOCKET /v1/realtime

Voice conversation that keeps talking while it reasons in the background, with 30 voices, live video input, tool calling, and adjustable reasoning effort.

At a glance

FieldValue
Model idgemini-3-8-live-extended-thinking
Model release date2026-09-15
Input modalitiesAudio, Text, Video
Output modalitiesAudio, Text
Context window128K
Weight precision-
Max output tokens65,536
Featuresrealtime, speech_to_speech, audio_in, audio_out, video, function_calling, reasoning, multilingual
Native inferenceNo
NewYes
Supported endpointsWEBSOCKET /v1/realtime
Alternate model idsgemini-3.8-live-extended-thinking, google/gemini-3.8-live-extended-thinking

Pricing

ChargeSpecRate
Input: audioper 1M audio input tokens$7.80
Inputper 1M prompt tokens$2.60
Outputper 1M generated tokens$11.70
Output: audioper 1M generated audio tokens$31.20

Example request

import asyncio, json, os, websockets
URL = "wss://api.empiriolabs.ai/v1/realtime?model=gemini-3-8-live-extended-thinking"
async def main():
async with websockets.connect(
URL,
additional_headers=[("Authorization", f"Bearer {os.environ['EMPIRIOLABS_API_KEY']}")],
max_size=None,
) as ws:
print(json.loads(await ws.recv())["type"]) # session.created
await ws.send(json.dumps({
"type": "conversation.item.create",
"item": {"type": "message", "role": "user",
"content": [{"type": "input_text", "text": "Say hello."}]},
}))
await ws.send(json.dumps({"type": "response.create"}))
async for raw in ws:
event = json.loads(raw)
if event["type"] == "response.done":
break
asyncio.run(main())

Parameters

ParameterTypeRequiredDefaultDescription
voiceenumno"Puck"Speaking voice for the session. Set it with session.update before the conversation starts; it cannot change afterwards. · Allowed: Zephyr, Puck, Charon, Kore, Fenrir, Leda, Orus, Aoede, Callirrhoe, Autonoe, Enceladus, Iapetus, Umbriel, Algieba, Despina, Erinome, Algenib, Rasalgethi, Laomedeia, Achernar, Alnilam, Schedar, Gacrux, Pulcherrima, Achird, Zubenelgenubi, Vindemiatrix, Sadachbia, Sadaltager, Sulafat
instructionsstringno-System guidance for how the model behaves and speaks. Set it with session.update before the conversation starts.
reasoning_effortenumno"medium"How much the model reasons in the background while it talks. Higher effort uses more output tokens. Set it before the conversation starts. · Allowed: low, medium, high
temperaturenumberno-Sampling temperature from 0 to 2. Lower values make replies more consistent. Set it before the conversation starts. · Range: 0 – 2
input_audio_formatenumno"pcm16"Encoding of the audio you append to the input buffer: pcm16 is base64 16-bit PCM at 16 kHz, and pcm24 is the same at 24 kHz. · Allowed: pcm16, pcm24
output_audio_formatenumno"pcm24"Encoding of the audio the model streams back: 16-bit PCM at 24 kHz. · Allowed: pcm24
turn_detectionstringno{"type": "server_vad"}Server-side voice activity detection. Decides when you have stopped speaking and the model should reply. It is on by default; set it to null to end each turn yourself with input_audio_buffer.commit.

Notes

Connecting

Full-duplex voice over a WebSocket at wss://api.empiriolabs.ai/v1/realtime?model=gemini-3-8-live-extended-thinking, 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.append events: 16-bit PCM at 16 kHz, or at 24 kHz with input_audio_format set to pcm24.
  • Append live video frames as input_image_buffer.append events, 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_detection to null to end each turn yourself with input_audio_buffer.commit.

Voices and language

  • Use one of the 30 voices in the voice list, 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.delta events, 16-bit PCM at 24 kHz, with the words as response.audio_transcript.delta events. Your own speech is transcribed as well.
  • Speaking while the model replies interrupts it.

Reasoning

  • reasoning_effort sets how much the model reasons in the background while it talks: low, medium (the default) or high. Set it before the conversation starts.
  • The model often acknowledges a question first and answers in a second turn. Each turn is billed on its own.

Tools

  • Function calling with JSON Schema parameters. Return each result as a function_call_output item with its call_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-extended-thinking.