OpenAI
OpenAI's GPT-Live can now call the Decisions API itself, so your app decides while the user is still speaking
Checked by machine against OpenAI’s page on .
OpenAI added a native Decisions integration to GPT-Live, for gpt-live-1 and gpt-6-luna on v1/live/sessions; its API changelog lists it on 15 October 2026. Live can now call Decisions directly through native delegation, or trigger decisions as input or output transcript deltas arrive. The guide states the point in one line: low-latency decisions while your user is still speaking. If you read our earlier item,OpenAI releases the Decisions API in beta, this is that API reached from inside a voice session, without your server in the middle.
What changed
Delegation is Live handing part of the conversation to something else to handle. The guide names two kinds: with custom delegation, Live notifies your app, which then calls Decisions; with native delegation, Live calls Decisions directly. The native kind skips a round trip through your app.
There are two ways to start a decision. You set the choices in session.delegationand tell Live when to delegate ; or, to react to the conversation as your user speaks or as Live replies, you configuresession.triggersfor input or output transcript deltas — the small pieces of written transcript that arrive while the words are still being spoken. The delegation type is set when you create the session and stays fixed for that session. The questions can change during an active session: sendsession.update, then wait for the matching session.updatedbefore adding a decision item for that step.
In one request, Live can ask Decisions to choose among actions you define and decide whether your app should call the Responses API. The guide's example is a voice assistant for a car: a driver can ask to turn the temperature up or down, turn the windshield defogger on or off, or get directions and find a place to eat. One native decision request answers all three of its questions independently , and a choice ofnoneleaves that cabin control unchanged. In the example configuration the session runs ongpt-live-1and the decisions ongpt-6-luna. You do not forward the conversation yourself: Live sends the transcript to Decisions automatically.
Transcript triggers run independently of delegation, and Live supplies their model and trigger ID. You use one when the timing should follow the conversation ; in the guide, a digital person could smile and nod while your user is still speaking.
What it means for you
If your voice app hands requests to Decisions through your own server today, native delegation takes that hop out. This is the switch, in the order the guide gives it.
Permissions first. You need a working Live connection and a key with the api.decisions.writepermission. Keep your usual Live connection headers; no Decisions-specific alpha header is needed.
Decide at creation. In your WebRTC session request, the delegation object goes under session, alongside your existing transport. Givedelegation the type decisions and, inside its decisions object, the model and your questions. Use the sessioninstructionsto tell Live when to delegate, and the choice questions to tell Decisions what to return. Since the type stays fixed for the session , moving from custom to native delegation means opening a new session.
Listen for the answer. Save delegation.id from session.delegation.created. On thedecision.event carrying that delegation_id, look for decision.completed and read each choice by its question name in event.decision.answers; an answer ofnonemeans do nothing for that action. If you filter WebRTC events, allow bothsession.delegation.created and decision.event.
Act, then report back. Do the action, read back the real state, and send it to Decisions with decision.item.create. Append a compact snapshot only when the state changes and treat the newest as current; leaving earlier inputs in place preserves the prefix for prompt caching. Wait fordecision.item.created, then send the result to Live with session.commentary.appendand the same delegation ID.
Hand off the rest. When a question says the request goes beyond your own actions, call Responses from your server with the api.responses.writepermission , and send Live only the concise final answer and the confirmed state. That call is the first request of a function-calling flow , the loop our guideWhat Tool Use Is explains.
Triggers, if you want reactions rather than actions. Add a trigger to session.triggers with the type decisions, an event_type of session.input_transcript.delta, and your questions ; leave the model out, since Live supplies it. A second trigger onsession.output_transcript.deltareacts to the words Live is speaking. Allow the transcript event in your filter too: Live only delivers a trigger result when its source transcript event is also allowed. Results can arrive out of order and Live can combine pending deltas, so matchsource_event_idto the delta and apply the newest relevant result for each direction.
The source
OpenAI's API changelog, the entry of 15 October 2026, and its guide to connecting voice to Decisions.