OpenRouter weight_exceeds_budget: never retry; Sume queue_full
OpenRouter's weight_exceeds_budget 402 will not clear on retry; in_flight_budget_exhausted will. Sume splits the same way: queue_full retries, 402 does not.

Do not retry weight_exceeds_budget. OpenRouter's limits page says this single request's estimated cost is larger than your whole budget, so retrying will not help: lower max_tokens or the prompt size, or add credits. Its sibling reason, in_flight_budget_exhausted, is transient and carries Retry-After. Sume draws the same line between 429 queue_full, which you retry, and 402 insufficient_credits, which you fix first.
Which OpenRouter 402 reasons are retryable?
Both come back as 402 with limit_source metadata, so the status code alone cannot decide. Facts below are from the page read 2026-10-01.
| reason | limit_source | Retry? |
|---|---|---|
in_flight_budget_exhausted | openrouter_in_flight_budget | Yes, after Retry-After |
weight_exceeds_budget | openrouter_credits | No; shrink the request or add credits |
Which Sume errors are retry-later?
429 queue_full means new paid generation submissions are refused because the workspace queue is full. Per Generation admission: wait for jobs to finish or cancel queued jobs, then retry with the same idempotency key. 429 rate_limited is request volume: back off using retry-after when present.
Which Sume errors are retry-never as-is?
402 insufficient_credits means the estimated cost cannot be reserved. The listed client behavior is to upgrade the plan, wait for included Gen$, or submit a cheaper request. 409 idempotency_conflict means a key was reused for a different payload: reuse keys only for exact retries.
How should a client sort them?
Keep one table keyed on the structured code, not the status. Retry with backoff on queue_full and rate_limited, always reusing the Idempotency-Key; the docs say not to retry unsafe submits without one. Surface 402 to a person or a cheaper-request path. For a 429 that carries no wait hint, see enforced spend limit 429 with no retry-after.
Sources
Related posts
More in Developers
- Pika API 'agent-native' setup vs Sume's OpenRouter-style wire
Pika hands agents copy-paste setup text. Sume documents /v1/videos field-for-field with OpenRouter, bare model ids and a models endpoint to read first.
- Pipedream 750-second timeout: poll loop or Sume webhook?
Pipedream paid plans allow 750 seconds per run. Submit the Sume video job, then finish in a second workflow triggered by the webhook not a long poll loop.
- Polly async needs an S3 bucket; Sume gives a status URL and webhook
Polly's StartSpeechSynthesisTask writes audio to your S3 bucket and can notify an SNS topic. Sume TTS returns a status URL, or a signed webhook on completion.
- Polly speech marks need a separate request; Sume returns timings
Polly returns speech marks instead of audio when you ask for them: sentence, word and viseme metadata. Sume TTS returns words[] timings on the same job result.
Written by Sume