OpenRouter 402 with credits left vs Sume 402 on reserve

OpenRouter can return 402 with a positive balance when the in-flight budget is full. Sume's 402 means the estimate could not be reserved. Telling them apart.

4 min readSume
All posts

Yes, OpenRouter can return 402 while your balance is positive. Its docs say each paid request's token cost is estimated up front and held against an in-flight spending budget, and a request that does not fit is rejected with 402 before it reaches a provider. Read error.metadata.limit_source to see which limit you hit. Sume's 402 is a different check: it fires when the estimated cost cannot be reserved from the workspace balance.

How does OpenRouter's in-flight budget work?

Per the OpenRouter limits page read 2026-10-01, the estimate is the input tokens plus the completion tokens allowed by max_tokens, capped per request. The total held at once is a fraction of your credit balance, up to a fixed ceiling. The estimate is replaced by actual cost for a short settlement window, then released.

OpenRouter 402 sources, from its limits page read 2026-10-01.
limit_sourceMeaning in the docs
openrouter_in_flight_budgetRunning and recent requests fill the budget; wait for Retry-After
openrouter_key_limitThe API key's credit limit is exhausted
openrouter_creditsBalance cannot cover the request, or one request is too expensive for the budget

What does Sume's 402 mean?

402 insufficient_credits means Sume cannot reserve the estimated generation cost from the workspace balance. Per Generation admission, the submit fails before provider work starts. The fix there is to upgrade the plan, wait for included Gen$, or submit a cheaper request.

How do I tell the two apart in a client?

Branch on structured fields, not on the word "credits". For OpenRouter use limit_source and honor Retry-After for the in-flight case; its docs say not to branch on the hint text. For Sume, read the error code insufficient_credits. Before submitting, GET /v1/balance returns the USD-denominated available balance, and GET /v1/usage lists reservations, captures and refunds.

Why does a reserve exist at all?

Provider-backed generation can reserve estimated USD-denominated usage, capture actual cost on success, and refund on failure or cancellation before capture. Both systems hold money against an estimate; they differ in what the hold is measured against. For the sibling case on a different vendor, see HeyGen's insufficient-credit 402 vs Sume's code.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume