GenAIWiki
intermediate

Build a Voice Session with GPT-Live-1

Stand up an OpenAI GPT-Live-1 session: full-duplex voice, $0.05/min billing, backend delegation, and when to use Gemini 3.8 Live or ASR instead.
gpt-livevoiceopenairealtimeasrgemini-live

11 min read

FeaturedUpdated 6 weeks agoVerified 41 days ago

Key insights

Concrete technical or product signals.

  • Live is the conversation front-end. Delegation is where tools and facts live.
  • Sessions are $0.05/min billed per second; backend tokens are extra.
  • GPT-Live-1 mini is ChatGPT-only. Gemini 3.8 Live is a different Google Live API SKU.

Use cases

Where this shines in production.

  • Replacing a chained STT to LLM to TTS stack
  • Voice agents that keep talking during a lookup
  • Deciding that you only needed ASR or Gemini Live instead

Limitations & trade-offs

What to watch for.

  • This page shows the server session create. Browser microphone and speaker wiring is in the official WebRTC quickstart.
  • Free API tier is not supported on the model card.
  • Do not use Live for batch transcription.

GPT-Live-1 is OpenAI's full-duplex voice model. The API ID is gpt-live-1. It listens and speaks at the same time, handles interruptions, and delegates reasoning and tool use to a backend agent.

This is not an ASR-only model. Muse Voice Transcribe and Gemini 3.5 Transcribe return text. GPT-Live-1 speaks.

Google's peer Live API SKUs are Gemini 3.8 Live (gemini-3.8-live) and Extended Thinking. Those are a different protocol, price, and tool model. Start them with Start a Gemini 3.8 Live Voice Session.

1. Decide if you actually need Live

Use GPT-Live-1 when the product is a spoken conversation that should continue while a backend looks something up.

Use Muse Voice Transcribe or Gemini 3.5 Transcribe when the product is a transcript.

Use Gemini 3.8 Live when you are already on the Gemini Live API (visual grounding, listed $0.005/$0.018 per minute audio, async tools on the Live session itself).

GPT-Live-1 mini is the ChatGPT free-tier voice default in the system card. There is no gpt-live-1-mini API model card. Do not invent one.

2. Split conversation from work

Official getting-started docs describe two parts:

  • GPT-Live handles conversation style and when to ask the backend for help. Keep that prompt short.
  • The backend holds tools, business rules, and longer tasks. Use Responses delegation for a managed backend, or client delegation when your app must control execution.

Interrupting speech does not automatically cancel delegated backend work.

3. Connect the first session

Keep the API key on a trusted server. Serve the browser over HTTPS or localhost. The browser creates a WebRTC SDP offer; your server exchanges it for an answer. Microphone capture and speaker playback stay in the official WebRTC quickstart. The server create call from that guide:

from openai import OpenAI

client = OpenAI()
session = {
    "model": "gpt-live-1",
    "instructions": "Be concise. Delegate requests needing current information to the backend, which can search the web.",
    "delegation": {
        "type": "responses",
        "responses": {
            "model": "gpt-5.6-terra",
            "instructions": "Use web search when current facts are needed. Return concise, grounded results for a spoken conversation.",
            "tools": [{"type": "web_search"}],
            "tool_choice": "auto",
        },
    },
}
result = client.live.create(session=session, transport={"type": "webrtc", "sdp": offer_sdp})
# offer_sdp is the browser WebRTC SDP offer from the official quickstart.
# Return result unchanged: session.id and transport.sdp (the answer).

Then:

  1. Apply transport.sdp as the browser remote description.
  2. Wait for session.started. Do not send a second session.start on the WebRTC data channel.
  3. Speak and listen. Ask a question that needs current information if you attached the web-search backend.
  4. Close the session to collect usage and release the connection.

Other official connection paths: WebSockets for server-side audio, sideband controls for an existing session, and telephony/SIP for phone integrations. offer_sdp is the browser's SDP offer string from the WebRTC quickstart.

4. Price the session correctly

The official API card bills voice sessions at $0.05 per minute, per second. Session duration is not rounded up to the next whole minute. Backend model and tool usage is billed separately.

The live model has a small context window. Put tool schemas and procedures in the backend prompt.

Image and video are not supported on the API card. Structured outputs and fine-tuning are not supported.

5. Prompt only the handoff rules

Official prompting guidance: list backend capabilities the backend actually has, then write concrete delegate / do-not-delegate rules. The live model must not promise a booking, guess a price, or claim an action finished before the backend confirms it.

Official sources

Continue learning

Related models, implementation guides, comparisons, and concepts.