Image job statuses for a progress UI: queued is not failed
Five Sume job statuses, two terminal flags, and a mapping to user-facing labels. Plus why a queued image should read as waiting, not as an error.

A progress UI for Sume image jobs needs five labels, one for each job status: queued, processing, completed, failed, and canceled. The one people get wrong is queued, a normal accepted state that means the job is waiting for a workspace concurrency slot, not that something broke.
Sume's docs say to store the job id, poll status with backoff, and fetch the result only when the job reports result_ready: true or status: completed.
What do the statuses mean?
Three of the five are terminal. After a terminal status, stop polling.
| Status | Meaning | Terminal | UI label |
|---|---|---|---|
queued | Accepted, waiting to run | No | Waiting in line |
processing | Running or being finalized | No | Generating |
completed | Result ready | Yes | Done |
failed | Terminal failure with a public error | Yes | Failed, show next action |
canceled | Cancellation requested, terminal | Yes | Canceled |
How often should I poll?
Use exponential backoff and stop on a terminal status. The SDK docs say the status payload's next_poll_after_seconds wins over your own interval when it asks for a longer gap, so read it if present. Reading the events timeline (job.created, job.queued, job.started, job.completed) helps explain a long wait.
What should the failed state show?
Failed jobs carry public error metadata: category, stage, retryability, retry-after seconds, public reason, and next action. Show the next action, not a raw error. Validation means fix the input; quota means add funds or lower cost; queue means retry later with the same idempotency key. Do not resubmit a paid request just because the UI lost the connection; poll the job id instead.
Images that run past a minute are covered in image job running past 50 seconds. The status list is in the Jobs and results docs.
Sources
Related posts
More in Developers
- Build an image model capability matrix from GET /v1/images/models
A short Python script that reads Sume's image catalog and prints each model's reference-image limit and aspect ratios, so you stop guessing per model.
- Image request timed out: do you pay for it on Sume?
Sume bills image jobs by outcome. A client timeout does not cancel the job, so a finished image can still bill. Use async mode and poll; do not resubmit.
- Sume images API n=5 returns 400 though the docs say up to 10
The Image API docs say n up to 10, but the catalog range is 1 to 4 for most models, 1 for Grok and 1 or 4 for Soul. The error text and a loop that batches.
- Image API wait_timeout_seconds: submit now, poll later
Set wait_timeout_seconds to 0 on POST /v1/images to stop blocking and treat every call as a job. How the 200 and 202 answers differ and a polling script.
Written by Sume