Decision models

Typed answers, with the odds.

Stop coaxing a chat model into "answer only yes or no". POST /v1/decide asks named questions about a piece of state and returns, per question, a value and the probability behind it — in well under a second, for a fraction of a cent.

3
Question types: noul, choice, score
32
Questions per call
64K
Token context per request
A balance scale made of flame, each pan holding a teal shape, radiating light
What you get

A classifier you can read the odds of.

A chat model asked for "a probability" produces a plausible-looking number. A decision model produces a calibrated one. That's the whole point, and why Fire refuses to fake this endpoint with a prompt.

?

noul — yes or no

Optional instructions, optional criteria. Answer: {"noul": 0.98}, the probability of "yes". Pick your own threshold per use case instead of trusting a string.

⋮

choice — one of N labels

Criteria is a {label: description} map, 1–255 labels. Answer: the chosen label, a confidence, and the full probability distribution across labels.

▥

score — position on a rubric

Criteria is an ordered list of 2–10 level descriptions. Answer: a probability-weighted score, per-level probabilities, and the legend echoed back so the rubric stays visible.

▣

Structured state in

state is a string or a JSON object/array of text — a ticket, an email, a form. Text only; no images or audio. ~32K tokens for state plus the longest question.

⚡

Validated before it costs anything

Fire checks every question shape before the provider is called, so a malformed request is a free 422, not a billed mistake. Unknown keys are dropped, never forwarded.

$

Priced per input token

Jev is $0.042 per million input tokens at the provider; output is free. A three-question call on a paragraph is around two hundred-thousandths of a dollar. meta.price.usd says exactly.

Request

Triage a support message in one call.

Three questions, one pass: what are they asking for, are they angry, how urgent. Each answer carries its probability, so a router can send p(cancellation) > 0.3 to a human and the rest to a bot.

Where this earns its keep: routing before you spend a frontier chat call, moderation gates with a tunable threshold, lead and deal scoring against a rubric an operator can read, validating another model's output.

curl -X POST https://fire.prosaga.net/v1/decide \
  -H "Authorization: Bearer $FIRE_API_KEY" -H "Content-Type: application/json" \
  -d '{
    "state": "My invoice shows $49 but I only bought the $19 plan. Fix it or I cancel.",
    "questions": {
      "intent": {"type": "choice", "instructions": "What is the customer asking for?",
              "criteria": {"billing_dispute": "Disputes a charge", "cancellation": "Wants to cancel", "question": "General question"}},
      "is_angry": {"type": "noul", "instructions": "Is the customer frustrated or threatening to leave?"},
      "urgency": {"type": "score", "instructions": "How urgent is this?",
              "criteria": ["not urgent", "somewhat urgent", "urgent", "critical"]}
    }
  }'

# → "answers": {
# "intent": {"choice": "billing_dispute", "confidence": 1.0, "probabilities": {…}},
# "is_angry": {"noul": 0.98},
# "urgency": {"score": 2.14, "probabilities": [0.0, 0.03, 0.8, 0.17], "legend": […]}},
# "meta": {"price": {"usd": 0.000018}, "call_id": "…"}
Models you can call

Real decision models only — never a chat model in disguise.

A species with modality "decision" must produce calibrated probabilities. Naming a chat model here is a 404, not a fallback.

FAQ

Questions evaluators ask.

Why not just ask GPT or Claude for a yes/no?

You can, and for free-text output you should use /v1/chat. But a chat model's "probability" is a plausible number, not a calibrated one, and its label choice drifts with phrasing. A decision model is built to return a distribution you can threshold.

Which model answers?

Jev by TypeSafe (jev) is the default and currently the only onboarded decision model, served through Eden AI. Fire's request shape is its own contract — if the upstream endpoint changes, the adapter absorbs it and /v1/decide doesn't move.

What are the limits?

Up to 32 questions per call; names 1–64 characters of letters, digits, _ . -; choice criteria 1–255 labels; score criteria 2–10 levels; ~64K tokens of context (32K for state plus the longest question). Text and JSON only.

Can I report a miscalibrated answer?

Yes — POST /v1/calls/{call_id}/report accepts wrong_answer, miscalibrated, ignored_criteria, missing_answer or other for decision calls.

A raised hand holding a burning torch — the Fire brand emblem
Ready when you are

Get a key. Make a call. See the price.

Free to sign up — you only pay when you top up. No card required to get your first key.