Credits & quotas
Charging policy
| Outcome | Charge |
|---|---|
succeeded | Full reservation (1 credit/job) |
failed / timed_out | 0 — reservation released |
cancelled | 0 — reservation released |
Ledger
Every balance movement is a CreditLedgerEntry: grant, reservation, consumption, release, refund, adjustment. Entries are write-once — corrections are new entries, never edits. Inspect yours at GET /api/v1/credits/ledger.
Quotas
Each plan defines data-driven limits enforced on the backend:
monthlyCredits— allotment granted each billing periodmaxConcurrentJobs— simultaneous queued+processing jobsrequestsPerMinute— job submissions per minutemaxJobDurationMs— per-job timeout ceilingallowedOperations— enabled challenge categories
Exceeding a quota returns 429 quota_exceeded or rate_limited — never a silent drop. Insufficient balance returns 402 insufficient_credits.