LiveCreateRequest
Create a Live WebRTC session with JSON session configuration and an SDP offer. Follow the [Live prompting guide](https://developers.openai.com/api/docs/guides/live-prompting) before choosing frontend and backend instructions. The request starts the session; do not send session.start on the data channel.
Properties
| Name | Type | Description |
|---|---|---|
| session | object | Startup configuration for the Live session. |
| transport | object | WebRTC transport with the browser's SDP offer. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/openai/main/json-schema/openai-live-create-request-schema.json",
"title": "LiveCreateRequest",
"description": "Create a Live WebRTC session with JSON session configuration and an SDP offer. Follow the [Live prompting guide](https://developers.openai.com/api/docs/guides/live-prompting) before choosing frontend and backend instructions. The request starts the session; do not send session.start on the data channel.",
"x-generated": "2026-09-23",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/openai-live-api-openapi.yml#/components/schemas/LiveCreateRequest",
"type": "object",
"properties": {
"session": {
"$ref": "#/$defs/LiveMediaSessionCreateParams",
"description": "Startup configuration for the Live session."
},
"transport": {
"$ref": "#/$defs/LiveWebRTCTransport",
"description": "WebRTC transport with the browser's SDP offer."
}
},
"required": [
"session",
"transport"
],
"additionalProperties": false,
"$defs": {
"LiveAllowedServerEventParam": {
"description": "A Live server event selector for the WebRTC frontend data channel.",
"type": "object",
"properties": {
"type": {
"description": "The outer Live server event type. Use 'response.event' for Responses events.",
"type": "string",
"minLength": 1,
"maxLength": 256
},
"response_event": {
"description": "The nested Responses event type. Required when type is 'response.event'; forbidden for other event types.",
"type": "string",
"minLength": 1,
"maxLength": 256
}
},
"required": [
"type"
],
"additionalProperties": false,
"x-oaiMeta": {}
},
"LiveClientConfigParam": {
"description": "Startup-only capabilities for an untrusted frontend attached to a unified WebRTC session. Trusted sideband connections are unaffected.",
"type": "object",
"properties": {
"data_channel": {
"description": "Client and server event permissions for the WebRTC frontend data channel.",
"$ref": "#/$defs/LiveDataChannelConfigParam"
}
},
"required": [
"data_channel"
]
},
"LiveClientDelegationParam": {
"description": "Delegate tasks to your application. The Live session emits delegation events that your backend handles.",
"type": "object",
"properties": {
"type": {
"description": "The delegation owner. Always `client` for tasks handled by your application.",
"default": "client",
"x-stainless-const": true,
"type": "string",
"enum": [
"client"
]
}
},
"required": [
"type"
]
},
"LiveCustomVoiceParam": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 128
}
},
"required": [
"id"
]
},
"LiveDataChannelConfigParam": {
"description": "Control which Live events an untrusted WebRTC frontend can send and receive over its data channel. These restrictions do not apply to trusted sideband connections.",
"type": "object",
"properties": {
"allowed_client_events": {
"description": "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.",
"oneOf": [
{
"default": "all",
"x-stainless-const": true,
"type": "string",
"enum": [
"all"
]
},
{
"type": "array",
"items": {
"description": "A Live client event type allowed on the frontend data channel, such as `session.input_audio.mute`.",
"type": "string",
"minLength": 1,
"maxLength": 256,
"pattern": "^(?:error|info|[a-z][a-z0-9_-]*(?:\\.[a-z0-9_-]+)+)$"
},
"maxItems": 256
}
]
},
"allowed_server_events": {
"description": "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.",
"oneOf": [
{
"default": "all",
"x-stainless-const": true,
"type": "string",
"enum": [
"all"
]
},
{
"type": "array",
"items": {
"$ref": "#/$defs/LiveAllowedServerEventParam"
},
"maxItems": 256
}
]
}
},
"required": []
},
"LiveDelegationReasoningInputParam": {
"description": "Reasoning options for Responses requests made on behalf of the Live session.",
"type": "object",
"properties": {
"effort": {
"anyOf": [
{
"description": "How much reasoning effort the delegated Responses model should use. Supported values depend on the backend model.",
"$ref": "#/$defs/LiveReasoningEffort"
},
{
"type": "null"
}
]
},
"summary": {
"anyOf": [
{
"description": "The reasoning summary to request from the delegated Responses model, when supported.",
"$ref": "#/$defs/LiveReasoningSummary"
},
{
"type": "null"
}
]
}
},
"required": []
},
"LiveDelegationTextInputParam": {
"description": "Text generation options for the Live session’s Responses backend.",
"type": "object",
"properties": {
"verbosity": {
"anyOf": [
{
"description": "The amount of detail in text generated by the Responses backend. This does not configure the Live model’s spoken delivery.",
"$ref": "#/$defs/LiveTextVerbosity"
},
{
"type": "null"
}
]
}
},
"required": []
},
"LiveFunctionToolChoiceParam": {
"type": "object",
"properties": {
"type": {
"default": "function",
"x-stainless-const": true,
"type": "string",
"enum": [
"function"
]
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^[a-zA-Z0-9_-]+$"
}
},
"required": [
"type",
"name"
]
},
"LiveFunctionToolInputParam": {
"description": "A function tool available to the Responses backend when the Live model delegates a task.",
"type": "object",
"properties": {
"type": {
"description": "The tool type. Always `function`.",
"default": "function",
"x-stainless-const": true,
"type": "string",
"enum": [
"function"
]
},
"name": {
"description": "The name the delegated Responses model uses when calling this function.",
"type": "string"
},
"description": {
"anyOf": [
{
"description": "What the function does and when the delegated Responses model should call it.",
"type": "string"
},
{
"type": "null"
}
]
},
"parameters": {
"anyOf": [
{
"description": "A JSON Schema object describing the arguments accepted by the function.",
"type": "object",
"additionalProperties": {}
},
{
"type": "null"
}
]
},
"strict": {
"anyOf": [
{
"description": "Whether the delegated Responses model must follow the function’s parameter schema exactly.",
"type": "boolean"
},
{
"type": "null"
}
]
}
},
"required": [
"type",
"name"
]
},
"LiveInitialAssistantMessageItemParam": {
"description": "An assistant message included in the initial text history of a Live session.",
"type": "object",
"properties": {
"id": {
"anyOf": [
{
"description": "An optional identifier for the supplied history message. Live uses the message’s role and text to initialize the conversation.",
"type": "string"
},
{
"type": "null"
}
]
},
"type": {
"description": "The history item type. Always `message`.",
"default": "message",
"x-stainless-const": true,
"type": "string",
"enum": [
"message"
]
},
"status": {
"anyOf": [
{
"description": "The supplied message’s status. Live uses its text as history and does not resume an incomplete message.",
"$ref": "#/$defs/LiveInitialMessageStatus"
},
{
"type": "null"
}
]
},
"role": {
"description": "The author of this history message. Always `assistant`.",
"default": "assistant",
"x-stainless-const": true,
"type": "string",
"enum": [
"assistant"
]
},
"content": {
"description": "The message content. Supply exactly one text part for the initial Live conversation history.",
"type": "array",
"items": {
"oneOf": [
{
"$ref": "#/$defs/LiveInitialTextContentPartParam"
},
{
"$ref": "#/$defs/LiveInitialOutputTextContentPartParam"
}
],
"x-oai-default-discriminator-value": "text"
},
"minItems": 1,
"maxItems": 1
}
},
"required": [
"role",
"content"
]
},
"LiveInitialDeveloperMessageItemParam": {
"description": "A developer message included in the initial text history of a Live session.",
"type": "object",
"properties": {
"id": {
"anyOf": [
{
"description": "An optional identifier for the supplied history message. Live uses the message’s role and text to initialize the conversation.",
"type": "string"
},
{
"type": "null"
}
]
},
"type": {
"description": "The history item type. Always `message`.",
"default": "message",
"x-stainless-const": true,
"type": "string",
"enum": [
"message"
]
},
"status": {
"anyOf": [
{
"description": "The supplied message’s status. Live uses its text as history and does not resume an incomplete message.",
"$ref": "#/$defs/LiveInitialMessageStatus"
},
{
"type": "null"
}
]
},
"role": {
"description": "The author of this history message. Always `developer`.",
"default": "developer",
"x-stainless-const": true,
"type": "string",
"enum": [
"developer"
]
},
"content": {
"description": "The message content. Supply exactly one text part for the initial Live conversation history.",
"type": "array",
"items": {
"$ref": "#/$defs/LiveInitialInputTextContentPartParam"
},
"minItems": 1,
"maxItems": 1
}
},
"required": [
"role",
"content"
]
},
"LiveInitialInputTextContentPartParam": {
"description": "Text supplied in a developer or user message when starting a Live session.",
"type": "object",
"properties": {
"type": {
"description": "The text content type. Always `input_text`.",
"default": "input_text",
"x-stainless-const": true,
"type": "string",
"enum": [
"input_text"
]
},
"text": {
"description": "The message text to include in the Live session’s initial conversation history.",
"type": "string"
}
},
"required": [
"text"
]
},
"LiveInitialItem": {
"description": "A developer, user, or assistant message supplied as text history before the Live session starts.",
"oneOf": [
{
"$ref": "#/$defs/LiveInitialDeveloperMessageItemParam"
},
{
"$ref": "#/$defs/LiveInitialUserMessageItemParam"
},
{
"$ref": "#/$defs/LiveInitialAssistantMessageItemParam"
}
]
},
"LiveInitialMessageStatus": {
"type": "string",
"enum": [
"incomplete",
"completed"
]
},
"LiveInitialOutputTextContentPartParam": {
"description": "Assistant output text supplied as conversation history when starting a Live session.",
"type": "object",
"properties": {
"type": {
"description": "The text content type. Always `output_text`.",
"default": "output_text",
"x-stainless-const": true,
"type": "string",
"enum": [
"output_text"
]
},
"text": {
"description": "The message text to include in the Live session’s initial conversation history.",
"type": "string"
}
},
"required": [
"type",
"text"
]
},
"LiveInitialSessionAudioOutputParam": {
"description": "Settings for speech generated by the Live model. Choose the voice before starting the session.",
"type": "object",
"properties": {
"voice": {
"description": "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.",
"oneOf": [
{
"anyOf": [
{
"type": "string"
},
{
"type": "string",
"enum": [
"alloy",
"ash",
"ballad",
"beacon",
"bossa",
"cedar",
"cinder",
"coral",
"delta",
"echo",
"gleam",
"marin",
"meridian",
"quartz",
"ripple",
"sage",
"shimmer",
"stone",
"tempo",
"verse",
"vesper",
"willow"
]
}
]
},
{
"$ref": "#/$defs/LiveCustomVoiceParam"
}
]
}
},
"required": []
},
"LiveInitialTextContentPartParam": {
"description": "Assistant text supplied as conversation history when starting a Live session.",
"type": "object",
"properties": {
"type": {
"description": "The text content type. Always `text`.",
"default": "text",
"x-stainless-const": true,
"type": "string",
"enum": [
"text"
]
},
"text": {
"description": "The message text to include in the Live session’s initial conversation history.",
"type": "string"
}
},
"required": [
"text"
]
},
"LiveInitialUserMessageItemParam": {
"description": "A user message included in the initial text history of a Live session.",
"type": "object",
"properties": {
"id": {
"anyOf": [
{
"description": "An optional identifier for the supplied history message. Live uses the message’s role and text to initialize the conversation.",
"type": "string"
},
{
"type": "null"
}
]
},
"type": {
"description": "The history item type. Always `message`.",
"default": "message",
"x-stainless-const": true,
"type": "string",
"enum": [
"message"
]
},
"status": {
"anyOf": [
{
"description": "The supplied message’s status. Live uses its text as history and does not resume an incomplete message.",
"$ref": "#/$defs/LiveInitialMessageStatus"
},
{
"type": "null"
}
]
},
"role": {
"description": "The author of this history message. Always `user`.",
"default": "user",
"x-stainless-const": true,
"type": "string",
"enum": [
"user"
]
},
"content": {
"description": "The message content. Supply exactly one text part for the initial Live conversation history.",
"type": "array",
"items": {
"$ref": "#/$defs/LiveInitialInputTextContentPartParam"
},
"minItems": 1,
"maxItems": 1
}
},
"required": [
"role",
"content"
]
},
"LiveMCPToolChoiceParam": {
"type": "object",
"properties": {
"type": {
"default": "mcp",
"x-stainless-const": true,
"type": "string",
"enum": [
"mcp"
]
},
"server_label": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^[a-zA-Z0-9_-]+$"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^[a-zA-Z0-9_-]+$"
}
},
"required": [
"type",
"server_label",
"name"
]
},
"LiveMediaSessionAudioParam": {
"type": "object",
"description": "Startup audio output configuration. WebRTC and SIP negotiate the media format; audio.format is only accepted for primary WebSockets. Voice cannot change after startup.",
"properties": {
"output": {
"$ref": "#/$defs/LiveInitialSessionAudioOutputParam"
}
},
"additionalProperties": false
},
"LiveMediaSessionCreateParams": {
"type": "object",
"description": "Startup configuration for a Live media session. Follow the [Live prompting guide](https://developers.openai.com/api/docs/guides/live-prompting) when writing frontend instructions and the backend prompt under delegation.responses.instructions.",
"properties": {
"model": {
"$ref": "#/$defs/ModelIdsLive"
},
"instructions": {
"$ref": "#/$defs/instructions"
},
"audio": {
"$ref": "#/$defs/LiveMediaSessionAudioParam",
"description": "Startup audio configuration. WebRTC and SIP negotiate their audio format on the media transport."
},
"delegation": {
"$ref": "#/$defs/delegation"
},
"store": {
"$ref": "#/$defs/store"
},
"input": {
"$ref": "#/$defs/input"
},
"client": {
"$ref": "#/$defs/LiveClientConfigParam"
}
},
"required": [
"model"
],
"additionalProperties": false
},
"LiveReasoningEffort": {
"type": "string",
"enum": [
"none",
"minimal",
"low",
"medium",
"high",
"xhigh"
]
},
"LiveReasoningSummary": {
"type": "string",
"enum": [
"concise",
"detailed",
"auto"
]
},
"LiveResponsesDelegationParam": {
"description": "Delegate tasks to a Responses model managed by the Live session.",
"type": "object",
"properties": {
"type": {
"description": "The delegation owner. Always `responses` for tasks handled by the Responses API.",
"default": "responses",
"x-stainless-const": true,
"type": "string",
"enum": [
"responses"
]
},
"responses": {
"description": "Backend model, prompt, and tools used when the Live session delegates a task to Responses.",
"$ref": "#/$defs/LiveResponsesDelegationSettingsInputParam"
}
},
"required": [
"type",
"responses"
]
},
"LiveResponsesDelegationSettingsInputParam": {
"description": "Model, prompt, and tool settings for tasks delegated by the Live session to a Responses backend.",
"type": "object",
"properties": {
"model": {
"description": "The model used for server-owned Responses delegations.",
"type": "string"
},
"instructions": {
"anyOf": [
{
"description": "Instructions for the delegated Responses model, separate from Live instructions. See [backend prompting](https://developers.openai.com/api/docs/guides/live-delegation#start-with-your-existing-backend-prompt).",
"type": "string"
},
{
"type": "null"
}
]
},
"max_output_tokens": {
"anyOf": [
{
"description": "Maximum number of output tokens for each delegated response.",
"type": "integer",
"minimum": 16
},
{
"type": "null"
}
]
},
"service_tier": {
"anyOf": [
{
"description": "Service tier for delegated Responses requests.",
"$ref": "#/$defs/LiveResponsesServiceTier"
},
{
"type": "null"
}
]
},
"reasoning": {
"anyOf": [
{
"description": "Reasoning settings passed to each delegated Responses request.",
"$ref": "#/$defs/LiveDelegationReasoningInputParam"
},
{
"type": "null"
}
]
},
"text": {
"anyOf": [
{
"description": "Text generation settings passed to each delegated Responses request.",
"$ref": "#/$defs/LiveDelegationTextInputParam"
},
{
"type": "null"
}
]
},
"tools": {
"description": "Tools available to the Responses backend while it handles tasks delegated by the Live model.",
"type": "array",
"items": {
"oneOf": [
{
"$ref": "#/$defs/LiveFunctionToolInputParam"
},
{
"$ref": "#/$defs/LiveWebSearchToolInputParam"
}
]
}
},
"tool_choice": {
"description": "Controls which tool the Responses backend uses when handling a task delegated by the Live model.",
"oneOf": [
{
"$ref": "#/$defs/LiveToolChoiceEnum"
},
{
"$ref": "#/$defs/LiveFunctionToolChoiceParam"
},
{
"$ref": "#/$defs/LiveMCPToolChoiceParam"
}
]
},
"parallel_tool_calls": {
"anyOf": [
{
"description": "Whether the delegated Responses model may request multiple tool calls in a single response.",
"type": "boolean"
},
{
"type": "null"
}
]
}
},
"required": [
"model"
]
},
"LiveResponsesServiceTier": {
"type": "string",
"enum": [
"auto",
"default",
"fast_tier_temp_pilot",
"flex",
"priority",
"ultrafast"
]
},
"LiveTextVerbosity": {
"type": "string",
"enum": [
"low",
"medium",
"high"
]
},
"LiveToolChoiceEnum": {
"type": "string",
"enum": [
"auto",
"none",
"required"
]
},
"LiveWebRTCTransport": {
"type": "object",
"description": "WebRTC transport carrying the offer SDP in a creation request or answer SDP in its response.",
"properties": {
"type": {
"type": "string",
"description": "The transport used for the Live session. Always `webrtc`.",
"enum": [
"webrtc"
],
"x-stainless-const": true
},
"sdp": {
"type": "string",
"minLength": 1,
"description": "Session Description Protocol message for the WebRTC connection."
}
},
"required": [
"type",
"sdp"
],
"additionalProperties": false
},
"LiveWebSearchToolInputParam": {
"description": "A web search tool available to the Live session’s Responses backend.",
"type": "object",
"properties": {
"type": {
"description": "The tool type. Always `web_search`.",
"default": "web_search",
"x-stainless-const": true,
"type": "string",
"enum": [
"web_search"
]
}
},
"required": [
"type"
]
},
"ModelIdsLive": {
"description": "The Live model. Required in the session configuration for every transport; do not pass it as a URL query parameter.",
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "string",
"enum": [
"gpt-live-1"
]
}
]
},
"delegation": {
"anyOf": [
{
"description": "Who handles tasks delegated by the Live model. Omitted or null selects your application; use `responses` to let the API manage a Responses backend.",
"oneOf": [
{
"$ref": "#/$defs/LiveClientDelegationParam"
},
{
"$ref": "#/$defs/LiveResponsesDelegationParam"
}
]
},
{
"type": "null"
}
]
},
"input": {
"description": "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.",
"type": "array",
"items": {
"$ref": "#/$defs/LiveInitialItem"
},
"maxItems": 128
},
"instructions": {
"anyOf": [
{
"description": "Frontend instructions for voice, conversation, interruptions, and when to delegate. Start with the [Live prompting guide](https://developers.openai.com/api/docs/guides/live-prompting); put business rules and tool workflows in a separate [backend prompt](https://developers.openai.com/api/docs/guides/live-delegation#start-with-your-existing-backend-prompt). Limited to 16,384 client-supplied tokens. Omitted or blank instructions use server defaults. Immutable after startup.",
"type": "string"
},
{
"type": "null"
}
]
},
"store": {
"description": "Whether to store the session for later forking and recording download. Defaults to false for new sessions.",
"type": "boolean"
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
curl "https://apis.io/api/v1/json-schemas/openai-live-create-request"
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.