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:
- Apply
transport.sdpas the browser remote description. - Wait for
session.started. Do not send a secondsession.starton the WebRTC data channel. - Speak and listen. Ask a question that needs current information if you attached the web-search backend.
- 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
- GPT-Live-1 model card: https://developers.openai.com/api/docs/models/gpt-live-1
- Getting started with GPT-Live: https://developers.openai.com/api/docs/guides/live
- WebRTC connection (browser audio): https://developers.openai.com/api/docs/guides/voice-webrtc
- Prompting GPT-Live: https://developers.openai.com/api/docs/guides/live-prompting