OpenAI Decisions API · EU alternative

Typed decisions, processed in the EU

The OpenAI Decisions API (generally available since 22 October 2026) answers yes/no, choice and score questions with gpt-6-luna. Decision Models offers the same three question types on open-weight models, with an EU tier, a public DPA and rates from €0.018 ($0.021) per 1M input tokens. To be fair: OpenAI offers processing in Europe too. Facts checked 25 October 2026.

Get API keySee the EU tier

At a glance

OpenAI Decisions API and Decision Models compared

OpenAI facts from OpenAI’s Decisions guide, retrieved 25 October 2026. Decision Models rates exclude taxes.

FeatureOpenAI Decisions APIDecision Models
Input price per 1M tokens$0.10 uncached; cache hits are discounted, cache writes are charged; regional processing premiums and long-context multipliers applys1-fast from €0.018 ($0.021) in the EU tier, €0.017 ($0.019) Peer-to-Peer; s1-pro €0.074 ($0.084) EU. The EU rate is the list rate; no further regional premium. All rates
Output tokensNot chargedNot charged
Modelsgpt-6-luna only (proprietary)Several open-weight models (Apache-2.0); every answer names the model version
Questions per request1–400s1-pro up to 3, s1-fast and s1-vision 1. More questions means more requests.
Input typesText, images, JSON, conversations with tool callsText or JSON as state; one image with s1-vision
Prompt cachingYesNo
Processing in EuropeYes: regional processing in Europe (EEA + Switzerland) and data residency; eligibility per OpenAI’s data controlsEU tier: gateway and GPU inference only at contracted operators in the EU; EU requests never leave the EU. Where inference runs
RetentionA no-retention option for eligible customers (per OpenAI)Request and response content is not stored on our gateway or inference servers
DPAPer OpenAI’s data controlsPublic DPA, accepted at signup
ProviderOpenAIDecision Models, a company based in Passau, Germany (imprint)

Migration

From /v1/decisions to /v1/systemone

The three question types map one to one. Field names differ; the table shows every mapping.

FieldOpenAI Decisions APIDecision Models
EndpointPOST https://api.openai.com/v1/decisionsPOST https://api.decisionmodels.io/v1/systemone
KeyAuthorization: Bearer $OPENAI_API_KEYAuthorization: Bearer $DECISIONMODELS_API_KEY (from the dashboard)
Model"model": "gpt-6-luna""model": "s1-fast", "s1-pro" or another id from GET /v1/models
Shared inputinput: a string or an array of messages (also tool calls, input_json)state: a string or a JSON object/array. Flatten a conversation into one state first.
Questionsquestions: an array, each question has a namequestions: an object keyed by the question name
Yes/no"type": "predicate" → answer probability"type": "noul" → answer noul (probability of “yes”)
Choice"type": "choice" with choices: [{"value", "description"}]"type": "choice" with criteria: {"value": "description"} (at least two options)
Score"type": "score" with 2–10 levels: [{"label", "description"}]"type": "score" with an ordered criteria array (at least two levels); score is also the probability-weighted average of the level indices, starting at 0
Answersanswers: an array in question orderanswers: an object keyed by question name, plus model_version and usage
RegionData residency or regional processing per project (United States or Europe)Header S1-Region: eu|global, or the key’s default tier
Imagesinput_image parts in input or in questionss1-vision via /v1/multimodal, exactly one image per request

Example

The same question, before and after

A complaint is routed to a department. The option descriptions move from choices to criteria.

Before · OpenAI
curl https://api.openai.com/v1/decisions \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"gpt-6-luna",
       "input":"I was charged twice for my order.",
       "questions":[{"type":"choice","name":"department",
         "instructions":"Which department should handle this complaint?",
         "choices":[{"value":"billing","description":"Payments, invoices, and refunds."},
                    {"value":"technical","description":"Problems using the product."},
                    {"value":"other","description":"Anything else."}]}]}'
After · Decision Models (EU)
curl https://api.decisionmodels.io/v1/systemone \
  -H "Authorization: Bearer $DECISIONMODELS_API_KEY" \
  -H "Content-Type: application/json" \
  -H "S1-Region: eu" \
  -d '{"model":"s1-fast",
       "state":"I was charged twice for my order.",
       "questions":{"department":{"type":"choice",
         "instructions":"Which department should handle this complaint?",
         "criteria":{"billing":"Payments, invoices, and refunds.",
                     "technical":"Problems using the product.",
                     "other":"Anything else."}}}}'

Honest fit

When OpenAI is the better fit

Decision Models fits when you want open-weight models, low per-token rates, a public DPA and a provider based in Germany. Test the answers on your own labelled examples before you switch production traffic.

OpenAI and gpt-6-luna are trademarks of OpenAI. Decision Models is not affiliated with OpenAI and uses the names only for comparison.