---
title: "Fork a stored Live session onto a new WebRTC connection."
method: POST
path: "/live/sessions/{session_id}/fork"
tags: ["Live"]
---

# Fork a stored Live session onto a new WebRTC connection.

`POST /live/sessions/{session_id}/fork`

Resume the stored conversation using a new WebRTC connection. The model, voice, and frontend instructions are inherited. Omit session or send an empty object to inherit the remaining configuration. Only Responses delegation settings, storage, and frontend data-channel permissions can be overridden. Apply transport.sdp as the remote answer and wait for session.started before sending commands. Do not send session.start on the data channel or supply audio.format; WebRTC negotiates its media format.

## Path parameters

- `session_id` string, required

## Request body

- LiveForkRequest — Fork a stored Live session onto a new WebRTC connection. Omit session or send an empty object to inherit its configuration.
  - `session` LiveMediaSessionForkParams — Optional overrides for a stored Live session. Omitted settings are inherited. The model, voice, frontend instructions, and prior conversation come from the stored session. WebRTC negotiates its audio format; audio.format is only supported on WebSocket forks.
    - `store` boolean — Whether to store the forked session. Omission inherits the stored session's setting.
    - `delegation` LiveResponsesDelegationUpdateParam — Update the Responses backend for an existing Live session without changing delegation ownership.
      - `type` 'responses', required — The delegation owner. Always `responses` for tasks handled by the Responses API.
      - `responses` LiveResponsesDelegationSettingsUpdateInputParam — Updates to the Responses backend of an existing Live session. Omitted settings retain their current values.
        - `model` string — The Responses backend model to use for subsequent delegated requests. Omit to keep the current backend model.
        - `instructions` string, nullable — 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).
        - `max_output_tokens` integer, nullable — Maximum number of output tokens for each delegated response.
        - `service_tier` 'auto' | 'default' | 'fast_tier_temp_pilot' | 'flex' | 'priority' | 'ultrafast'
        - `reasoning` LiveDelegationReasoningInputParam — Reasoning options for Responses requests made on behalf of the Live session.
          - `effort` 'none' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh'
          - `summary` 'concise' | 'detailed' | 'auto'
        - `text` LiveDelegationTextInputParam — Text generation options for the Live session’s Responses backend.
          - `verbosity` 'low' | 'medium' | 'high'
        - `tools` union[] — Tools available to the Responses backend while it handles tasks delegated by the Live model.
          - union
            - LiveFunctionToolInputParam — A function tool available to the Responses backend when the Live model delegates a task.
              - …
            - LiveWebSearchToolInputParam — A web search tool available to the Live session’s Responses backend.
              - …
        - `tool_choice` union — Controls which tool the Responses backend uses when handling a task delegated by the Live model.
          - 'auto' | 'none' | 'required'
          - LiveFunctionToolChoiceParam
            - `type` 'function', required
            - `name` string, required
          - LiveMCPToolChoiceParam
            - `type` 'mcp', required
            - `server_label` string, required
            - `name` string, required
        - `parallel_tool_calls` boolean, nullable — Whether the delegated Responses model may request multiple tool calls in a single response.
    - `client` LiveClientConfigParam — Startup-only capabilities for an untrusted frontend attached to a unified WebRTC session. Trusted sideband connections are unaffected.
      - `data_channel` LiveDataChannelConfigParam, required — 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.
        - `allowed_client_events` union — 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.
          - 'all'
          - string[]
        - `allowed_server_events` union — 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.
          - 'all'
          - LiveAllowedServerEventParam[]
            - `type` string, required — The outer Live server event type. Use 'response.event' for Responses events.
            - `response_event` string — The nested Responses event type. Required when type is 'response.event'; forbidden for other event types.
  - `transport` LiveWebRTCTransport, required — WebRTC transport carrying the offer SDP in a creation request or answer SDP in its response.
    - `type` 'webrtc', required — The transport used for the Live session. Always `webrtc`.
    - `sdp` string, required — Session Description Protocol message for the WebRTC connection.

## Response `201`

Forked Live session created with a WebRTC answer.

- LiveCreateResponse — The created Live session identifier and WebRTC answer. Apply transport.sdp as the peer's remote answer and wait for session.started on the data channel before sending commands.
  - `session` object, required — The newly created Live session. Use its ID for session controls and sideband connections.
    - `id` string, required — Opaque session identifier. Preserve the returned value unchanged, including its prefix.
  - `transport` LiveWebRTCTransport, required — WebRTC transport carrying the offer SDP in a creation request or answer SDP in its response.
    - `type` 'webrtc', required — The transport used for the Live session. Always `webrtc`.
    - `sdp` string, required — Session Description Protocol message for the WebRTC connection.

## Changes

- **2026-09-10** `d3c0cb1ebbed` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/openai/apis/openapi/changes/live/sessions/:session_id/fork/post.md)

---

[API](https://skmtc.dev/openai/apis/openapi.md) · [All operations](https://skmtc.dev/openai/apis/openapi/llms.txt) · [OpenAPI document](https://skmtc.dev/openai/apis/openapi/revisions/8c3c08961f62?raw)
