Startup configuration for the Live session.
model: string or "gpt-live-1" The Live model. Required in the session configuration for every transport; do not pass it as a URL query parameter.
One of the following: string minLength1 "gpt-live-1" The Live model. Required in the session configuration for every transport; do not pass it as a URL query parameter.
audio: optional { output } Startup audio configuration. WebRTC and SIP negotiate their audio format on the media transport.
output: optional { voice } Settings for speech generated by the Live model. Choose the voice before starting the session.
voice: optional string or "alloy" or "ash" or "ballad" or 35 more or CustomVoice The voice used for Live speech, as a built-in voice name or a custom voice object containing its ID. Defaults to marin and cannot change after startup.
One of the following: string "alloy" or "ash" or "ballad" or 35 more The voice used for Live speech, as a built-in voice name or a custom voice object containing its ID. Defaults to marin and cannot change after startup.
One of the following: "alloy" "ash" "ballad" "beacon" "bossa" "brise" "calandria" "cedar" "cinder" "compas" "coral" "delta" "destello" "echo" "flitz" "gleam" "halo" "harema" "hornero" "juni" "luciernaga" "marin" "meridian" "nira" "noeul" "nuri" "pearl" "quartz" "ripple" "sage" "shida" "shimmer" "sillage" "stone" "tempo" "verse" "vesper" "willow" CustomVoice { id } id: string minLength1 maxLength128 client: optional ClientConfig { data_channel } Startup-only capabilities for an untrusted frontend attached to a unified WebRTC session. Trusted sideband connections are unaffected.
data_channel: DataChannelConfig { allowed_client_events, allowed_server_events } Client and server event permissions for the WebRTC frontend data channel.
allowed_client_events: optional "all" or array of string Client event types that the frontend data channel may send. Use ‘all’ to allow every client event; an empty array allows none. Omission preserves the existing allow-all behavior.
One of the following: "all" array of string maxItems256 allowed_server_events: optional "all" or array of ServerEventSelector Server events that may be sent to the frontend data channel. Use ‘all’ to allow every server event; an empty array allows none. Omission preserves the existing allow-all behavior. Responses events use an object with type ‘response.event’ and a response_event selector.
One of the following: "all" array of ServerEventSelector { type, response_event } maxItems256 type: string The outer Live server event type. Use ‘response.event’ for Responses events.
minLength1 maxLength256 response_event: optional string The nested Responses event type. Required when type is ‘response.event’; forbidden for other event types.
minLength1 maxLength256 delegation: optional ClientDelegation or Responses or Decisions or null Who handles tasks delegated by the Live model. Omitted or null selects your application; use responses or decisions to delegate to the corresponding API.
One of the following: ClientDelegation { type, acknowledgement_delay_ms } Delegate tasks to your application. The Live session emits delegation events that your backend handles.
type: "client" (default: "client") The delegation owner. Always client for tasks handled by your application.
acknowledgement_delay_ms: optional integer Milliseconds to wait before requesting an automatic spoken acknowledgement for a delegation. The model may still speak before this delay. Any commentary or thinking appended to the session cancels all pending acknowledgements, including those for other delegations. Defaults to 400 for Decisions sessions and 0 (request immediately) for other sessions. Omission in a session update preserves the current value. Updates apply to subsequent delegations.
minimum0 maximum800 Responses { responses, type, acknowledgement_delay_ms } Delegate tasks to a Responses model managed by the Live session.
responses: ResponsesDelegationConfig { model, instructions, max_output_tokens, 6 more } Backend model, prompt, and tools used when the Live session delegates a task to Responses.
model: string The model used for server-owned Responses delegations.
instructions: optional string or null Instructions for the delegated Responses model, separate from Live instructions. See backend prompting.
max_output_tokens: optional integer or null Maximum number of output tokens for each delegated response.
minimum16 parallel_tool_calls: optional boolean or null Whether the delegated Responses model may request multiple tool calls in a single response.
reasoning: optional object or null Reasoning settings passed to each delegated Responses request.
effort: optional "none" or "minimal" or "low" or 3 more or null How much reasoning effort the delegated Responses model should use. Supported values depend on the backend model.
One of the following: "none" "minimal" "low" "medium" "high" "xhigh" summary: optional "concise" or "detailed" or "auto" or null The reasoning summary to request from the delegated Responses model, when supported.
One of the following: "concise" "detailed" "auto" service_tier: optional "auto" or "default" or "fast_tier_temp_pilot" or 3 more or null Service tier for delegated Responses requests.
One of the following: "auto" "default" "fast_tier_temp_pilot" "flex" "priority" "ultrafast" text: optional object or null Text generation settings passed to each delegated Responses request.
verbosity: optional "low" or "medium" or "high" or null The amount of detail in text generated by the Responses backend. This does not configure the Live model’s spoken delivery.
One of the following: "low" "medium" "high" tool_choice: optional "auto" or "none" or "required" or Function or Mcp or 11 more Controls which tool the Responses backend uses when handling a task delegated by the Live model.
One of the following: LiveToolChoiceEnum = "auto" or "none" or "required" One of the following: "auto" "none" "required" Function { name, type } name: string The name of the function tool to call.
type: "function" (default: "function") The tool to call. Always function.
Mcp { server_label, type, name } server_label: string The label of the MCP server to call.
type: "mcp" (default: "mcp") The tool to call. Always mcp.
name: optional string or null The name of the MCP tool to call. If omitted, the server may choose a default.
FileSearch { type } type: "file_search" (default: "file_search") The tool to call. Always file_search.
WebSearch { type } type: "web_search" (default: "web_search") The tool to call. Always web_search.
WebSearchPreview { type } type: "web_search_preview" (default: "web_search_preview") The tool to call. Always web_search_preview.
ImageGeneration { type } type: "image_generation" (default: "image_generation") The tool to call. Always image_generation.
Computer { type } type: "computer" (default: "computer") The tool to call. Always computer.
CodeInterpreter { type } type: "code_interpreter" (default: "code_interpreter") The tool to call. Always code_interpreter.
ProgrammaticToolCalling { type } type: "programmatic_tool_calling" (default: "programmatic_tool_calling") The tool to call. Always programmatic_tool_calling.
Shell { type } Forces the model to call the shell tool when a tool call is required.
type: "shell" (default: "shell") The tool to call. Always shell.
Custom { name, type } name: string The name of the custom tool to call.
type: "custom" (default: "custom") The tool to call. Always custom.
ApplyPatch { type } Forces the model to call the apply_patch tool when executing a tool call.
type: "apply_patch" (default: "apply_patch") The tool to call. Always apply_patch.
LiveAllowedToolsChoiceParam { tools, type, mode } tools: array of Function or Mcp or FileSearch or 9 more The tools that the delegated Responses model may call.
minItems1 maxItems128 One of the following: Function { name, type } name: string The name of the function tool to call.
type: "function" (default: "function") The tool to call. Always function.
Mcp { server_label, type, name } server_label: string The label of the MCP server to call.
type: "mcp" (default: "mcp") The tool to call. Always mcp.
name: optional string or null The name of the MCP tool to call. If omitted, the server may choose a default.
FileSearch { type } type: "file_search" (default: "file_search") The tool to call. Always file_search.
WebSearch { type } type: "web_search" (default: "web_search") The tool to call. Always web_search.
WebSearchPreview { type } type: "web_search_preview" (default: "web_search_preview") The tool to call. Always web_search_preview.
ImageGeneration { type } type: "image_generation" (default: "image_generation") The tool to call. Always image_generation.
Computer { type } type: "computer" (default: "computer") The tool to call. Always computer.
CodeInterpreter { type } type: "code_interpreter" (default: "code_interpreter") The tool to call. Always code_interpreter.
ProgrammaticToolCalling { type } type: "programmatic_tool_calling" (default: "programmatic_tool_calling") The tool to call. Always programmatic_tool_calling.
Shell { type } Forces the model to call the shell tool when a tool call is required.
type: "shell" (default: "shell") The tool to call. Always shell.
Custom { name, type } name: string The name of the custom tool to call.
type: "custom" (default: "custom") The tool to call. Always custom.
ApplyPatch { type } Forces the model to call the apply_patch tool when executing a tool call.
type: "apply_patch" (default: "apply_patch") The tool to call. Always apply_patch.
type: "allowed_tools" (default: "allowed_tools") The tool choice type. Always allowed_tools.
mode: optional "none" or "auto" or "required" or null How to select a tool from the allowed set.
One of the following: "none" "auto" "required" tools: optional array of FunctionTool or WebSearch or FileSearch or 10 more Tools available to the Responses backend while it handles tasks delegated by the Live model.
One of the following: FunctionTool { name, type, description, 2 more } A function tool available to the Responses backend when the Live model delegates a task.
name: string The name the delegated Responses model uses when calling this function.
type: "function" (default: "function") The tool type. Always function.
description: optional string or null What the function does and when the delegated Responses model should call it.
parameters: optional map[unknown] or null A JSON Schema object describing the arguments accepted by the function.
strict: optional boolean or null Whether the delegated Responses model must follow the function’s parameter schema exactly.
WebSearch { type } A web search tool available to the Live session’s Responses backend.
type: "web_search" (default: "web_search") The tool type. Always web_search.
FileSearch { type } type: "file_search" (default: "file_search") CodeInterpreter { type } type: "code_interpreter" (default: "code_interpreter") Shell { type, environment } A Responses shell tool. Use a hosted container or return local shell results with response.item.create. Domain secrets are not supported.
type: "shell" (default: "shell") environment: optional ContainerAuto or ContainerReference or Local or null One of the following: ContainerAuto { type, file_ids, memory_limit, 2 more } type: "container_auto" (default: "container_auto") Automatically creates a container for this request
file_ids: optional array of string or null An optional list of uploaded files to make available to your code.
maxItems50 memory_limit: optional "1g" or "4g" or "16g" or "64g" or null The memory limit for the container.
One of the following: "1g" "4g" "16g" "64g" network_policy: optional Disabled or Allowlist or null Network access policy for the container.
One of the following: Disabled { type } type: "disabled" (default: "disabled") Disable outbound network access. Always disabled.
Allowlist { allowed_domains, type } allowed_domains: array of string A list of allowed domains when type is allowlist.
minItems1 type: "allowlist" (default: "allowlist") Allow outbound network access only to specified domains. Always allowlist.
skills: optional array of SkillReference or Inline or null An optional list of skills referenced by id or inline data.
maxItems200 One of the following: SkillReference { skill_id, type, version } skill_id: string The ID of the referenced skill.
minLength1 maxLength64 type: "skill_reference" (default: "skill_reference") References a skill created with the /v1/skills endpoint.
version: optional string or null Optional skill version. Use a positive integer or ‘latest’. Omit for default.
Inline { description, name, source, type } description: string The description of the skill.
name: string The name of the skill.
source: { data, media_type, type } Inline skill payload
data: string Base64-encoded skill zip bundle.
minLength1 maxLength70254592 media_type: "application/zip" (default: "application/zip") The media type of the inline skill payload. Must be application/zip.
type: "base64" (default: "base64") The type of the inline skill source. Must be base64.
type: "inline" (default: "inline") Defines an inline skill for this request.
ContainerReference { container_id, type } container_id: string The ID of the referenced container.
type: "container_reference" (default: "container_reference") References a container created with the /v1/containers endpoint
Local { type, skills } type: "local" (default: "local") Use a local computer environment.
skills: optional array of object or null An optional list of skills.
maxItems200 description: string The description of the skill.
name: string The name of the skill.
path: string The path to the directory containing the skill.
ImageGeneration { type } type: "image_generation" (default: "image_generation") Mcp { type } type: "mcp" (default: "mcp") Custom { type } type: "custom" (default: "custom") Namespace { type } type: "namespace" (default: "namespace") ToolSearch { type } type: "tool_search" (default: "tool_search") ProgrammaticToolCalling { type } type: "programmatic_tool_calling" (default: "programmatic_tool_calling") Computer { type } type: "computer" (default: "computer") ApplyPatch { type } type: "apply_patch" (default: "apply_patch") type: "responses" (default: "responses") The delegation owner. Always responses for tasks handled by the Responses API.
acknowledgement_delay_ms: optional integer Milliseconds to wait before requesting an automatic spoken acknowledgement for a delegation. The model may still speak before this delay. Any commentary or thinking appended to the session cancels all pending acknowledgements, including those for other delegations. Defaults to 400 for Decisions sessions and 0 (request immediately) for other sessions. Omission in a session update preserves the current value. Updates apply to subsequent delegations.
minimum0 maximum800 Decisions { decisions, type, acknowledgement_delay_ms } decisions: DecisionsDelegationConfig { model, questions } model: string minLength1 questions: array of DecisionQuestion Native Decision API questions evaluated together, in order.
minItems1 maxItems64 One of the following: Choice { choices, instructions, type, name } choices: array of DecisionChoiceOption { value, description } minItems2 maxItems255 value: string or boolean One of the following: string boolean description: optional string instructions: string or array of DecisionInputText or InputImage or InputJSON One of the following: string array of DecisionInputText or InputImage or InputJSON minItems1 One of the following: DecisionInputText { text, type } text: string The text input to the model.
maxLength10485760 type: "input_text" (default: "input_text") InputImage { image_url, type, detail } image_url: string A base64-encoded image data URL or a publicly accessible HTTP(S) image URL.
pattern^(data:|https?://) maxLength20971520 type: "input_image" (default: "input_image") detail: optional "low" or "high" or "auto" or "original" or null The detail level of the image to be sent to the model. One of high, low, auto, or original. Defaults to auto.
One of the following: "low" "high" "auto" "original" InputJSON { data, type } data: map[unknown] or array of map[unknown] One of the following: LiveDecisionJSONObject = map[unknown] array of map[unknown] type: "input_json" (default: "input_json") type: "choice" (default: "choice") name: optional string Predicate { instructions, type, name } instructions: string or array of DecisionInputText or InputImage or InputJSON One of the following: string array of DecisionInputText or InputImage or InputJSON minItems1 One of the following: DecisionInputText { text, type } text: string The text input to the model.
maxLength10485760 type: "input_text" (default: "input_text") InputImage { image_url, type, detail } image_url: string A base64-encoded image data URL or a publicly accessible HTTP(S) image URL.
pattern^(data:|https?://) maxLength20971520 type: "input_image" (default: "input_image") detail: optional "low" or "high" or "auto" or "original" or null The detail level of the image to be sent to the model. One of high, low, auto, or original. Defaults to auto.
One of the following: "low" "high" "auto" "original" InputJSON { data, type } data: map[unknown] or array of map[unknown] One of the following: LiveDecisionJSONObject = map[unknown] array of map[unknown] type: "input_json" (default: "input_json") type: "predicate" (default: "predicate") name: optional string Score { instructions, levels, type, name } instructions: string or array of DecisionInputText or InputImage or InputJSON One of the following: string array of DecisionInputText or InputImage or InputJSON minItems1 One of the following: DecisionInputText { text, type } text: string The text input to the model.
maxLength10485760 type: "input_text" (default: "input_text") InputImage { image_url, type, detail } image_url: string A base64-encoded image data URL or a publicly accessible HTTP(S) image URL.
pattern^(data:|https?://) maxLength20971520 type: "input_image" (default: "input_image") detail: optional "low" or "high" or "auto" or "original" or null The detail level of the image to be sent to the model. One of high, low, auto, or original. Defaults to auto.
One of the following: "low" "high" "auto" "original" InputJSON { data, type } data: map[unknown] or array of map[unknown] One of the following: LiveDecisionJSONObject = map[unknown] array of map[unknown] type: "input_json" (default: "input_json") levels: array of { label, description } minItems2 maxItems10 label: string description: optional string type: "score" (default: "score") name: optional string type: "decisions" (default: "decisions") acknowledgement_delay_ms: optional integer Milliseconds to wait before requesting an automatic spoken acknowledgement for a delegation. The model may still speak before this delay. Any commentary or thinking appended to the session cancels all pending acknowledgements, including those for other delegations. Defaults to 400. Updates apply to subsequent delegations.
minimum0 maximum800 input: optional array of InitialItem Ordered text-only history supplied before startup. Supports developer, user, and assistant messages with one text part each; at most 128 messages and a configured rendered-token limit (8,192 by default).
maxItems128 One of the following: Developer { content, role, id, 2 more } A developer message included in the initial text history of a Live session.
content: array of { text, type } The message content. Supply exactly one text part for the initial Live conversation history.
minItems1 maxItems1 text: string The message text to include in the Live session’s initial conversation history.
type: optional "input_text" (default: "input_text") The text content type. Always input_text.
role: "developer" (default: "developer") The author of this history message. Always developer.
id: optional string or null An optional identifier for the supplied history message. Live uses the message’s role and text to initialize the conversation.
status: optional "incomplete" or "completed" or null The supplied message’s status. Live uses its text as history and does not resume an incomplete message.
One of the following: "incomplete" "completed" type: optional "message" (default: "message") The history item type. Always message.
User { content, role, id, 2 more } A user message included in the initial text history of a Live session.
content: array of { text, type } The message content. Supply exactly one text part for the initial Live conversation history.
minItems1 maxItems1 text: string The message text to include in the Live session’s initial conversation history.
type: optional "input_text" (default: "input_text") The text content type. Always input_text.
role: "user" (default: "user") The author of this history message. Always user.
id: optional string or null An optional identifier for the supplied history message. Live uses the message’s role and text to initialize the conversation.
status: optional "incomplete" or "completed" or null The supplied message’s status. Live uses its text as history and does not resume an incomplete message.
One of the following: "incomplete" "completed" type: optional "message" (default: "message") The history item type. Always message.
Assistant { content, role, id, 2 more } An assistant message included in the initial text history of a Live session.
content: array of Text or OutputText The message content. Supply exactly one text part for the initial Live conversation history.
minItems1 maxItems1 One of the following: Text { text, type } Assistant text supplied as conversation history when starting a Live session.
text: string The message text to include in the Live session’s initial conversation history.
type: optional "text" (default: "text") The text content type. Always text.
OutputText { text, type } Assistant output text supplied as conversation history when starting a Live session.
text: string The message text to include in the Live session’s initial conversation history.
type: "output_text" (default: "output_text") The text content type. Always output_text.
role: "assistant" (default: "assistant") The author of this history message. Always assistant.
id: optional string or null An optional identifier for the supplied history message. Live uses the message’s role and text to initialize the conversation.
status: optional "incomplete" or "completed" or null The supplied message’s status. Live uses its text as history and does not resume an incomplete message.
One of the following: "incomplete" "completed" type: optional "message" (default: "message") The history item type. Always message.
instructions: optional string or null Frontend instructions for voice, conversation, interruptions, and when to delegate. Start with the Live prompting guide; put business rules and tool workflows in a separate backend prompt. Limited to 16,384 client-supplied tokens. Omitted or blank instructions use server defaults. Immutable after startup.
safety_identifier: optional string or null A stable identifier for your end user, used for safety monitoring and abuse detection.
maxLength128 store: optional boolean Whether to store the session for later forking and recording download. Defaults to false for new sessions.
triggers: optional array of DecisionTrigger { decisions, event_type, type } At most one Decisions trigger per transcript event type. Triggers run independently of delegation. On update, omit triggers to keep the current configuration, send a list to replace it, or send an empty list to disable triggers.
maxItems2 decisions: { questions } Questions evaluated using the current transcript and the session’s shared Decision items.
questions: array of DecisionQuestion Native Decision API questions evaluated together, in order.
minItems1 maxItems64 One of the following: Choice { choices, instructions, type, name } choices: array of DecisionChoiceOption { value, description } minItems2 maxItems255 value: string or boolean One of the following: string boolean description: optional string instructions: string or array of DecisionInputText or InputImage or InputJSON One of the following: string array of DecisionInputText or InputImage or InputJSON minItems1 One of the following: DecisionInputText { text, type } text: string The text input to the model.
maxLength10485760 type: "input_text" (default: "input_text") InputImage { image_url, type, detail } image_url: string A base64-encoded image data URL or a publicly accessible HTTP(S) image URL.
pattern^(data:|https?://) maxLength20971520 type: "input_image" (default: "input_image") detail: optional "low" or "high" or "auto" or "original" or null The detail level of the image to be sent to the model. One of high, low, auto, or original. Defaults to auto.
One of the following: "low" "high" "auto" "original" InputJSON { data, type } data: map[unknown] or array of map[unknown] One of the following: LiveDecisionJSONObject = map[unknown] array of map[unknown] type: "input_json" (default: "input_json") type: "choice" (default: "choice") name: optional string Predicate { instructions, type, name } instructions: string or array of DecisionInputText or InputImage or InputJSON One of the following: string array of DecisionInputText or InputImage or InputJSON minItems1 One of the following: DecisionInputText { text, type } text: string The text input to the model.
maxLength10485760 type: "input_text" (default: "input_text") InputImage { image_url, type, detail } image_url: string A base64-encoded image data URL or a publicly accessible HTTP(S) image URL.
pattern^(data:|https?://) maxLength20971520 type: "input_image" (default: "input_image") detail: optional "low" or "high" or "auto" or "original" or null The detail level of the image to be sent to the model. One of high, low, auto, or original. Defaults to auto.
One of the following: "low" "high" "auto" "original" InputJSON { data, type } data: map[unknown] or array of map[unknown] One of the following: LiveDecisionJSONObject = map[unknown] array of map[unknown] type: "input_json" (default: "input_json") type: "predicate" (default: "predicate") name: optional string Score { instructions, levels, type, name } instructions: string or array of DecisionInputText or InputImage or InputJSON One of the following: string array of DecisionInputText or InputImage or InputJSON minItems1 One of the following: DecisionInputText { text, type } text: string The text input to the model.
maxLength10485760 type: "input_text" (default: "input_text") InputImage { image_url, type, detail } image_url: string A base64-encoded image data URL or a publicly accessible HTTP(S) image URL.
pattern^(data:|https?://) maxLength20971520 type: "input_image" (default: "input_image") detail: optional "low" or "high" or "auto" or "original" or null The detail level of the image to be sent to the model. One of high, low, auto, or original. Defaults to auto.
One of the following: "low" "high" "auto" "original" InputJSON { data, type } data: map[unknown] or array of map[unknown] One of the following: LiveDecisionJSONObject = map[unknown] array of map[unknown] type: "input_json" (default: "input_json") levels: array of { label, description } minItems2 maxItems10 label: string description: optional string type: "score" (default: "score") name: optional string event_type: "session.input_transcript.delta" or "session.output_transcript.delta" One of the following: "session.input_transcript.delta" "session.output_transcript.delta" type: "decisions" (default: "decisions")