FIELD NOTE

Decisions API Reaches GA with 400-Question Requests

The Decisions API reaches general availability with GPT-6 Luna, adding native JSON, caching and support for 400 questions per request.

The Decisions API reached general availability on October 22 with GPT-6 Luna, adding native JSON inputs, reusable-context caching and up to 400 questions per request. OpenAI also added images in question instructions and integration with GPT-Live. For developers who evaluated the beta, this is a concrete expansion of the request contract: applications can evaluate more independent questions against the same evidence and pass structured records directly.

What changed in the Decisions API release

The beta allowed up to 200 questions per request. The general release doubles that ceiling and adds capabilities for shared context, images and structured data. The dedicated endpoint remains POST /v1/decisions, with gpt-6-luna the supported model. Its output is a typed answer to a bounded question, such as a category, a score or the probability that a condition is true.

This changes the implementation work for teams that previously converted every record into a text prompt. A native JSON input can carry the record’s structure, while question-specific instructions can describe exactly what should be evaluated. An application can ask several independent questions about that record together. Decisions that rely on an earlier answer should still be sent as separate requests.

The earlier beta report records the October 6 contract. The general-availability release is a later milestone with new inputs and a larger question limit. Existing beta integrations should review their request construction and tests against the current official guide before adopting the additions.

Match the answer type to the application decision

The developer guide describes predicate, choice and score questions. A predicate estimates whether a condition is true. A choice selects from supplied alternatives. A score uses ordered levels and can return a value between those levels. Choose the type that represents the application’s decision rather than asking for free-form prose and parsing the wording afterward.

For a support-routing example, a choice question might select the responsible department from a fixed list. A separate predicate might ask whether an order record supports a reported duplicate charge. Those answers serve different purposes. The routing category can choose a queue, while the duplicate-charge assessment can send the ticket for human review rather than directly issuing a refund.

Write instructions that make the evidence and boundary clear. Define what counts as a duplicate, which record fields matter and how to handle missing evidence. Keep the application’s action policy outside the model’s answer: the endpoint returns an assessment, and the application decides which operation that assessment permits. This example is a proposed design pattern, not a production result from the release.

Use JSON and images without losing the evidence boundary

The new JSON input part accepts an object or array through input_json. This lets a request carry structured evidence without first serializing it into an informal explanation. It does not change the selected answer type. Keep record identifiers and timestamps in the evidence so an engineer can trace an incorrect decision back to the original input.

Images in question instructions can supply a reference image for a comparison against shared evidence. That is useful when several questions inspect the same submitted image but use different criteria or reference material. A product workflow might separately assess visible damage and category, with a reviewer checking the evaluation against the actual photograph.

Choose samples that expose ambiguity. Include clear positives, clear negatives, incomplete records and visually uncertain cases. A high score on easy examples can hide a failure at the boundary where a decision becomes consequential. Preserve the original examples and expected treatment so later prompt changes can be compared consistently. The Luna guide discusses structuring repeatable tasks around explicit labels and checks.

Caching and cost need endpoint-specific accounting

OpenAI’s launch article lists $0.10 per million input tokens and $0.01 per million cached input tokens, with no output-token charge for Decisions. Cache writes and regional processing have their own applicable rules. This is a dedicated endpoint’s billing contract; an ordinary Luna Responses request has a different accounting structure.

For repeated work, separate stable shared input from the changing record and measure actual cache reuse. Do not assume that a repeated request or a conversation identifier guarantees a hit. A useful trial records input usage, cache usage and request volume alongside decision accuracy. Use the pricing guide for the distinction between API and subscription budgets, and consult the official Decisions rate card for the endpoint’s complete charges.

Roll out one recurring decision first

Start with a decision that already has a clear owner and an observable outcome. Run the new endpoint on saved examples before connecting it to an action. Compare predictions with the existing process, then inspect disagreements individually. Record false positives and false negatives separately because they can have different operational costs.

Next, run a small shadow evaluation on current inputs. The application can record the suggested category or score while the existing workflow continues to make the decision. Define the acceptance criteria before looking at the results: for example, whether a routing change reduces manual reassignment without losing urgent cases. This keeps the rollout tied to a specific service outcome.

OpenAI reports lower latency than using Luna through Responses, including an up-to-tenfold comparison in its announcement. That is a vendor-reported comparison rather than a timing guarantee for every integration. Measure end-to-end latency in the application, including preprocessing, network calls and downstream actions. General availability supplies the new contract; task-specific evaluation determines where it is useful.