Skip to content
Dashboard

What is OpenAI's Decisions API?

Content Engineer

OpenAI's Decisions API uses GPT-6 Luna to answer questions with predefined choices. Developers can use those answers to classify content, route requests, or select an agent's next action. The API accepts text or image context and is currently in limited preview.

OpenAI introduced the API at DevDay on September 29, 2026. Consider an application that receives a customer message and needs to assign it to a team. Before anyone writes a reply, the application needs a narrower answer: which team should handle this request? Decisions API gives that kind of choice its own interface.

Copy link to headingHow does a question with predefined answers work?

You define the decision your application needs and the answers it can use. The model evaluates the supplied context against that question. Your application then interprets the selected answer according to its own rules.

For a support form, a proposed routing question might be, "Which team should handle this request first?" The possible answers could be:

Answer

Meaning in the application

Account access

The customer cannot sign in or recover access

Billing

The customer needs help with a charge or invoice

Technical support

A product operation fails after the customer signs in

Needs review

The request is unclear or doesn't fit the available teams

A message that mentions an invoice doesn't always belong in Billing. If the customer says they cannot sign in to download it, the immediate problem is account access. The question and category definitions should express that priority so the model can distinguish the customer's eventual goal from the first step needed to help them.

This is an application design example, not the Decisions API request schema. The category names are choices we would supply, and the routing behavior would need testing on real messages.

Copy link to headingWhat can you use OpenAI’s Decisions API for?

The announced use cases share a constraint: the application can name the possible outcomes in advance. That makes the API a candidate for decisions such as choosing a workflow branch or identifying a content category.

For example, a document intake system could classify an incoming note as a product guide, an incident report, or an item needing review. The application would use the answer to choose the next processing step. It would still need a separate extraction step if that workflow also requires names or dates from the document.

Image input creates another possibility. Suppose a browser workflow needs to distinguish a sign-in screen from an error dialog before continuing. You could test a question whose answers describe those known screen states, with a review option for unfamiliar screens. The classification would tell your code which branch to consider; interacting with the browser would remain a separate operation.

These examples are candidates for evaluation. Input support alone doesn't establish how accurately a model will recognize a particular document or interface.

Copy link to headingHow is the Decisions API different from Structured Outputs?

Structured Outputs lets you constrain a model's response to a JSON schema. An enum can restrict a field to a list of categories, so developers can already build classification workflows with general-purpose OpenAI models.

Decisions API is an interface built around predefined answers; Structured Outputs specifies the shape of a generated response. A classification may only require a category, while a support response may need that category alongside an explanation and extracted details. Define the required output before choosing the interface, then test whether separating the decision improves the completed workflow.

Schema compliance and correct judgment are separate questions. A response can match the schema and still assign a sign-in problem to the wrong team. OpenAI explicitly notes that Structured Outputs can contain mistakes. Evaluate category choices against reviewed examples, regardless of which API returns them.

If you already use AI SDK, its existing OpenAI evaluation adapter calls the Responses API with structured output. An openai.evaluationModel('gpt-6-luna') example uses that integration. It should not be treated as a Decisions API example.

Copy link to headingWhere does a bounded decision fall short?

A fixed answer list can omit the right outcome. If a routing system only offers Billing and Technical support, an account-access request still has to fit somewhere. Include an explicit review path and define when it applies. A review label gives the model another option, but you still need to check whether it uses that option appropriately.

Some questions also require evidence the application hasn't supplied. "Does this customer need a refund?" may depend on the order record and the applicable policy. A message saying "I was charged twice" establishes what the customer reported; the payment system establishes whether two charges occurred. Retrieve the relevant records before asking a model to assess them.

When an answer triggers an operation, keep the operation's requirements in application code. Selecting Account access can route a ticket, but resetting the account still requires the existing identity checks. A classification result doesn't establish authorization.

Copy link to headingHow can you prepare a workflow before public access?

Start by collecting representative inputs and writing down the expected decision for each. Include requests that mention multiple problems and cases where the available context is insufficient. If reviewers disagree about the right team, resolve the routing policy before treating either answer as a model error.

Next, define what each answer does in your application. For the support form, Account access assigns a queue and Needs review creates a triage task. Timeouts and failed calls also need a path that preserves the original request. This work is useful before you choose an API because it specifies the behavior you're trying to implement.

When access is available, compare the model's answers with that reviewed set. Measure routing errors alongside the fraction of requests sent for review. An application that appears accurate because it sends almost everything to a person may not meet the workload's needs. Measure elapsed time through the whole route, including any fallback, before deciding whether the change helps users.

For an existing implementation to study, Vercel's Jev resource hub links to typed-decision guides and application examples. Those patterns can help you define the questions and downstream behavior you'll test with the Decisions API.

For an existing Jev workflow, compare OpenAI’s Decisions API and Jev by the inputs and answer fields your code needs.

Copy link to headingFrequently asked questions

Copy link to headingIs OpenAI's Decisions API publicly available?

Decisions API is in limited preview and is not yet generally available.

Copy link to headingWhich model powers Decisions API?

OpenAI identifies GPT-6 Luna as the model behind Decisions API. That does not establish that the decision interface exposes all the settings or capabilities of a regular Luna request.

Copy link to headingCan I already classify content with Structured Outputs?

Yes. A supported OpenAI model can return a category constrained by a JSON schema. That gives you an existing classification approach to evaluate against Decisions API when you have access.

Copy link to headingDoes a predefined answer guarantee a correct decision?

No. An allowed answer can still misinterpret the input or reflect an incomplete set of choices. Test decisions against reviewed examples and define how the application handles uncertainty or failure.

More Build with AI articles

Ready to deploy?