Skip to content
For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Primary navigation

Accept call

POST/live/sessions/{session_id}/accept

Accept an incoming SIP call. Supply session with type live, the model, and startup configuration. Before accepting calls, follow the Live prompting guide to write frontend conversation instructions and a separate backend prompt. SIP media format is negotiated; omit audio.format.

Path ParametersExpand Collapse
session_id: string
Body ParametersJSONExpand Collapse
session: object { model, type, audio, 4 more }

Model and startup configuration for the Live session that answers the incoming SIP call.

model: string or "gpt-live-1"

The Live model to use for the accepted call.

minLength1
One of the following:
string
"gpt-live-1"

The Live model. Required in the session configuration for every transport; do not pass it as a URL query parameter.

type: "live"

The session type. Always live.

audio: optional object { output }

Startup audio output configuration. SIP negotiates the media format; audio.format is only accepted for primary WebSockets. Voice cannot change after startup.

output: optional object { 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 19 more or CustomVoice { id }

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 19 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"
"cedar"
"cinder"
"coral"
"delta"
"echo"
"gleam"
"marin"
"meridian"
"quartz"
"ripple"
"sage"
"shimmer"
"stone"
"tempo"
"verse"
"vesper"
"willow"
CustomVoice object { id }
id: string
minLength1
maxLength128
delegation: optional ClientDelegation { type } or object { responses, type } or null

Who handles tasks delegated by the Live model. Omitted or null selects your application; use responses to let the API manage a Responses backend.

One of the following:
ClientDelegation object { type }

Delegate tasks to your application. The Live session emits delegation events that your backend handles.

type: "client"

The delegation owner. Always client for tasks handled by your application.

Responses object { responses, type }

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 number 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 { effort, summary } 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 { verbosity } 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 object { name, type } or object { name, server_label, type }

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"
LiveFunctionToolChoiceParam object { name, type }
name: string
minLength1
maxLength64
type: "function"
LiveMCPToolChoiceParam object { name, server_label, type }
name: string
minLength1
maxLength64
server_label: string
minLength1
maxLength64
type: "mcp"
tools: optional array of FunctionTool { name, type, description, 2 more } or object { type }

Tools available to the Responses backend while it handles tasks delegated by the Live model.

One of the following:
FunctionTool object { 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"

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 object { type }

A web search tool available to the Live session’s Responses backend.

type: "web_search"

The tool type. Always web_search.

type: "responses"

The delegation owner. Always responses for tasks handled by the Responses API.

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 8,192 rendered tokens in total.

One of the following:
Developer object { content, role, id, 2 more }

A developer message included in the initial text history of a Live session.

content: array of object { text, type }

The message content. Supply exactly one text part for the initial Live conversation history.

text: string

The message text to include in the Live session’s initial conversation history.

type: optional "input_text"

The text content type. Always input_text.

role: "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"

The history item type. Always message.

User object { content, role, id, 2 more }

A user message included in the initial text history of a Live session.

content: array of object { text, type }

The message content. Supply exactly one text part for the initial Live conversation history.

text: string

The message text to include in the Live session’s initial conversation history.

type: optional "input_text"

The text content type. Always input_text.

role: "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"

The history item type. Always message.

Assistant object { content, role, id, 2 more }

An assistant message included in the initial text history of a Live session.

content: array of object { text, type } or object { text, type }

The message content. Supply exactly one text part for the initial Live conversation history.

One of the following:
Text object { 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"

The text content type. Always text.

OutputText object { 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"

The text content type. Always output_text.

role: "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"

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.

store: optional boolean

Whether to store the session for later forking and recording download. Defaults to false for new sessions.

Accept call

curl https://api.openai.com/v1/live/sessions/$SESSION_ID/accept \
    -H 'Content-Type: application/json' \
    -H "Authorization: Bearer $OPENAI_API_KEY" \
    -d '{
          "session": {
            "model": "gpt-live-1",
            "type": "live"
          }
        }'
Returns Examples