x-fal-no-retry header: safe retries with a Sume Idempotency-Key
fal retries queued requests; X-Fal-No-Retry turns that off. On Sume you keep retries and make them safe with an Idempotency-Key on every paid submit.

fal retries failed queue requests automatically and lets you disable that per request with the X-Fal-No-Retry header. Sume's approach for a paid submit is different: retry freely, but send an Idempotency-Key so the retry returns the original job and cannot bill twice.
fal details are from its Reliability page; Sume details from Generation admission, Errors and credits and Jobs and results, read 2026-10-01.
What does fal retry on its own?
The fal page says that with the queue, it automatically retries requests that fail with 503, 504, connection errors, or 429 from exceeding the concurrent request limit. Requests are retried up to 10 times with backoff. It also says failed requests returning 5xx are not billed, that retries apply only to queue-based requests, and that the Queue page covers disabling retries with X-Fal-No-Retry.
What does Sume say about retrying a submit?
The errors page says to back off on 429, use retry-after when present, and not to retry unsafe submit requests without an Idempotency-Key. The admission page adds: use Idempotency-Key for every paid submit that may be retried. Retrying the submit is fine when you reuse the same key, because the retry returns the original job instead of billing a second one.
| Concern | fal | Sume |
|---|---|---|
| Who retries | fal, automatically, on queue requests | Your client |
| Turn retries off | X-Fal-No-Retry header | Not needed; the key makes a retry an exact replay |
| Protect against a duplicate | Not covered on the page read | Idempotency-Key on every retried paid submit |
| Wrong reuse | Not covered on the page read | 409 idempotency_conflict; reuse keys only for exact retries |
What happens if I reuse a key wrongly?
Reusing a key for a different operation or payload returns 409 idempotency_conflict. The documented action is to reuse keys only for exact retries. Generate one key per intended generation, store it with your own record of the request, and send the identical body each time.
Should I retry after my own timeout?
Do not submit a new paid job just because your local worker timed out. If the sync wait ran out, continue with GET status_url. If you do not know whether the submit arrived, retrying with the same key either returns the original job or creates the one you intended. See idempotency keys for AI video APIs.
Sources
Related posts
More in Developers
- FFmpeg 8.1 AV1 and ProRes encoding: Sume has no codec field
FFmpeg 8.1 adds D3D12 H.264/AV1 and Vulkan ProRes encoding. Sume compiles ffmpeg server-side and rejects codec and crf fields, so you cannot pick an encoder.
- FFmpeg 8.1 drawvg and vpp_amf: not on Sume's allowlist
FFmpeg 8.1 lists new drawvg and vpp_amf filters. Sume video-filter only runs allowlisted filters and refuses unknown names with unknown_filter.
- Firefly Custom Models API vs Sume: references, no training
Firefly Custom Models trains subject or style models you call by asset ID. Sume offers no image model training; use up to 16 input references.
- Firefly Upscale API vs Sume's image_upscale_create tool
Firefly's Upscale API enhances resolution at 2x, 4x or 6x. Sume exposes upscaling as the image_upscale_create MCP tool: a paid job you poll.
Written by Sume