---
title: "Fork session"
method: POST
path: "/live/sessions/{session_id}/fork"
tags: ["Live"]
---

# Fork session

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

## Request

- Base URL: `https://api.openai.com/v1`
- URL: `https://api.openai.com/v1/live/sessions/{session_id}/fork`
- Auth: HTTP bearer

Fork a stored Live session onto a new WebRTC connection.

## 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.
      - `acknowledgement_delay_ms` 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.
      - `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.
              - …
            - LiveFileSearchToolInputParam
              - …
            - LiveCodeInterpreterToolInputParam
              - …
            - LiveHostedShellToolInputParam: A Responses shell tool. Use a hosted container or return local shell results with response.item.create. Domain secrets are not supported.
              - …
            - LiveImageGenerationToolInputParam
              - …
            - LiveMCPToolInputParam
              - …
            - LiveCustomToolInputParam
              - …
            - LiveNamespaceToolInputParam
              - …
            - LiveToolSearchToolInputParam
              - …
            - LiveProgrammaticToolInputParam
              - …
            - LiveComputerToolInputParam
              - …
            - LiveApplyPatchToolInputParam
              - …
        - `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: The tool to call. Always `function`.
            - `name` string, required: The name of the function tool to call.
          - LiveMCPToolChoiceParam
            - `type` 'mcp', required: The tool to call. Always `mcp`.
            - `server_label` string, required: The label of the MCP server to call.
            - `name` string, nullable: The name of the MCP tool to call. If omitted, the server may choose a default.
          - LiveSpecificFileSearchParam
            - `type` 'file_search', required: The tool to call. Always `file_search`.
          - LiveSpecificWebSearchParam
            - `type` 'web_search', required: The tool to call. Always `web_search`.
          - LiveSpecificWebSearchPreviewParam
            - `type` 'web_search_preview', required: The tool to call. Always `web_search_preview`.
          - LiveSpecificImageGenParam
            - `type` 'image_generation', required: The tool to call. Always `image_generation`.
          - LiveSpecificComputerParam
            - `type` 'computer', required: The tool to call. Always `computer`.
          - LiveSpecificCodeInterpreterParam
            - `type` 'code_interpreter', required: The tool to call. Always `code_interpreter`.
          - LiveSpecificProgrammaticToolCallingParam
            - `type` 'programmatic_tool_calling', required: The tool to call. Always `programmatic_tool_calling`.
          - LiveSpecificFunctionShellParam: Forces the model to call the shell tool when a tool call is required.
            - `type` 'shell', required: The tool to call. Always `shell`.
          - LiveSpecificCustomToolParam
            - `type` 'custom', required: The tool to call. Always `custom`.
            - `name` string, required: The name of the custom tool to call.
          - LiveSpecificApplyPatchParam: Forces the model to call the apply_patch tool when executing a tool call.
            - `type` 'apply_patch', required: The tool to call. Always `apply_patch`.
          - LiveAllowedToolsChoiceParam
            - `type` 'allowed_tools', required: The tool choice type. Always `allowed_tools`.
            - `tools` union[], required: The tools that the delegated Responses model may call.
              - …
            - `mode` 'none' | 'auto' | '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.

## Other responses

- `400`: Invalid Live session request.
- `404`: Invalid session ID.
- `413`: The Live session request exceeds the supported size limit.
- `429`: The session could not start because a rate or quota limit was exceeded.
- `500`: An internal error occurred. The response body is plain text.
- `503`: The session is temporarily unavailable.

## Changes

- **2026-10-22** `16f7d1994de2`: 1 info
  - added the new optional request property `session/delegation/acknowledgement_delay_ms`
- **2026-10-08** `0b01d93762e5`: 1 breaking, 3 info
  - the `session/delegation/responses/tool_choice/oneOf[subschema #2]/` request property type changed from `object` to no type
  - added discriminator to `session/delegation/responses/tool_choice/oneOf[subschema #2]/` request property
  - added `#/components/schemas/LiveAllowedToolsChoiceParam` to the `session/delegation/responses/tool_choice` request property `oneOf` list
  - added `#/components/schemas/LiveFunctionToolChoiceParam, #/components/schemas/LiveMCPToolChoiceParam, #/components/schemas/LiveSpecificFileSearchParam, #/components/schemas/LiveSpecificWebSearchParam, #/components/schemas/LiveSpecificWebSearchPreviewParam, #/components/schemas/LiveSpecificImageGenParam, #/components/schemas/LiveSpecificComputerParam, #/components/schemas/LiveSpecificCodeInterpreterParam, #/components/schemas/LiveSpecificProgrammaticToolCallingParam, #/components/schemas/LiveSpecificFunctionShellParam, #/components/schemas/LiveSpecificCustomToolParam, #/components/schemas/LiveSpecificApplyPatchParam` to the `session/delegation/responses/tool_choice/oneOf[subschema #2]/` request property `oneOf` list
- …earlier changes not shown

[Operation history](https://skmtc.dev/omnistack-sh/apis/openai-api/changes/live/sessions/:session_id/fork/post.md)

---

[API](https://skmtc.dev/omnistack-sh/apis/openai-api.md) - [All operations](https://skmtc.dev/omnistack-sh/apis/openai-api/llms.txt) - [OpenAPI document](https://skmtc.dev/omnistack-sh/apis/openai-api/revisions/0a26f104d35f?raw)
