FLUX 3 Image result URL expires after 1 hour: what to store
FLUX 3 Image's result.sample is a signed URL that expires after 1 hour. Download it at once; Sume returns Sume-hosted signed URLs in data[].url instead.

When a FLUX 3 Image task reaches Ready, you download the picture from result.sample, and BFL's reference says this signed URL expires after 1 hour. Copy the file to your own storage as soon as the task is ready. Sume's image endpoint returns a Sume-hosted, signed URL in data[].url, but the docs I read give no lifetime for it, so the same habit applies.
BFL facts are from its FLUX 3 Image reference; Sume facts from the Image API, read 2026-10-01.
What does BFL say about the URL?
Poll the regional polling_url with the x-key header while status is Pending, Reasoning or Generating. At Ready the image is in result.sample. The same description tells you to stop on Error, Request Moderated, Content Moderated or Task not found. The description does not say when Task not found occurs, so do not rely on a task id outliving its URL.
What does Sume return instead?
The Image API's Sume specifics table says the result payload is data[].url (Sume-hosted, signed) rather than inline base64, and that Sume already mirrors generated media. Nothing in that table or the errors page states an expiry window, so do not build a schedule around one.
| Item | BFL FLUX 3 Image | Sume Image API |
|---|---|---|
| Where the file is | result.sample | data[].url |
| Host | Signed URL from BFL | Sume-hosted, signed |
| Stated lifetime | 1 hour | Not stated in the docs read |
| Payload | URL after polling | URL, not inline base64 |
What should I store?
Store the bytes, or a permanent copy in your own bucket, and the Sume job or request id for support. Do not store the signed URL as a long-term address. The errors docs say a request id is what to include when reporting an issue, and that you should leave out API keys, signed URLs and raw media URLs.
An earlier FLUX endpoint is covered in FLUX image URL expires in 10 minutes, and the same download-first habit for another vendor is in Ideogram image URLs expire.
What if the hour has already passed?
On BFL, resubmit the generation; the expired signed URL is not renewable by anything in the page I read. On Sume, read the job back by its id before you resubmit, and do not assume an old signed URL still works. If you only have a logged URL, treat it as dead.
Sources
Related posts
More in Developers
- FLUX 3 Image API 422 unknown field vs Sume 400
FLUX 3 Image returns 422 for an unknown field, a blank prompt or a small reference. Sume returns 400 unsupported_parameter. Map the status codes in your client.
- FLUX API 429 vs Sume 429: rate_limited and queue_full
BFL returns one 429 for exceeded account rate limits. Sume splits 429 into rate_limited (back off) and queue_full (wait for a job to finish or cancel one).
- FLUX moderation reasons: handling the block vs a Sume job error
How to code the handler: BFL returns a Moderation Reasons array in details. A failed Sume job returns an error category and next action, not a reasons array.
- FLUX API polling_url and regional hosts vs Sume job polling
BFL says to poll the polling_url it returns on api.bfl.ai and its EU and US hosts. Sume has no region choice: you poll the status URL in the job envelope.
Written by Sume