OpenAI’s Decisions API is generally available, with changes that matter for apps repeatedly evaluating the same evidence. The October 22 update adds shared-input caching, images attached to individual questions and direct JSON input, while raising the request limit from 200 questions to 400.
For developers building classification or review features into Mac and iPhone apps, the useful design question is where to separate reusable context from the checks that change.
Choose the answer before the endpoint
Decisions currently supports only gpt-6-luna. Its answer types are deliberately bounded: predicate estimates whether a condition holds, choice selects from supplied alternatives, and score evaluates ordered levels. These are useful building blocks for routing and filtering, rather than a general document-generation interface.
The API reference also allows any question to return a refusal while others receive answers. Handle that state explicitly; a missing classification must not silently become the default route.
Direct input_json supplies structured evidence. It does not introduce arbitrary JSON output. For extracted fields in a custom schema or written explanations, OpenAI points developers toward Structured Outputs with the Responses API.
Keep changing questions outside the cache
The Decisions guide places the default cache boundary after shared input. Reuse requires an identical prefix of at least 1,024 tokens. Question content does not count toward that minimum, and question-specific images sit outside the reusable prefix.

That suggests a practical layout: retain the reference material in shared input, then vary the checks and comparison images. Moving every changing detail into shared input would undermine that separation.
Check the endpoint’s controls rather than assuming cache options carry across APIs. The Decisions reference currently lists only 30m for its cache TTL. The 12-hour caching option we covered concerns Responses. Explicit-only caching with no marked boundary disables caching.
Batch independent checks, not a workflow
A request accepts 1–400 independent questions. If a later decision needs an earlier answer, use separate requests instead of treating the array as an execution sequence.
Start with a bounded feature and labeled examples from your application. Set thresholds around the consequences of wrong answers, and keep a review path for uncertain results. Decisions returns assessments; application code still decides whether and how to act. A larger question allowance does not remove that responsibility.
