FAQ

Answers to common questions about Dcision — billing, quotas and credits, keys, models and latency, data retention, deployments and integration.

General

Is Dcision an LLM?

No. Dcision is a decision layer: you define structured questions and policies, and every call returns typed answers, confidence and an action. The answers come from Jev, a decision model (TypeSafe's System One) trained to return calibrated probability distributions instead of generated text. Use Dcision to decide whether and where to send work; let your LLM, agent or team do the work.

Which model answers my decisions?

Jev. On Dcision's engine key the call goes to TypeSafe with the model chosen in Settings → Engine — jev-1.13.0 (pinned, the default), jev-latest or jev-preview. With your own key, the provider and model you picked. metrics.model always reports the exact version that answered. See Engines and BYOK.

Which languages and SDKs are supported?

Any language that can send an HTTPS request with JSON — the API is a single POST; see the cURL, JavaScript and Python examples in Run a decision. The official SDKs for TypeScript and Python add retries that never run a decision twice, function destinations and webhook verification; they aren't on npm and PyPI yet, so build them from source. The CLI covers the terminal and CI.

Can a decision call my systems or answer my users?

Yes, with destinations: for each option, level, threshold or final action, return a fixed reply or an LLM answer, hand over to your agent, trigger a workflow, send a signed webhook, call any API with your secrets, or tell your code which function to run. Deliveries are retried for about 7 hours, and nothing is sent from the Playground until you switch on Run destinations for real.

Can I call the API from a browser or a mobile app?

No. API keys are secrets: call Dcision from your backend, a worker or your agent runtime, and send the result to the client if it needs it.

How fast is a decision?

Every response reports metrics.latency_ms, and Usage shows the average and p95 latency of your decisions. All the questions of a decision are answered in one engine call, in parallel, so extra questions add little latency. The engine call has a deadline of 5 seconds by default, retries included — set it per decision with timeoutMs; a call that exceeds it fails with 504 ENGINE_TIMEOUT.

Can a decision answer something when the engine is down?

Yes, if you opt in: with onEngineError: "fallback", an engine failure answers 200 with the decision's fallback action and action_reason.type = "engine_error". Those answers aren't billed. See Decision settings.

Billing and quotas

What counts as a billable decision?

A successful (200) call to POST /v1/decisions/{slug}, once per call however many questions it has. Playground runs, errors, idempotent replays, engine-error fallbacks and reads (GET /v1/me, GET /v1/executions) are free. Calls with test keys and with your own provider key count like any other. See What is billed.

How do I check my usage from code?

GET /v1/me returns the billable decisions used in the current period, the included volume and the period's dates, with any API key of the workspace. See Get account and usage.

What happens past the included decisions — on Genesis too?

Every plan keeps running on prepaid credits, at the plan's price per 1M decisions: US$12 on Genesis and Developer, US$9 on Growth (R$60 and R$45 in Brazil). Genesis doesn't need a subscription for that. Without credits, API calls return 402 CREDITS_EXHAUSTED until you add credits, the period resets or you upgrade. The Playground keeps working. See Credits.

How do I get credits?

The Owner adds them on the Billing page: adding a card gives US$20 (R$100) in promotional credits valid for 90 days — once per workspace and once per card — and credits can be bought by card from US$10 to US$1,000 (R$50 to R$5,000). Paid credits never expire. Vouchers add promotional credits too.

Can credits top up by themselves — and can I cap spending?

Yes, both are optional. Automatic recharge charges the saved card a chosen amount whenever the available credit falls below a trigger, after the Owner authorizes it; it can be turned off anytime. A spend cap per billing cycle stops calls past the included volume with 402 SPEND_CAP_REACHED once the cycle's credit spending reaches it.

Does bringing my own provider key make decisions free?

No. With your own key, the provider bills the engine call, and the successful API call still counts toward your Dcision plan.

What does metrics.estimated_cost_usd mean?

An estimate of the engine cost of the call — metrics.input_tokens times the model's price (Jev: US$0.042 per 1M input tokens; output tokens are free) — to compare decisions. It isn't what Dcision charges you.

Decisions

What is the other option I didn't add?

Every choice question gets a reserved other option so the engine can say "none of these" instead of forcing a wrong answer. When it's chosen, the decision applies its fallback action. See Questions.

Why did my call return escalate when no policy says so?

Look at action_reason: other_option means a choice answered other; low_confidence means an answer was below its minConfidence; engine_error means the engine failed on a decision with onEngineError: "fallback". All three apply the decision's fallback action, escalate by default. See Policies and actions.

Why is the confidence of my probability question lower than the probability?

Because confidence measures certainty in either direction, on the same scale as choice and score questions: for a probability p it is |2p − 1|. A probability of 0.9 — or 0.1 — has confidence 0.8; 0.5 has confidence 0. Set minConfidence with that in mind: 0.6 flags every p between 0.2 and 0.8. See Confidence and probabilities.

What are scores and composites in the response?

scores holds the weighted level of each score question — the probability-weighted average of its levels, counted from 1, so 2.4 sits between the second and third level. composites holds the decision's weighted combinations of answers, such as a lead score. Both can drive policies. See Questions and Composites.

How many questions should one decision ask?

As many as the flow needs, up to 64: they are answered in one call, and the call is billed once. Ask the speculative ones too — the answers you don't need are simply ignored. Keep each question atomic, and keep the state within the token budget. See Speculative fan-out and Writing good questions.

Does block reject my request?

No. Actions are labels for your code. The response is 200 OK with "action": "block", and your application decides what blocking means.

I edited my decision but the API still answers the old way. Why?

The API runs the active version. Edits change the draft; deploy them to create a new version. See Versions and deploy.

Can I change the slug?

Until the first deploy. After that the slug is locked, because clients call it.

How do I roll back?

Versions are immutable and listed in Version history. Bring the draft back to the earlier schema and deploy it — this creates a new version with the old logic.

Why is my state rejected with 422 INVALID_STATE?

The message names the problem: a missing required field, a wrong type ("500" isn't a number), a text decision that received an object, a list decision that didn't receive an array, or a state larger than the limits — by itself, or together with the questions for the engine's token budget. Fields the schema doesn't declare are fine.

Live or test key — which one should I use?

They run the same deployed versions and are billed the same; the only difference is that deliveries of destinations carry livemode: false for test keys. Use test keys for staging, CI and local development so you can revoke them without touching production.

Team and account

Can my team share a workspace?

Yes. Invite people by e-mail in Settings → Members as Admins, Members or Viewers — the invitation is valid for 7 days and is accepted when they sign in. Each person can belong to several workspaces and own up to 10. See Team, roles and account.

Can I sign in with a password?

Yes, if you set one in Account → Password — Google and e-mail codes keep working. Changing it signs out your other sessions, and Sign out everywhere ends them all.

Data

Does Dcision store the states I send?

By default, executions keep the state (storeInput) and the answers (storeOutput) for your plan's log retention — 7 days on Genesis. Turn either off per decision. Stored states are only shown in the app: GET /v1/executions never returns them. See Security and data.

Who processes my data?

Dcision validates the state and sends it, with the decision's context and questions, to the engine provider: TypeSafe, under Dcision's account, by default, or the provider of your own key. See Where your state goes.

On this page