## Accept call

`live.sessions.accept(session_id, **kwargs) -> void`

**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](/api/docs/guides/live-prompting) to write frontend conversation instructions and a separate backend prompt. SIP media format is negotiated; omit audio.format.

### Parameters

- `session_id: String`

- `session: Session{ model, type, audio, 4 more}`

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

  - `model: String | :"gpt-live-1"`

    The Live model to use for the accepted call.

    - `String = String`

    - `Model = :"gpt-live-1"`

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

      - `:"gpt-live-1"`

  - `type: :live`

    The session type. Always `live`.

    - `:live`

  - `audio: Audio{ output}`

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

    - `output: Output{ voice}`

      Settings for speech generated by the Live model. Choose the voice before starting the session.

      - `voice: String | BuiltInVoice | 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.

        - `String = String`

        - `BuiltInVoice = :alloy | :ash | :ballad | 19 more`

          A built-in voice available for Live speech.

          - `:alloy`

          - `:ash`

          - `:ballad`

          - `:beacon`

          - `:bossa`

          - `:cedar`

          - `:cinder`

          - `:coral`

          - `:delta`

          - `:echo`

          - `:gleam`

          - `:marin`

          - `:meridian`

          - `:quartz`

          - `:ripple`

          - `:sage`

          - `:shimmer`

          - `:stone`

          - `:tempo`

          - `:verse`

          - `:vesper`

          - `:willow`

        - `class CustomVoice`

          - `id: String`

  - `delegation: ClientDelegation | Responses{ responses, type}`

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

    - `class ClientDelegation`

      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.

        - `:client`

    - `class Responses`

      Delegate tasks to a Responses model managed by the Live session.

      - `responses: ResponsesDelegationConfig`

        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: String`

          Instructions for the delegated Responses model, separate from Live instructions. See [backend prompting](/api/docs/guides/live-delegation#start-with-your-existing-backend-prompt).

        - `max_output_tokens: Integer`

          Maximum number of output tokens for each delegated response.

        - `parallel_tool_calls: bool`

          Whether the delegated Responses model may request multiple tool calls in a single response.

        - `reasoning: Reasoning{ effort, summary}`

          Reasoning settings passed to each delegated Responses request.

          - `effort: :none | :minimal | :low | 3 more`

            How much reasoning effort the delegated Responses model should use. Supported values depend on the backend model.

            - `:none`

            - `:minimal`

            - `:low`

            - `:medium`

            - `:high`

            - `:xhigh`

          - `summary: :concise | :detailed | :auto`

            The reasoning summary to request from the delegated Responses model, when supported.

            - `:concise`

            - `:detailed`

            - `:auto`

        - `service_tier: :auto | :default | :fast_tier_temp_pilot | 3 more`

          Service tier for delegated Responses requests.

          - `:auto`

          - `:default`

          - `:fast_tier_temp_pilot`

          - `:flex`

          - `:priority`

          - `:ultrafast`

        - `text: Text{ verbosity}`

          Text generation settings passed to each delegated Responses request.

          - `verbosity: :low | :medium | :high`

            The amount of detail in text generated by the Responses backend. This does not configure the Live model’s spoken delivery.

            - `:low`

            - `:medium`

            - `:high`

        - `tool_choice: :auto | :none | :required | LiveFunctionToolChoiceParam{ name, type} | LiveMCPToolChoiceParam{ name, server_label, type}`

          Controls which tool the Responses backend uses when handling a task delegated by the Live model.

          - `LiveToolChoiceEnum = :auto | :none | :required`

            - `:auto`

            - `:none`

            - `:required`

          - `class LiveFunctionToolChoiceParam`

            - `name: String`

            - `type: :function`

              - `:function`

          - `class LiveMCPToolChoiceParam`

            - `name: String`

            - `server_label: String`

            - `type: :mcp`

              - `:mcp`

        - `tools: Array[FunctionTool | WebSearch{ type}]`

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

          - `class FunctionTool`

            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`.

              - `:function`

            - `description: String`

              What the function does and when the delegated Responses model should call it.

            - `parameters: Hash[Symbol, untyped]`

              A JSON Schema object describing the arguments accepted by the function.

            - `strict: bool`

              Whether the delegated Responses model must follow the function’s parameter schema exactly.

          - `class WebSearch`

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

            - `type: :web_search`

              The tool type. Always `web_search`.

              - `:web_search`

      - `type: :responses`

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

        - `:responses`

  - `input: Array[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.

    - `class Developer`

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

      - `content: Array[Content{ 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: :input_text`

          The text content type. Always `input_text`.

          - `:input_text`

      - `role: :developer`

        The author of this history message. Always `developer`.

        - `:developer`

      - `id: String`

        An optional identifier for the supplied history message. Live uses the message’s role and text to initialize the conversation.

      - `status: :incomplete | :completed`

        The supplied message’s status. Live uses its text as history and does not resume an incomplete message.

        - `:incomplete`

        - `:completed`

      - `type: :message`

        The history item type. Always `message`.

        - `:message`

    - `class User`

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

      - `content: Array[Content{ 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: :input_text`

          The text content type. Always `input_text`.

          - `:input_text`

      - `role: :user`

        The author of this history message. Always `user`.

        - `:user`

      - `id: String`

        An optional identifier for the supplied history message. Live uses the message’s role and text to initialize the conversation.

      - `status: :incomplete | :completed`

        The supplied message’s status. Live uses its text as history and does not resume an incomplete message.

        - `:incomplete`

        - `:completed`

      - `type: :message`

        The history item type. Always `message`.

        - `:message`

    - `class Assistant`

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

      - `content: Array[Text{ text, type} | OutputText{ text, type}]`

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

        - `class Text`

          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: :text`

            The text content type. Always `text`.

            - `:text`

        - `class OutputText`

          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`.

            - `:output_text`

      - `role: :assistant`

        The author of this history message. Always `assistant`.

        - `:assistant`

      - `id: String`

        An optional identifier for the supplied history message. Live uses the message’s role and text to initialize the conversation.

      - `status: :incomplete | :completed`

        The supplied message’s status. Live uses its text as history and does not resume an incomplete message.

        - `:incomplete`

        - `:completed`

      - `type: :message`

        The history item type. Always `message`.

        - `:message`

  - `instructions: String`

    Frontend instructions for voice, conversation, interruptions, and when to delegate. Start with the [Live prompting guide](/api/docs/guides/live-prompting); put business rules and tool workflows in a separate [backend prompt](/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.

  - `store: bool`

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

### Example

```ruby
require "openai"

openai = OpenAI::Client.new(api_key: "My API Key")

result = openai.live.sessions.accept("session_id", session: {model: "gpt-live-1", type: :live})

puts(result)
```
