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.

3 min readSume
All posts

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.

Job statuses from Sume's Jobs and results docs, read 2026-10-02
StatusMeaningTerminalUI label
queuedAccepted, waiting to runNoWaiting in line
processingRunning or being finalizedNoGenerating
completedResult readyYesDone
failedTerminal failure with a public errorYesFailed, show next action
canceledCancellation requested, terminalYesCanceled

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

All Developers posts

Written by Sume