Sep 26, 2026
How Optio credits work — the Jev API cost model
One-time packs, no expiry, and the actual formula: 1 credit per 1,000 input tokens, 1-credit minimum, output tokens free, failed requests refunded.
The formula
Every request costs ceil(input tokens / 1,000) credits, with a minimum of 1 credit per call. Output tokens are always free — a decision is a few dozen tokens, and you are not billed for them. If a request fails (upstream error, timeout, provider overload), nothing is charged: credits are reserved before the model runs and the reservation is returned on failure.
Before the call, the gateway reserves an estimate from your payload at roughly 4 characters per token. After the call it settles against the real input token count from the model's usage report, so the ledger entry reflects the truth, not the estimate. You can see all three numbers — estimate, actual, charge — in usage.input_tokens, usage.credits and the ledger.
Worked examples at real sizes
- Yes/no check on a one-line ticket, ~150–300 input tokens → 1 credit.
- Support triage: ticket plus three questions (yes/no urgency, routing choice, frustration score), ~400–500 tokens → 1 credit.
- Agent guardrail over a JSON tool call with a policy paragraph in the state, ~1,600 tokens → 2 credits.
- Résumé screening with a full CV in the state, ~8,000 tokens → 8 credits.
The batching rule hiding in those numbers: because the minimum is per request, not per question, up to 8 questions over the same state cost no more than 1 credit whenever the total stays under 1,000 tokens. Splitting the same work into per-question calls costs several times more.
The packs
- Starter — $10 → 100,000 credits. $0.0001 per minimum-credit decision.
- Pro — $100 → 1,000,000 credits. Same per-credit price; the wins are higher rate limits (600 vs 120 req/min, 10 vs 3 concurrent) and fewer top-ups.
- Team — $1,000 → 11,000,000 credits. A 10% bonus plus collaboration: invited teammates share the balance.
- Free — every new workspace starts with 5 credits, and the playground is free in the browser (it never touches credits).
Credits never expire and never move between workspaces. A quiet month costs $0 — there is no subscription to time your usage around.
Rate limits per plan
Concurrency and requests-per-minute follow the best plan in the workspace:
- Free: 20 req/min, 1 concurrent request.
- Starter: 120 req/min, 3 concurrent.
- Pro: 600 req/min, 10 concurrent.
- Team: 2,000 req/min, 30 concurrent.
- Enterprise: 6,000 req/min, 100 concurrent — by arrangement.
Exceeding either limit returns 429 with a Retry-After header plus X-RateLimit-Remaining and X-RateLimit-Reset — the retry-safe signal to back off.
Budgeting from traffic
Because billing is deterministic — token count only — your bill is predictable: daily decisions × average credits per decision. If half your decisions ride the 1-credit minimum and 50,000 run a day, that is about 50,000 credits, roughly $5/day at Starter prices. Loading the Team pack cuts the effective per-credit price by about a third (11M credits per $1,000 vs 1M per $100).
Two accounting habits that save money
First, batch your questions. If a request carries one yes/no plus a choice and a score over the same state (support triage as one request), it bills once under the 1-credit minimum. Sending the same three as three requests bills 3 credits. Up to eight questions ride together, so assemble the state once and ask everything you might branch on.
Second, trim the state, not the questions. Billing counts input tokens of the whole payload, so pasting a 20,000-character document into state to ask a one-line question in it dominates the bill — ceil(20,800/1,000) = 21 credits instead of 1. If only a paragraph matters, extract the paragraph yourself before sending; the model does the reading you tell it to, but the token count is your choice.
When two credits beats one
- A 2,400-token policy document fetched once and reused across decisions — if you ask three questions in one request over it, you pay 3 credits once instead of re-sending it in three single-question calls (9 credits for the same work).
- A résumé of ~8,000 tokens screened once for 8 must-haves: 8 credits in a single request with 8 questions, versus 8 calls at 8 credits each if the state has to ride in every request separately...
- Actually that comparison repeats: the state rides only in the requests that need it. The real lever is the 1-credit minimum: under 1,000 tokens, extra questions are free; over it, every Kilobyte of state is another 0.25 credits.
What shows up on the ledger
Every settled request writes a ledger row in the dashboard: reserved (estimate), charged (actual input tokens / 1000, min 1), request_id, and which API key spent it. Failed requests write a refund row with zero charge, so month-end reconciliation is just filtering by request_id. If a charge looks wrong, support can trace it from the request_id in your logs — quote it.
What happens mid-request if my workspace runs out of credits?
The request fails with 402 insufficient_credits before the model is called. Credits are reserved up front, so a workspace can never go negative — and 402 is the one error a retry loop cannot fix; top up the workspace.
Do credits expire if my product pauses?
No. They sit in the workspace until spent, and there is no subscription to cancel.
Can teammates spend the same credits?
On Team, invited members create their own keys inside the shared workspace and draw from the same balance. On smaller packs, each workspace has a single owner.
Try the Jev AI playground to send your first free decision after you finish this guide.