GPT-Live SIP: Power-User Guide to Outbound Calling

On November 2, 2026, OpenAI made GPT-Live outbound SIP calling generally available to every organization through the Live API. You can dial a phone number with gpt-live-1 over your SIP trunk, or accept inbound calls, with voice sessions billed at $0.05 per minute.

Last updated: November 7, 2026

Table of contents

What is new in GPT-Live SIP

The OpenAI API changelog for November 2, 2026 states that outbound SIP calling is now available to all organizations through the Live API for model gpt-live-1 and endpoint v1/live/sessions. You connect GPT-Live to a phone number through your SIP provider. That is separate from the October 16, 2026 GPT-Live voices release (prompt-to-voice and nine natural voices), which we cover in the GPT-Live voices guide.

GPT-Live remains OpenAI’s full-duplex voice surface: the caller and assistant can speak at the same time while your backend handles reasoning and tools. SIP signaling uses TLS, and GPT-Live requires SRTP for call audio. For competitor voice stacks, see Grok Voice 3.0 and Voxtral 3.

Inbound vs outbound SIP

Capability Inbound Outbound
How the call starts Provider routes to sip:$PROJECT_ID@sip.api.openai.com;transport=tls Your backend creates a Live session with transport.type: "sip"
Webhook live.transport.incoming (legacy: live.call.incoming) Not required
Accept / reject POST .../accept or .../reject with session config Not used; dial starts at session create
Destination Caller dials your number E.164 phone number only (SIP URI destinations are not supported)
Progress events Sideband after accept transport.ringing, transport.answered, transport.failed
Model gpt-live-1 in the accept body gpt-live-1 in session create

Both directions use a sideband WebSocket at wss://api.openai.com/v1/live/sessions/{session_id}/attach for transcripts, delegation, tools, and call controls while SIP carries the audio. Do not send session.start again after attach. For API credits that can fund these sessions, see ChatGPT API credits.

How to place an outbound call

OpenAI’s Telephony and SIP guide says outbound SIP calling is available to all organizations through the Live API, not the Realtime API call-creation endpoint. Configure a trunk that supports TLS signaling and SDES-SRTP, then supply trunk fields on each request.

  1. Enable SRTP in your SIP provider and collect Digest username, password, a sips: provider URL (default port 5061), and an E.164 caller number.
  2. From your trusted backend, send POST https://api.openai.com/v1/live/sessions with Authorization: Bearer $OPENAI_API_KEY.
  3. Set session.model to gpt-live-1, choose audio.output.voice (for example marin), set instructions and delegation, and omit audio.format so SIP can negotiate it.
  4. Set transport.type to sip, transport.destination to the callee in E.164 (for example +14155550123), and fill transport.trunk with provider_url, Digest auth, and caller_number.
  5. On 200 OK, save session.id. Immediately attach the sideband WebSocket; it only replays events from the preceding 3 seconds.
  6. Watch transport.ringing, transport.answered, or transport.failed, then use refer, hangup, or DTMF controls as needed. Keep the sideband open until session.closed for final usage.

Keep OpenAI API keys and SIP credentials on the server. The provider URL must use sips: for TLS; do not put credentials or private IP hostnames in that URL. Creation can return 502 for transport setup failure or 504 on initialization timeout; asynchronous failures appear as transport.failed.

How to accept an inbound call

After you purchase a number from a SIP trunking provider such as Twilio:

  1. In OpenAI project settings, create a webhook subscribed to live.transport.incoming.
  2. Point the trunk at sip:$PROJECT_ID@sip.api.openai.com;transport=tls, or sip-eu.api.openai.com for European data residency. Confirm GPT-Live SIP support is enabled for that project.
  3. When a call arrives, verify the webhook signature, deduplicate with webhook-id, and treat data.sip_headers as untrusted metadata.
  4. To accept, POST /v1/live/sessions/{session_id}/accept with a top-level session object that sets type live, model gpt-live-1, instructions, voice, and delegation. Success is 200 OK with an empty body.
  5. To reject, POST .../reject with a SIP status from 300 through 699 (for example 486 for busy). The first accept or reject wins; later decisions return decision_already_made.
  6. Attach the sideband with the same session id. Assign one handler to accept/reject so duplicate webhook deliveries do not run tools twice.

Existing integrations may still see the deprecated live.call.incoming event without data.type. During migration, handle both names until legacy deliveries drain.

Active call controls, network and limits

For both inbound and outbound calls, send DTMF with transport.dtmf.send over the sideband and listen for transport.dtmf.received / transport.dtmf.sent. Transfer with POST /v1/live/sessions/{session_id}/refer and a target_uri such as tel:+14155550123 or sip:agent@example.com. Hang up with POST .../hangup (empty body). Both return 200 OK on success.

Network requirements from the SIP guide: allow outbound TCP/TLS to sip.api.openai.com and sip-eu.api.openai.com on port 5061, and bidirectional SRTP UDP to CIDRs 13.79.45.80/28, 23.98.140.64/28, 40.67.149.176/28, and 40.83.204.240/28. Ringing is limited to 3 minutes; a connected call is limited to 2 hours. Session configuration for GPT-Live (model, voice, instructions, delegation) is chosen at startup, as described in the managing GPT-Live sessions guide. Related agent tooling: Codex CLI 0.167.

Pricing

OpenAI’s pricing page lists GPT-Live 1 voice sessions at $0.05 per minute for gpt-live-1, billed per second without rounding up to a whole minute. Backend model and tool usage is charged separately. Your SIP carrier’s minutes and trunk fees are outside OpenAI’s rate. Track cumulative voice seconds from session.usage.updated and the final session.closed usage snapshot.

Frequently asked questions

What is GPT-Live outbound SIP?

Outbound SIP lets your backend place a phone call through your SIP provider while GPT-Live (model gpt-live-1) carries the conversation. OpenAI made it generally available to all organizations on November 2, 2026 through the Live API (POST /v1/live/sessions), not the Realtime API call-creation endpoint.

How much does a GPT-Live SIP call cost?

OpenAI bills gpt-live-1 voice sessions at $0.05 per minute, billed per second without rounding up to a whole minute. Backend model and tool usage is charged separately. Your SIP provider’s telephony charges are separate from OpenAI’s voice session rate.

How do I place an outbound GPT-Live SIP call?

Send POST /v1/live/sessions with session.model gpt-live-1 and transport.type sip. Include destination in E.164, a TLS sips: provider_url, Digest auth credentials, and caller_number. The 200 OK response returns a session id; attach a sideband WebSocket to watch transport.ringing, transport.answered, or transport.failed.

How do inbound SIP calls work with GPT-Live?

Point your SIP trunk at sip:$PROJECT_ID@sip.api.openai.com;transport=tls (or sip-eu for European data residency). Subscribe a webhook to live.transport.incoming, then POST accept or reject on /v1/live/sessions/{session_id}. Choose voice and delegation when accepting; SIP negotiates audio format so omit audio.format.

What are the call duration limits?

OpenAI’s SIP guide states ringing is limited to 3 minutes and a connected call is limited to 2 hours. Those limits are not configurable in the session creation request.

Is GPT-Live SIP the same as the Realtime API SIP flow?

No. Outbound SIP for GPT-Live uses the Live API. The Telephony and SIP guide also documents a separate Realtime API inbound flow with realtime.call.incoming and /v1/realtime/calls endpoints. Prefer Live API sessions for new GPT-Live phone agents.



Sources

Related answers

Leave a Comment