> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.empiriolabs.ai/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.empiriolabs.ai/_mcp/server.

# Gemini 3.8 Live

> Low-latency voice conversation over one socket, with 30 voices, live video input, tool calling, and replies you can interrupt as you speak.

![Gemini 3.8 Live](https://media.empiriolabs.ai/model-logos/gemini.png)

[Google](/providers/google) · Audio Generation

`WEBSOCKET /v1/realtime`

Low-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

| Field               | Value                                                                                  |
| ------------------- | -------------------------------------------------------------------------------------- |
| Model id            | `gemini-3-8-live`                                                                      |
| Model release date  | 2026-09-15                                                                             |
| Input modalities    | Audio, Text, Video                                                                     |
| Output modalities   | Audio, Text                                                                            |
| Context window      | 128K                                                                                   |
| Weight precision    | -                                                                                      |
| Max output tokens   | 65,536                                                                                 |
| Features            | realtime, speech_to_speech, audio_in, audio_out, video, function_calling, multilingual |
| Native inference    | No                                                                                     |
| New                 | Yes                                                                                    |
| Supported endpoints | `WEBSOCKET /v1/realtime`                                                               |
| Alternate model ids | `gemini-3.8-live`, `google/gemini-3.8-live`                                            |

## Pricing

| Charge        | Spec                          | Rate    |
| ------------- | ----------------------------- | ------- |
| Input: audio  | per 1M audio input tokens     | \$7.80  |
| Input         | per 1M prompt tokens          | \$2.60  |
| Output        | per 1M generated tokens       | \$11.70 |
| Output: audio | per 1M generated audio tokens | \$31.20 |

## Example request

```python
import asyncio, json, os, websockets

URL = "wss://api.empiriolabs.ai/v1/realtime?model=gemini-3-8-live"

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

| Parameter             | Type   | Required | Default                            | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| --------------------- | ------ | -------- | ---------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `voice`               | enum   | no       | `"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` |
| `instructions`        | string | no       | -                                  | System guidance for how the model behaves and speaks. Set it with session.update before the conversation starts.                                                                                                                                                                                                                                                                                                                                                                        |
| `temperature`         | number | no       | -                                  | Sampling temperature from 0 to 2. Lower values make replies more consistent. Set it before the conversation starts. · Range: 0 – 2                                                                                                                                                                                                                                                                                                                                                      |
| `input_audio_format`  | enum   | no       | `"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_format` | enum   | no       | `"pcm24"`                          | Encoding of the audio the model streams back: 16-bit PCM at 24 kHz. · Allowed: `pcm24`                                                                                                                                                                                                                                                                                                                                                                                                  |
| `turn_detection`      | string | no       | `&#123;"type": "server_vad"&#125;` | 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`, 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.

**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`.