Sume job statuses: queued, processing, completed, failed, canceled
The five Sume job statuses and what a client should do at each. Resources use a different set: processing, ready, failed, canceled and archived.

A Sume job is queued, processing, completed, failed or canceled. Resources use a different set: processing, ready, failed, canceled and archived (read 2026-10-06 in the errors docs).
What should a poller do?
Treat completed, failed and canceled as terminal and stop polling; keep going on queued and processing.
TERMINAL = {"completed", "failed", "canceled"}
def is_done(status: str) -> bool:
return status in TERMINAL
print(is_done("processing"), is_done("completed"))What should I do in practice?
Honor retry-after while polling.
queuedis normal when concurrency is full.- Read the job error on
failed. - Do not mix job and resource vocabularies.
Sources
Related posts
More in Developers
- Sume job webhook events: job.completed, job.failed, job.canceled
Sume sends only terminal job events: job.completed, job.failed and job.canceled. No progress events. Failed and canceled payloads carry status ERROR.
- Sume job webhook: request_id equals job_id, store one
In a Sume job webhook payload, request_id and job_id are the same value. Which to use as your dedupe key, and what else the payload carries.
- Sume jobs list: no next_cursor on the last page ends the loop
GET /v1/jobs returns up to 100 jobs newest first. Pass data.next_cursor back as starting_after, and stop when it is absent. Do not build a cursor yourself.
- Sume GET /v1/jobs: a misspelled filter returns 400, not all jobs
Sume rejects an unrecognized query parameter on GET /v1/jobs with 400 unknown_parameter, so a typo cannot return an unfiltered page. Valid filters listed.
Written by Sume