OpenRouter key credit limit and 402 vs a Sume per-run spend cap
OpenRouter caps a key's credits and reports limit_remaining. A Sume Format run carries its own per-run generation cap. Where each guardrail sits and what fails.

OpenRouter puts the limit on the key: it can hold a credit limit that resets on a schedule, and spending past it returns a 402. A Sume Format run puts a limit on each run with generation_spend_cap_usd, so one runaway call cannot use the whole budget. They guard different things, and an unattended job benefits from both.
What does OpenRouter's page say?
The limits reference describes per-key limits and how to read them.
| Topic | What the page says |
|---|---|
| Per-key limit | A key can carry a credit limit |
| Reset | A limit_reset setting controls when the limit resets |
| Reading it | limit_remaining is reported, and GET /api/v1/key returns the key's data |
| Over the limit | A 402 with openrouter_key_limit |
What is Sume's equivalent?
Sume sets the ceiling per run. generation_spend_cap_usd can go up to $500. If you leave it out, the Format's own cap applies, which defaults to $400. Sending null means $500, and 0 or any value above 500 is a 400. A run that reaches its cap ends failed, and the generation it finished is billed.
The receipt reports usage.billable_amount_usd_micros and usage.generation_spend_cap_usd_micros, so you can see how close a run came.
Does Sume have a per-key limit?
I did not find a per-key credit limit with a reset schedule in the Sume docs, so do not assume one. What exists is the wallet: a create call returns 402 insufficient_credits when the balance cannot cover it, and nothing runs. For a Scheduled agent, the default cap is $1.00 per run, and a per-run override can only lower it.
- Use the OpenRouter key limit when many callers share one key and you want a rolling budget.
- Use the Sume per-run cap when one call must never exceed a number.
- Set both, and alert on the 402, since either one means work stopped.
Where to read next
The spend caps section has the exact semantics, and the credits and spend errors list what each code means.
Sources
Related posts
More in Comparisons
- OpenRouter models fallback array and 3-entry limit vs Sume
OpenRouter's models array tries the next model on downtime, rate limits or moderation; fallbacks allows 3. Sume's allow_fallbacks has no effect.
- OpenRouter provider.sort and max_price vs Sume's inert sort
OpenRouter's provider.sort picks price, throughput or latency and turns off load balancing. On Sume's image route, sort is accepted and changes nothing.
- Perso AI dubbing: 10 speakers, 2-speaker lip sync, vs Sume
Perso says it detects up to 10 speakers and lip-syncs two. Sume's avatar video uses one avatar per final video. What to use for a multi-speaker dub.
- Pexels free stock footage vs generated B-roll: what to use when
Compare Pexels licensed footage with generated B-roll: licence limits, control, cost and where each wins, with Pexels terms to re-check.
Written by Sume