Early access A higher-volume API, and Decido fine-tuned on your own decisions. Request access →

Decido API

Free tier · Decido-1-Fast · last updated 7 November 2026

Send a document and typed questions, get a probability for every answer. The request and response use the same format as decido serve and the Jev 1.13 API, so the same code runs against this free hosted API, against your own server, or locally with pip install decido-ai.

The hosted API serves one model, Decido-1-Fast. The other five Decido models are open weights: run any of them on your own machine with pip install decido-ai, or email founders@getdecido.ai for hosted access to the larger models.

Get a free API key

New to Decido? The 5-minute quickstart covers the Python client, your own server, the hosted API and agents (MCP, LangChain, OpenAI tools).

The model

modelDecido-1-Fast (decido-1-fast): 1.7B parameters, lightning fast and light. Open weights ↗
accuracy73.0 mean on the six benchmarks Jev 1.13 is evaluated on (Jev 1.13: 83.9). JevBench 72.3 · Kev 72.0 · OpenJev 62.7 · Nimble 58.9 · VitaminC 84.5 · MASSIVE 87.7
questionsyes/no (noul), pick one option (choice) and ordered scales (score); several per request
answersa calibrated probability for every option; the same request gives the same answer every time
best atintent and fact checks (MASSIVE 87.7, VitaminC 84.5); weaker on score questions and multi-step reasoning
need more?Decido-1 (85.4) and Decido-1-Max (89.2) are open weights you can run yourself; email founders@getdecido.ai to have them hosted for you

Endpoint

POST https://getdecido.ai/v1/systemone
Authorization: Bearer dk_…
Content-Type: application/json

GET https://getdecido.ai/v1/models (no key needed) returns models, the models this API serves (today Decido-1-Fast), and open_weights, every Decido model with its download link, to run on your own machine with pip install decido-ai.

Authentication

Request

fieldtypenotes
statestring or objectthe document: text, or a JSON record
questionsobject: id → question1–5 questions; you choose the ids
modelstring, optionaldecido-1-fast (default). Jev model names such as jev-latest are served by Decido-1-Fast.
question typeinstructionscriteria
noul (yes/no)the question (a string)none (the free API ignores yes/no descriptions)
choice (pick one)the question (a string)object: option → description string, or null for none (2–10 options)
score (ordered scale)the question (a string)list of 2–10 levels (strings), lowest first

The free API takes plain-text instructions; structured (object) instructions return 422. They work with decido serve.

curl -s https://getdecido.ai/v1/systemone \
  -H "Authorization: Bearer $DECIDO_API_KEY" -H "Content-Type: application/json" -d @- <<'EOF'
{
  "state": "Customer: I was charged twice for order 4821. Please refund one of the charges.",
  "questions": {
    "refund": {"type": "noul", "instructions": "Is the customer asking for a refund?"},
    "team": {"type": "choice", "instructions": "Which team should handle it?",
             "criteria": {"billing": "Charges, refunds, invoices", "shipping": "Deliveries", "tech": "Bugs and outages"}},
    "urgency": {"type": "score", "instructions": "How urgent is it?", "criteria": ["low", "normal", "urgent"]}
  }
}
EOF

Response

{
  "model": "decido-1-fast",
  "answers": {
    "refund":  {"type": "noul", "noul": 0.97},
    "team":    {"type": "choice", "choice": "billing", "probabilities": {"billing": 0.92, "shipping": 0.03, "tech": 0.05}, "confidence": 0.9},
    "urgency": {"type": "score", "score": 0.94, "legend": {"0": "low", "1": "normal", "2": "urgent"},
                "probabilities": {"0": 0.3, "1": 0.47, "2": 0.24}, "confidence": 0.2}
  },
  "usage": {"input_tokens": 212, "output_tokens": 0}
}

noul is P(yes). choice is the most likely option, with a probability for every option. score is the expected level (0 = first level), with a probability per level. Example values; yours will differ.

Limits (free tier)

per account25 requests per UTC day · 5 per minute · 1 at a time · 100 compute-seconds per day (shared by all your keys; a new key does not reset them)
per requestup to 5 questions · up to 10 options per question · up to 80 characters per option (name + description) · document up to 6,000 characters · about 2,500 characters of English in total (hard limit: 1,000 tokens for the document plus all questions; 3,000 bytes of text) · body up to 32 KB · no images
bodiesuncompressed, Content-Encoding: gzip (a single gzip stream) or zstd; at most 32 KB as sent. zstd bodies are passed to the model server unchanged and checked there: at most 64 KB decompressed, the same 1,000-token limit and the server's own validation (question types, 2–255 options, 2–10 levels); the edge limits above (questions, options, characters) apply to plain and gzip bodies
shared capacitythe free API shares a daily capacity with the online demo; when it is used up you get 503 until 00:00 UTC

Successful responses, and 429 responses for the daily quota or the per-minute rate, carry X-RateLimit-Limit, X-RateLimit-Remaining (requests left today) and X-RateLimit-Reset (Unix time of the next reset). 429 and 503 responses carry Retry-After (seconds).

Errors

Errors are JSON: {"detail": "…"}.

statusmeaning
400body is not valid JSON, or a malformed gzip / zstd body
401missing, invalid, replaced or retired API key
413too big: more than 5 questions or 10 options, an option over 80 characters, over the text or token limit (“API limit 1,000 tokens”), or a body over 32 KB (gzip: also after decompression; zstd: over 64 KB decompressed)
415not application/json, an unsupported or doubled Content-Encoding, or multi-member gzip
422validation error: missing field, unknown question type, fewer than 2 options, non-string instructions, unknown model, images (model, instruction-type and edge size checks apply to plain/gzip bodies; zstd bodies get the server's checks)
429daily quota used up, more than 5 requests per minute, a second request while one is running, or too many invalid API keys (or rejected requests) from your network in a minute
502the model is unavailable (retry later)
503busy, today's free capacity is used up, or the free API is paused
504the model did not answer in time

Jev / TypeSafe SDK

Point the client at Decido and use your Decido key; the SDK's zstd-compressed bodies (it compresses requests of about 1 KB and up) are accepted. Model names such as jev-latest run on Decido-1-Fast.

export TYPESAFE_API_KEY="$DECIDO_API_KEY"

from typesafe_sdk import TypeSafeClient, Noul
with TypeSafeClient(base_url="https://getdecido.ai") as client:
    r = client.system_one(state="Customer: I was charged twice for order 4821.",
                          questions={"refund": Noul(instructions="Is the customer asking for a refund?")})
    print(r.answers["refund"].noul)

Privacy

Documents, questions and answers are processed in memory and not stored or used for training. Request metadata (time, status, size, key prefix, country) is kept for up to 30 days. For your account we keep the sign-in provider, its user id and your email address; for each key its SHA-256 hash, a short display prefix, your label, and when it was created and last used. Details: privacy, terms.

Production use

The free tier has no SLA and small limits. For production volume, bigger models or sensitive data, run Decido yourself. It takes the same requests, has no limits, and nothing leaves your machine:

pip install decido-ai
decido serve decido-ai/decido-1-26b-a4b --port 8080      # or decido-1-fast-1.7b, decido-1-max-26b-a4b, …
curl -s localhost:8080/v1/systemone -H 'content-type: application/json' -d @request.json