FLUX 3 Image 4K can take minutes: poll, and the Sume 30 s wait
FLUX 3 Image at resolution 4k can take several minutes, so poll. Sume blocks up to 30 seconds, then returns 202 with a job envelope to poll.

BFL's FLUX 3 Image reference says generating at resolution: "4k" can take several minutes, so you poll rather than wait on one request. Sume's image endpoint holds the connection for at most 30 seconds; if a 4K request is still running, you get 202 and a job envelope to poll instead of an error.
BFL facts are from its FLUX 3 Image reference; Sume facts from the Image API, read 2026-10-01.
What does BFL say about 4K timing?
resolution takes 768sq, 1k (the default), 2k or 4k. The description adds that output_mp in the submit response gives the exact size in megapixels, and that 4k can take several minutes. The BFL release notes describe 4K as about 16 megapixels. No number of seconds is given, so size your polling loop and timeouts for minutes, not seconds.
What happens on Sume when a request is slow?
The docs say POST /v1/images blocks for up to 30 seconds and returns 200 with the image response. If the generation is still running when that budget ends, or you send mode: "async" or mode: "webhook" with a webhook_url, Sume returns 202 with the standard job envelope. They name slow configurations (4K, high quality, large n) as the ones most likely to degrade to 202. A 202 is the job envelope, not a failure.
| Item | FLUX 3 Image on BFL | Sume Image API |
|---|---|---|
| 4K duration | Can take several minutes | Slow configs may exceed the wait |
| How you get the result | Poll polling_url | 200 inline, or poll the job |
| Blocking budget | None; always poll | Up to 30 s (wait_timeout_seconds 0 to 30) |
| Slow outcome | Keep polling | 202 with a job envelope |
How do I write the client?
Branch on the status code, not the body shape. On 200 read the images; on 202 store the job id and poll the status_url with backoff, then fetch the result_url once the job is completed.
const res = await fetch("https://api.sume.com/v1/images", {
method: "POST",
headers: {
Authorization: "Bearer " + process.env.SUME_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "bytedance-seed/seedream-4.5",
prompt: "a landscape photo",
resolution: "4K", // only if the model's catalog lists 4K
}),
});
const body = await res.json();
if (res.status === 200) {
console.log(body.data[0].url);
} else if (res.status === 202) {
console.log("poll", body.data.status_url);
} else {
throw new Error("HTTP " + res.status);
}Can I skip the wait entirely?
Yes. Send mode: "async" and Sume returns the job envelope immediately; the images are read from the standard job result endpoint. A webhook is the other route. See 202 Accepted vs 200 OK for how to treat both, and 4K image: generate or upscale for the resolution choice.
Sources
Related posts
More in Developers
- FLUX 3 reference image aspect ratio: auto follows the first image
FLUX 3 Image defaults aspect_ratio to auto: the first reference sets the shape, or 1:1 with none. On Sume, omitting the field is not the same as auto.
- FLUX 3 Image grounding is on by default: web search and Sume
FLUX 3 Image grounding defaults to true and can search the web and images before generating. Sume lists no such field; pass references to set the target.
- FLUX 3 Image edit API: no mode field, just add references
FLUX 3 Image has one endpoint and no mode field: add images to edit, restyle or combine. On Sume you send input_references to an edit-capable model.
- 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.
Written by Sume