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.
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
| model | Decido-1-Fast (decido-1-fast): 1.7B parameters, lightning fast and light.
Open weights ↗ |
|---|---|
| accuracy | 73.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 |
| questions | yes/no (noul), pick one option (choice) and ordered scales (score); several per request |
| answers | a calibrated probability for every option; the same request gives the same answer every time |
| best at | intent 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
- Send your key as
Authorization: Bearer dk_…. That is the header the Jev / TypeSafe SDKs send. - Get a key on the playground: sign in with Google (we ask only for your email address from it), one account per person, one active key per account. The key is shown once; we store only its SHA-256 hash, so a lost key cannot be recovered, so create a new one (the old one stops working; up to 5 new keys a day).
- The free API is for evaluation: no SLA, small daily limits. For real workloads run Decido yourself
(
pip install decido-ai && decido serve: same request format, no limits) or contact founders@getdecido.ai. - Keys created before sign-in existed (without an account) stop working on 23 November 2026.
- Revoked or unused keys are deleted 90 days after last use. Keys used for abuse may be revoked.
- Call the API from your server only. There are no CORS headers on purpose: a key in browser code is public.
Request
| field | type | notes |
|---|---|---|
state | string or object | the document: text, or a JSON record |
questions | object: id → question | 1–5 questions; you choose the ids |
model | string, optional | decido-1-fast (default). Jev model names such as jev-latest are served by Decido-1-Fast. |
question type | instructions | criteria |
|---|---|---|
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 account | 25 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 request | up 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 |
| bodies | uncompressed, 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 capacity | the 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": "…"}.
| status | meaning |
|---|---|
| 400 | body is not valid JSON, or a malformed gzip / zstd body |
| 401 | missing, invalid, replaced or retired API key |
| 413 | too 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) |
| 415 | not application/json, an unsupported or doubled Content-Encoding, or multi-member gzip |
| 422 | validation 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) |
| 429 | daily 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 |
| 502 | the model is unavailable (retry later) |
| 503 | busy, today's free capacity is used up, or the free API is paused |
| 504 | the 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