FLUX 3 API polling: the Reasoning status and Sume job statuses
FLUX 3 Image polls through Pending, Reasoning, Generating and Ready, and stops on four terminal states. Map them to Sume's queued to completed statuses.

FLUX 3 Image adds a Reasoning status to its poll loop: keep polling while status is Pending, Reasoning or Generating, read result.sample at Ready, and stop on Error, Request Moderated, Content Moderated or Task not found. Sume's job status is a fixed list, queued, processing, completed, failed and canceled, so the two sets need a small mapping.
BFL facts are from its FLUX 3 Image reference; Sume facts from errors and credits and generation admission, read 2026-10-01.
What should I do with Reasoning?
Treat it as in progress. The reference lists it with Pending and Generating as the states to keep polling through, and does not say how long it lasts. If your current loop only knows Pending and Generating, an unknown status could be read as a failure; make your loop continue on any status that is not a terminal one.
The reference adds that polling errors may use HTTP 503 with a regular JSON body, so inspect status before treating a 503 as fatal.
How do the two status sets map?
| FLUX 3 Image status | Meaning | Closest Sume status |
|---|---|---|
Pending | Keep polling | queued |
Reasoning | Keep polling | processing |
Generating | Keep polling | processing |
Ready | Download result.sample | completed |
Error | Stop | failed |
Request Moderated / Content Moderated | Stop | failed (read the error) |
Task not found | Stop | 404 not_found |
What does Sume say about queued?
The docs are direct: do not treat queued as failure. Store the job_id, poll status with backoff, and fetch the result only when the job reports result_ready: true or status: completed. Job status values are queued, processing, completed, failed and canceled. The mapping above is a reading aid, not a documented equivalence; Sume's moderation outcomes are covered in moderation reasons on Sume.
When does Sume return a job at all?
Only when the work outlasts the wait or you ask for it. POST /v1/images blocks for up to 30 seconds and returns 200; otherwise, or with mode: "async", it returns 202 with the job envelope. Check the status code, not the body shape. See 202 Accepted vs 200 OK and the Image API.
Sources
Related posts
More in Developers
- 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.
- 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.
Written by Sume