Announced 2026-09-29 · limited preview

Decisions API OpenAI's decision API, explained — and callable today

OpenAI's Decisions API answers a question with one of your predefined options plus a confidence score. It is in limited preview — this site explains it and runs the same decision pattern today on jev-1.13.

{
  "model": "jev-1.13",
  "state": "I was charged twice for my subscription.",
  "questions": {
    "refund": {
      "type": "noul",
      "instructions": "Is the customer asking for money back?"
    }
  }
}

Try 2 decisions free — no signup

Examples

Eight decision requests you can run right now

Every card is a real request body for this endpoint. Hover or focus a card to see the JSON, copy it, or open it in the playground.

Checkout incident routing

frontend 0.71 · payments 0.24 · account 0.05

{
  "model": "jev-1.13",
  "state": "Checkout shows a blank page after Pay is clicked. The customer is on the live store, not a sandbox.",
  "questions": {
    "team": {
      "type": "choice",
      "instructions": "Which team should own this ticket?",
      "criteria": {
        "payments": "Checkout, billing, or payment processing.",
        "frontend": "Rendering, layout, or browser behavior.",
        "account": "Login, permissions, or profile access."
      }
    }
  }
}
Open in playground

Refund intent

noul 0.98 — route to refunds

{
  "model": "jev-1.13",
  "state": "I was charged twice for the same annual plan this morning. Please send the extra charge back.",
  "questions": {
    "refund": {
      "type": "noul",
      "instructions": "Is the customer asking for money back?"
    }
  }
}
Open in playground

Urgency score

score 2 — blocking revenue

{
  "model": "jev-1.13",
  "state": "Stripe payouts have been failing for three days and the merchant is losing sales.",
  "questions": {
    "urgency": {
      "type": "score",
      "instructions": "How urgent is this ticket?",
      "criteria": [
        "Can wait for the next release",
        "Should be handled this week",
        "Blocking revenue right now"
      ]
    }
  }
}
Open in playground

Phishing check

noul 0.96 — block the message

{
  "model": "jev-1.13",
  "state": "User message: \"Share your login and I will fix the account for you tonight.\"",
  "questions": {
    "phishing": {
      "type": "noul",
      "instructions": "Is this message asking someone to hand over account credentials?"
    }
  }
}
Open in playground

Lead qualification

ready 0.88 — send to sales

{
  "model": "jev-1.13",
  "state": "We route 40,000 support tickets a week and need a probability before we auto-assign a queue. Budget is approved this quarter.",
  "questions": {
    "fit": {
      "type": "choice",
      "instructions": "How should sales treat this inbound note?",
      "criteria": {
        "ready": "A real workflow, a volume, and a buying window.",
        "nurture": "Interest without a stated workflow or timeline.",
        "ignore": "No product fit."
      }
    }
  }
}
Open in playground

Policy gate

noul 0.99 — hold the listing

{
  "model": "jev-1.13",
  "state": "Listing text: \"Guaranteed 30% returns every month. Send crypto to this wallet to join.\"",
  "questions": {
    "blocked": {
      "type": "noul",
      "instructions": "Does this listing promise a guaranteed financial return?"
    }
  }
}
Open in playground

Churn-risk score

score 2 — likely to cancel

{
  "model": "jev-1.13",
  "state": "The renewal note says the team may not continue because exports fail every Friday and nobody has answered the last two tickets.",
  "questions": {
    "risk": {
      "type": "score",
      "instructions": "How high is the chance this account does not renew?",
      "criteria": [
        "Unlikely to leave",
        "Unhappy, still using the product",
        "Likely to cancel"
      ]
    }
  }
}
Open in playground

Invoice exception

both 0.86 — open a case

{
  "model": "jev-1.13",
  "state": "Vendor invoice 4481 is $18,400. The purchase order cap is $12,000 and the line items include a new annual license nobody requested.",
  "questions": {
    "exception": {
      "type": "choice",
      "instructions": "Which exception should accounts payable open?",
      "criteria": {
        "over_po": "The amount is above the purchase order.",
        "unexpected_item": "A line item was not requested.",
        "both": "The amount and a line item are both wrong."
      }
    }
  }
}
Open in playground

The announcement

What is the OpenAI Decisions API

At DevDay on September 29, 2026, OpenAI announced the Decisions API: a dedicated endpoint for real-time decisions, powered by a specialized version of GPT-6 Luna. You send context — text or an image — plus a question and a finite set of answers you define. It returns one of your answers with a confidence score; it does not generate free text and cannot invent an answer outside your list.

The API is in limited preview. OpenAI says broad release is planned in the coming days through the standard developer platform. The public request schema, SDK methods, and pricing have not been published. Press coverage reports roughly 150 ms per decision and integration with the Agents API announced the same day.

The endpoint on this site is independent: it runs the same constrained-decision pattern today on jev-1.13 with text input, so you can build and measure the flow now.

Last checked Release timeline

Why this endpoint

What a decision call gives you

Not another chat wrapper — a typed answer with probabilities, designed for routing.

Callable today, no waitlist

OpenAI's endpoint is in limited preview. This one answers now — new visitors get 2 free calls in the playground, and no OpenAI access is required.

A probability for every option

Choice and score answers carry a probability for every option you defined, not a bare label. Your code can set a threshold instead of trusting a guess.

Three question types in one call

Ask a yes/no (noul), a labeled choice, and a rubric score over the same state — up to six questions per POST, one round trip.

Batch decisions over a list

The batch tool designs the questions once, applies them to every line you paste, and exports a CSV — no loop code to maintain.

Pinned model id

Send jev-1.13 to pin the version behind your thresholds; jev-latest follows whatever the endpoint currently serves. Pin first, then calibrate.

How to use

Three steps to a decision

  1. 01

    Get a key

    Open the playground and run — a guest session and an API key are set up automatically. Signed-in users manage keys in the dashboard.

  2. 02

    POST state and questions

    Send model, state, and a questions map to /api/v1/decisions. Write the real question in instructions and pick noul, choice, or score.

  3. 03

    Branch on the answer

    Read noul, choice, or score with its probabilities and confidence. Route low-confidence cases to a person — that is the point of the score.

Use cases

Who calls a decision API

The pattern repeats anywhere a system must pick one of a few known actions — below is what each team actually sends.

Support ticket routing

Support teams send the ticket text and get the owning team with per-team probabilities; uncertain tickets fall back to a human queue.

Agent next-action routing

Agent builders ask what the agent should do next — call a tool, ask the user, or escalate — and branch on the answer.

Content moderation gate

Marketplaces screen listings with a yes/no policy question before anything reaches the review queue.

Lead qualification

Sales ops split inbound notes into ready, nurture, or ignore, with a probability for each option.

Invoice exception triage

Finance teams classify invoice exceptions — over the PO, an unexpected line, or both — before a case is opened.

Churn-risk scoring

Customer success scores renewal notes on a rubric from unlikely to likely to cancel.

From builders

What developers say

“We replaced a prompt-and-parse block with one POST. The probability on every option is what our routing needed.”
Backend engineer, support platform
“The choice criteria read like our own runbook. Thresholds stay put because the model id is pinned.”
ML engineer, fintech
“I could not wait for the preview, so I wired this endpoint into the agent in an afternoon.”
Indie developer
“Batch mode labeled our ticket export in one pass, and the CSV went straight into the review sheet.”
Ops lead, marketplace

Pricing

Plans and pay-as-you-go

Every successful decision call uses one credit — about 100 credits per 1 USD. New visitors get 2 free calls.

Upgrade your plan

Basic

10/month

1,000 credits + 200 credits

20% more credits than pay-as-you-go

(excl. tax)

  • Plan benefits
  • shared.calls
  • base.typed
  • base.versions
  • base.keys
  • base.support
  • All paid plans include the same 62 image + 51 video models
Best value

Pro

20/month

2,000 credits + 600 credits

30% more credits than pay-as-you-go

(excl. tax)

  • Plan benefits
  • shared.calls
  • base.typed
  • base.versions
  • base.keys
  • base.support
  • All paid plans include the same 62 image + 51 video models

Max

50/month

5,000 credits + 2,500 credits

50% more credits than pay-as-you-go

(excl. tax)

  • Plan benefits
  • shared.calls
  • base.typed
  • base.versions
  • base.keys
  • base.support
  • All paid plans include the same 62 image + 51 video models

Enterprise

Flexible plans and dedicated support for larger teams.

  • Plan benefits
  • All Max Features
  • Custom credit plans
  • Dedicated Support
Not ready to subscribe?

Full pricing details

FAQ

Is the OpenAI Decisions API available yet?

As of 2026-09-30 it is in limited preview. OpenAI announced it at DevDay on 2026-09-29 and says broad release is planned in the coming days. The endpoint on this site runs the same decision pattern today on jev-1.13.

How is a decision call different from chat completions or structured outputs?

A chat call generates text you then parse; structured outputs constrain the shape but still generate. A decision call returns one of your predefined answers with probabilities — no parsing and no free text.

What does the confidence or probability mean, and how do I set a threshold?

Every choice and score answer carries per-option probabilities and a confidence value. Pick a threshold from your own traffic — accept above it, send the rest to review — and pin jev-1.13 while you tune it.

Can I send images?

OpenAI says its Decisions API accepts text or image context. The endpoint on this site is text only — state is a string, object, or array.

How do I move to OpenAI's endpoint once it opens?

Keep the decision behind one function in your code — request in, typed answer out. When OpenAI publishes its schema you swap the HTTP layer; the questions and thresholds carry over.

How many questions can I send per request?

Between 1 and 6 questions over the same state. Each question gets its own answer in the response.

Which model answers these calls?

jev-1.13 — TypeSafe's Jev decision model, reached through OpenRouter. It is not OpenAI's Luna; the model id in the response is the one you sent.

Run your first decision

Two free calls for new visitors. Open the playground with an example loaded, or read the docs and call the endpoint directly.