Invite-only access: OpenAI Decisions APIExplore the playground
Back to all articles

AI APIs

What Is OpenAI Decisions API? A Practical Guide to Bounded AI Decisions

What is OpenAI Decisions API? Learn how bounded decision interfaces compare with chat, structured outputs, and function calling—and how to evaluate them safely.

By DecisionApiOct 1, 202612 min read
What Is OpenAI Decisions API? A Practical Guide to Bounded AI Decisions

What Is OpenAI Decisions API? A Practical Guide to Bounded AI Decisions

If you are searching for what is OpenAI Decisions API, the most useful answer needs one important clarification: the phrase currently describes a reported or preview-stage decision-oriented interface, not a generally available OpenAI endpoint that every developer can call. The public information is still limited, while OpenAI’s established building blocks for reliable application decisions are Structured Outputs and function calling.

At the same time, DecisionApi is an independent playground and API at decisionapi.net. It brings multiple decision models together behind one workflow: provide state, define typed questions, and receive structured answers that your application can inspect. It is not an OpenAI product and is not affiliated with OpenAI. That distinction matters when you evaluate documentation, pricing, model names, and production guarantees.

This guide explains the idea behind a Decisions API, what is currently public, how it differs from a normal LLM call, and how to test the pattern without handing model output more authority than it deserves.

Table of contents

The short answer

A decision API is a model interface for making one small, bounded judgment inside software. Instead of asking a model to write a paragraph and then trying to parse the paragraph, the application supplies context and asks one question with an explicit answer space.

For example:

Context: The customer was charged twice for the same order.
Question: Which approved workflow should own this case?
Answers: billing, account_security, technical_support, manual_review

The result is intended to be a signal for code: route the ticket, select a tool, assign a score, request human review, or choose the next branch in an agent loop. The model does not become the policy engine. Your application still owns authorization, validation, side effects, and audit records.

The term “OpenAI Decisions API” should therefore be read carefully. It may refer to an OpenAI preview or reported product direction, while the public OpenAI platform documentation currently gives developers more mature primitives for structured application behavior. If you need a working multi-model decision workflow today, DecisionApi’s developer documentation and playground show the independent implementation and its current contract.

What a decision API actually does

The defining property is not simply that the response is JSON. JSON can contain a long explanation, an unexpected label, or a field that your program cannot safely interpret. A decision interface starts with the semantics of the choice:

decision = model(state, question, allowed_answers)

The answer space is part of the request. That makes the workflow easier to review before inference runs and easier to connect to a known branch afterward.

State is the evidence

State is the smallest useful context for one decision. It might be a support message, a JSON record, a moderation event, a proposed tool call, or a small set of retrieved facts. Keeping state focused reduces noise, latency, privacy exposure, and cost.

If the question is “which queue should handle this ticket?”, the model may need the message, product area, account tier, and recent payment events. It probably does not need the entire customer history or every message from a year-long conversation.

The question is a contract

One question should represent one judgment. “Classify the ticket, decide whether it is urgent, refund the customer, and notify the team” mixes interpretation with authorization and action. Split it into separate decisions:

  • Which approved queue owns this case?
  • What is the operational severity on a defined scale?
  • Does the proposed refund require human approval?

Each question should include an explicit fallback such as manual_review or none_of_the_above. Real inputs will not always fit the first taxonomy you design.

The answer is a branch, not a paragraph

DecisionApi’s public workflow exposes three useful question shapes: Choice for selecting one option, Score for an ordered scale, and Noul for a focused yes-or-no judgment. The exact response fields and supported models belong to its own product contract; they should not be confused with an OpenAI schema.

A hand-drawn diagram showing state, a bounded question, finite answers, and a structured result

The application can turn an answer into a known next step without extracting intent from free-form prose. It can still reject the answer, send the case to review, or apply a deterministic rule first.

How it differs from chat, Structured Outputs, and function calling

These ideas are related, but they solve different problems.

Pattern What the model is asked to do What your application still needs to do
Chat or general generation Explain, draft, summarize, plan, or explore Interpret the response and decide how to act
Structured Outputs Return content that conforms to a developer-supplied schema Define semantics, validate business rules, and decide whether the result is safe
Function calling Request a tool or function with structured arguments Execute the tool, check authorization, return tool output, and continue the loop
Decision API Choose one bounded answer, score, or yes/no result Map the decision to policy-controlled branches and handle uncertainty

OpenAI’s official Structured Outputs documentation says that schema adherence is the point of the feature: valid JSON alone does not guarantee that an answer matches your schema. Its function calling guide describes the multi-step loop in which the model requests a tool, your application executes it, and the result is sent back.

Those are valuable primitives. A decision interface adds a product-level focus on the judgment itself: the choices are finite, the question is narrow, and the output is meant to be consumed as a control signal. You can build that pattern on top of a general model, but a dedicated decision layer can make repeated micro-decisions easier to compare and operate.

general generation:  prompt → prose → parser → validation → retry → action
bounded decision:    state + question → decision → policy check → action

The second path is shorter, not automatically more accurate. A neatly typed answer can still be wrong, biased, or based on incomplete state.

A minimal sketch comparing open-ended generation with a tidy funnel of bounded outcomes

What is publicly known about OpenAI Decisions API

The safest current summary is that the OpenAI-branded Decisions API is not a normal, generally available endpoint in the public platform. The public guide on decisionapi.net presents it as a limited-preview direction and explicitly says that access, request schema, pricing, and performance guarantees may change.

That guide describes a decision layer aimed at classification, routing, and an agent’s next bounded action. It also summarizes reported preview characteristics such as text and image context and low-latency responses. Treat those details as a snapshot, not as an SLA or a contract you can copy into production. Before building a provider adapter, verify the official endpoint, authentication scope, quota, error behavior, data controls, supported input types, and billing rules in the account that will run the workload.

This is also why the name can be confusing. DecisionApi’s website has an “OpenAI Decisions API” guide, but the site footer describes DecisionApi as an independent platform that brings together models from multiple providers. The independent service currently offers a public model directory, a playground, and API documentation. Its available model list, response format, and credit plans are not an OpenAI product specification.

How a typed decision workflow works

A practical workflow has four stages.

1. Prepare state

Start with the evidence the question actually needs. Prefer a compact object when the decision depends on several fields:

{
  "ticket": "The customer was charged twice.",
  "account_tier": "business",
  "recent_events": ["payment_succeeded", "payment_succeeded"]
}

Keep untrusted user text inside the state. Do not let a sentence in the ticket rewrite the question, allowed answers, or system policy.

2. Define typed questions

Use Choice when the next branch is categorical, Score when you have a rubric with ordered operational meaning, and Noul when the question is genuinely binary. A good question is testable by a reviewer who does not need to guess what “low” or “safe” means.

For an internal support workflow, questions might be:

route: billing | account_security | technical_support | manual_review
severity: 0–3, where 3 means service or payment is blocked
needs_human: yes | no

Several decisions about the same state can be asked together, while keeping each question independent enough that a failure or review decision is understandable.

3. Inspect the response

Read the selected answer together with the model identifier, question version, usage, request identifier, probability or confidence signal, and any provider error. A transport timeout is not a confident “no”. An out-of-vocabulary answer is not a valid branch.

The public DecisionApi workflow uses POST /v1/systemone as its evaluation endpoint. The following is conceptual pseudocode for the shape of a decision request, not an OpenAI API specification:

{
  "model": "typesafe/jev-1.13",
  "state": {
    "ticket": "The customer was charged twice.",
    "account_tier": "business"
  },
  "questions": [
    {
      "name": "route",
      "type": "choice",
      "prompt": "Which approved workflow owns this case?",
      "options": ["billing", "account_security", "manual_review"]
    },
    {
      "name": "needs_human",
      "type": "noul",
      "prompt": "Does the proposed refund require human approval?"
    }
  ]
}

4. Apply policy

The model can recommend a route. It should not be able to bypass permissions, approve a payment, delete data, or publish content by itself. The application checks the answer against allowlists, resource scope, user permissions, thresholds, and confirmation rules.

Practical use cases

Support and lead routing

Classify a ticket into billing, technical support, account, or manual review. Add a severity score if queue priority matters. The support system owns the queue mapping and can send ambiguous cases to a person.

Selecting an agent’s next step

An agent may need to choose between search, opening a record, calling a tool, retrying, escalating, or asking the user for missing information. A bounded decision layer can select from that allowlist while the host application checks that the tool exists and that its arguments are safe.

A hand-drawn agent routing map that branches into search, tool action, and human review

Model routing and cost control

Route easy cases to a fast model, difficult cases to a stronger model, sensitive cases to a person, or uncertain cases to retrieval. This is useful only when each route has a known capability, latency range, cost, and fallback. Do not hide an arbitrary model switch inside an opaque prompt.

Moderation and safety triage

Use a focused yes-or-no question to flag content for review, then combine it with deterministic rules and a human queue. The goal is not to turn a model score into a final legal or safety judgment; it is to prioritize attention and make the review path explicit.

A safe integration pattern

Keep the provider behind a narrow adapter. That makes it possible to compare an OpenAI preview, a public model, and DecisionApi without rewriting every route in your product.

const result = await decisionProvider.evaluate({
  state,
  questions,
  questionVersion: 'support-routing.v3',
});

if (result.status !== 'ok' || !allowedRoutes.includes(result.answers.route)) {
  return sendToManualReview('Unavailable or unknown route');
}

if (result.answers.needs_human === true || result.confidence < 0.8) {
  return sendToManualReview('Policy requires review');
}

return dispatch(result.answers.route, { auditId });

The exact property names are illustrative. In production, validate an unknown response at the boundary, distinguish provider failure from a real answer, and record the final human outcome. Version the question text, options, rubric, model, and policy together.

How to evaluate quality, confidence, and cost

Do not evaluate a decision API only by asking whether the response is valid JSON. Build a representative labeled set and measure the outcome that matters.

Offline evaluation

Start with historical examples reviewed by people who understand the policy. Measure agreement by class, false positives, false negatives, abstention rate, and the cost of each mistake. A routing error may be annoying; an incorrect permission or payment decision may be unacceptable.

Thresholds and calibration

Confidence is evidence, not authorization. A value of 0.92 can be wrong for a new language, customer segment, adversarial prompt, or missing field. Compare confidence bands with real outcomes and choose thresholds based on business risk rather than a convenient round number.

A hand-drawn evaluation board showing sample inputs, a calibration curve, a threshold, and a human review checkpoint

Track p50, p95, and p99 latency, retry rate, provider errors, context size, usage, automation coverage, and review volume. Re-run the evaluation after a model, question, policy, or product change.

Shadow mode

Before a decision can change the world, run it beside the existing rule or human workflow. Compare the recommendation with the trusted outcome, but do not let it send money, change access, delete records, or publish automatically. Promote only a narrow, reversible path first.

Security and production guardrails

A decision model should sit between interpretation and execution, not between authorization and execution. Use these guardrails:

  1. Allowlist actions. The model may select refund_review, not invent an arbitrary endpoint.
  2. Validate arguments. Check types, resource ownership, limits, and required fields in code.
  3. Separate permissions. User and service authorization must be deterministic and independent of the model score.
  4. Protect sensitive state. Minimize personal data, redact logs, and verify retention and regional handling.
  5. Keep an escape hatch. Use manual_review, unknown, and provider-unavailable states.
  6. Audit the complete path. Store the question version, model, result, policy decision, action, and later outcome.

A hand-drawn production flow with model, policy, and human approval gates before an action

The safest execution equation is:

executable action = model recommendation ∩ deterministic policy

If the provider is unavailable, do not silently interpret a timeout as a negative answer. Route the case to a safe queue, retry within a bounded budget, or ask for human review.

OpenAI APIs or DecisionApi: which should you use?

Choose based on the shape of the work, not the popularity of the name.

Need A sensible starting point
Open-ended answer, explanation, drafting, or planning A general OpenAI model through the Responses API
Schema-constrained content extraction OpenAI Structured Outputs
Calling your application’s tools OpenAI function calling with application-side authorization
A public multi-model playground for Choice, Score, and Noul decisions DecisionApi’s playground
Comparing available decision models and their contracts DecisionApi’s model directory and docs

DecisionApi also publishes usage plans for teams that want to move from a tested workflow to API calls. Check the current pricing page, because credits, concurrency, models, and access can change.

The strongest architecture is often hybrid. Use a general model to understand a user’s goal or produce an explanation. Use a bounded decision layer to classify, route, score, or choose a next step. Use deterministic code and human review to authorize high-impact actions.

Frequently asked questions

Is OpenAI Decisions API the same as DecisionApi?

No. The names are similar, but they describe different things. OpenAI Decisions API refers to a reported or preview-stage OpenAI direction. DecisionApi at decisionapi.net is an independent platform with its own models, playground, endpoint, credits, and documentation.

Is OpenAI Decisions API publicly available?

The current public guide describes it as not generally available yet. Verify access, endpoint details, pricing, and limits in official OpenAI channels before planning a production dependency.

Is a decision API just JSON mode?

No. JSON is a transport format. A decision API is about defining a bounded semantic choice and returning a result your application can route or validate. OpenAI Structured Outputs can make schema-constrained JSON more reliable, but your code still owns the policy.

Can a decision API choose an AI agent’s next action?

Yes, that is a strong fit when the action set is small and explicit. Let it choose from an allowlist such as search, retrieve, retry, escalate, or finish. Validate the tool, arguments, permissions, and confirmation requirements before execution.

Is confidence the same as accuracy?

No. Confidence is a model signal that must be calibrated against real outcomes. Keep abstention, thresholds, deterministic checks, and human review for uncertain or high-impact cases.

Final takeaway

The idea behind an OpenAI Decisions API is simple: move a small, typed judgment closer to the software that needs to act on it. The value is not that a model can produce JSON. The value is that the application defines a question, limits the answer space, measures uncertainty, and keeps authority in code.

Today, separate the name from the capability. Treat OpenAI preview claims as provisional, use official OpenAI documentation for public Structured Outputs and function calling behavior, and evaluate independent services such as DecisionApi on their own contracts. A disciplined workflow can make routing, triage, model selection, and agent control loops easier to reason about—without pretending that a probability is a permission.

Sources

© 2026 DecisionsApi JournalBack home