Answers that can’t go off-menu
You declare the allowed answers in the request. The Decisions API can only return one of them. You never parse free text or retry on a malformed reply.
Now available · Get a Decisions API key in a minute
Decisions, not text
Send any context and a fixed set of answers. The Decisions API returns one typed choice, with a probability for every option. Classify, route and pick an agent’s next step in a single call.
From $5 for 5,000 calls · Key issued instantly
curl https://api.decisionsapi.cc/v1/decisions \
-H "Authorization: Bearer $DECISIONS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"context": "Charged twice for my March invoice, please refund one.",
"questions": {
"team": {
"type": "choice",
"options": {
"billing": "Payments, invoices, refunds",
"technical": "Bugs, errors, integrations",
"sales": "Plans, pricing, upgrades"
}
},
"urgent": {
"type": "yes_no",
"question": "Does the customer need action today?"
}
}
}'
import os, requests
res = requests.post(
"https://api.decisionsapi.cc/v1/decisions",
headers={"Authorization": f"Bearer {os.environ['DECISIONS_API_KEY']}"},
json={
"context": ticket.body,
"questions": {
"team": {
"type": "choice",
"options": {
"billing": "Payments, invoices, refunds",
"technical": "Bugs, errors, integrations",
"sales": "Plans, pricing, upgrades",
},
},
"urgent": {"type": "yes_no", "question": "Does the customer need action today?"},
},
},
)
answers = res.json()["answers"]
route_to(answers["team"]["choice"])
const res = await fetch("https://api.decisionsapi.cc/v1/decisions", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.DECISIONS_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
context: ticket.body,
questions: {
team: {
type: "choice",
options: {
billing: "Payments, invoices, refunds",
technical: "Bugs, errors, integrations",
sales: "Plans, pricing, upgrades",
},
},
urgent: { type: "yes_no", question: "Does the customer need action today?" },
},
}),
});
const { answers } = await res.json();
routeTo(answers.team.choice);
{
"id": "dec_01J9X4M2Q8",
"answers": {
"team": {
"choice": "billing",
"confidence": 0.97,
"probabilities": {
"billing": 0.97,
"technical": 0.02,
"sales": 0.01
}
},
"urgent": { "answer": true, "probability": 0.81 }
},
"usage": { "input_tokens": 64 }
}A Decisions API request with two questions, and the typed response.
Overview
The Decisions API is an AI API for constrained decisions. You describe the questions and every allowed answer; the Decisions API reads your context and returns one of those answers per question, with a probability for each option. There is no free text to parse and no malformed output to retry.
Most of the code around an LLM call exists to force prose back into a shape your program can use. The Decisions API makes the output space part of the request, so the answer arrives already typed.
Capabilities
You declare the allowed answers in the request. The Decisions API can only return one of them. You never parse free text or retry on a malformed reply.
Each answer comes with a confidence and a full probability distribution. Set your own threshold and send the unsure cases to a person.
Ask about team, urgency, language and sentiment in the same request, all against the same context. Every question is answered in one pass.
Send a support ticket, a chat transcript, a JSON event, a product listing or an agent’s full state. It is read as-is, with no feature engineering.
A Decisions API call returns one short, fixed-shape answer, so it fits inside a request handler, a moderation queue or an agent loop without slowing it down.
Describe each option the way you would brief a colleague. Changing a rule is a one-line edit to the prompt, with nothing to retrain.
Question types
Choice, score and yes/no cover most decisions software makes. Mix them freely in one request.
choice
Pick exactly one option from a set you describe in plain words. The Decisions API returns the choice plus a probability for each option.
"billing" | "technical" | "sales"
score
Place the context on an ordered scale you define, such as risk, priority or lead quality.
"low" < "medium" < "high"
yes_no
Ask one yes-or-no question. The answer is a boolean and a calibrated probability.
true · 0.81
Reference
One endpoint: POST https://api.decisionsapi.cc/v1/decisions, authenticated
with Authorization: Bearer $DECISIONS_API_KEY.
context |
string | object | string[]What the decision is about: text, JSON or a list of strings. |
|---|---|
questions |
objectOne entry per question, keyed by a name you choose. |
questions.*.type |
"choice" | "score" | "yes_no"The shape of the answer. |
questions.*.options |
object | string[]For choice: option → description. For score: an ordered list. |
questions.*.question |
stringFor yes_no: the question to answer. |
answers.*.choice |
stringThe selected option (choice and score). |
|---|---|
answers.*.answer |
booleanThe answer to a yes_no question. |
answers.*.confidence |
numberProbability of the selected option, 0–1. |
answers.*.probabilities |
objectProbability for every option you defined. |
usage.input_tokens |
numberBillable input tokens for the call. |
Use cases
Anywhere your software makes the same kind of call thousands of times a day.
Send each ticket to the team that owns it, with urgency attached.
Allow, review or block, with the probability you need for an audit trail.
Let an agent pick its next tool from a closed list instead of writing free text.
Score inbound leads against your own criteria, not a black-box number.
Check a model’s draft against your policy before it reaches a user.
Tag documents, emails and events at whatever volume your pipeline produces.
Landscape · updated September 30, 2026
TypeSafe shipped Jev, a “System One” decision model, in September. On September 29, OpenAI announced its own Decisions API at DevDay 2026. Here is what each company has said publicly so far.
| OpenAI Decisions API | TypeSafe Jev | |
|---|---|---|
| Status | Limited preview; broad release “in the coming days” | Early access |
| Underlying model | A version of GPT-6 Luna | Jev, a non-autoregressive “System One” model |
| Input | Text and images | Text, JSON, string arrays |
| Stated latency | “Less than a few hundred milliseconds end to end” | 70–500 ms end to end |
| Public docs | Not yet | Yes |
Sources: OpenAI DevDay 2026 recap, @OpenAIDevs, The Decoder, TypeSafe blog. Early hands-on tests, such as Every’s vibe check, found the two close on accuracy.
Full Decisions API vs Jev comparison →Across launch threads the same questions keep coming up: what a call will cost at volume, whether image input matters for their use case, and how exposed they are to one vendor changing terms.
An independent Decisions API with a small, stable contract: choice, score and yes/no questions, one endpoint, per-option probabilities. Not affiliated with either company above.
Pricing
Prepaid credits, one credit per call. No subscription, no expiry, and failed calls are never billed.
Pay and your key appears on the next page. No account, no approval queue, no sales call.
From $5 for 5,000 calls. One credit covers a call with up to 4,000 input tokens.
The $100 pack brings a call down to $0.67 per thousand. Need more? Ask for committed rates.
Access
Buy a credit pack from $5 and your Decisions API key appears the moment the payment clears.
Write the question and the allowed answers in plain words, as you would brief a colleague.
POST your context and questions to /v1/decisions. A first integration takes minutes.
FAQ
The Decisions API is an AI API for constrained decisions. You send context plus a set of questions with fixed possible answers, and it returns one typed answer per question with a probability for every option. It is built for classification, routing, moderation and agent tool selection.
Buy a credit pack on the pricing page and your Decisions API key appears as soon as the payment clears. Packs start at $5 for 5,000 calls. No account and no approval queue.
Prepaid credits, one credit per call. Packs start at $5 for 5,000 calls, credits never expire, and failed calls are free. See the pricing page for volume packs.
The job is similar, the contract is different. A general LLM returns text that you have to parse and hope stays on-menu. The Decisions API takes the allowed answers as part of the request, can only return one of them, and gives a probability for each.
Not yet. The Decisions API accepts text, JSON and lists of strings. For images, extract text or fields first and send those as context.
You don’t need one. The Decisions API is a single JSON endpoint, so any HTTP client works, as the examples above show. With a coding agent, point it at https://decisionsapi.cc/docs.md and it can write the helper for you.
Request content is processed only to return the answer. We don’t store it and don’t train on it. We keep usage metadata (time, token count, credits) for billing. Please don’t send regulated data such as health records. Details are in the Privacy Policy at decisionsapi.cc/privacy.
$5 gets you 5,000 calls and a key in under a minute.