Sume API status values: jobs, runs, queues, and webhooks
Sume API status values in one place: jobs, /v1/videos, Format and Agent runs, bulk queues, webhook deliveries, usage rows, grants, and balance.

Sume API generation jobs move through queued, processing, completed, failed, and canceled, Format and Action runs add skipped, and POST /v1/videos spells the same lifecycle pending, in_progress, completed, failed, and cancelled. Bulk queues, webhook deliveries, usage rows, grants, and your balance each have their own values, listed below.
Every value comes from Sume's docs, such as Jobs and results, Runs and results, and Errors and rate limits, or from the live OpenAPI reference, read on 2026-09-27; each table caption names its pages. For how a job differs from a run, see Sume job vs run.
Which statuses do jobs and runs use?
Each row links the post that explains that object in depth.
| Object | Field | Values | Notes |
|---|---|---|---|
| Generation job | status | queued, processing, completed, failed, canceled | The last three are terminal. |
| Job status payload | status | IN_QUEUE, IN_PROGRESS, COMPLETED, FAILED, CANCELED | Maps one-to-one onto sume_status in the same payload. Do not mix the two. |
| Video generation job | status | pending, in_progress, completed, failed, cancelled | The same job is also readable at GET /v1/jobs/{id}/status. |
| Format or Action run | status | queued, processing, completed, failed, canceled, skipped | skipped never ran: another run was in flight. |
| Agent Completion run | status | queued, processing, completed, failed, canceled | The docs say these match Action runs. |
| Any run | next_action | poll_status, retry_later, none | retry_later on a skipped run; none on completed, failed, and canceled. |
| Queued run | queue.state | waiting, runtime_unavailable, processing, done | runtime_unavailable: queued past the normal pickup window. |
| Format run event | status | pending, running, done, warning, error, skipped | Each entry names a phase: preparing, running, or finalizing. |
| Format run cancel | cancel_effect | canceled, no_op | no_op: the run had already finished. |
Which statuses do queues, webhooks, and billing use?
These objects sit around jobs and runs rather than inside them:
| Object | Field | Values | Notes |
|---|---|---|---|
| Bulk queue | status | queued, running, completed | completed means every item is terminal, not that all succeeded. |
| Bulk queue item | status | queued, running, completed, failed, canceled | A skipped child run is recorded as failed. |
| Job webhook delivery | status | pending, delivering, delivered, retrying, failed, exhausted | Delivery state, not the job's outcome. |
Run webhook_delivery | status | not_armed, pending, retrying, delivered, failed, exhausted | not_armed: the URL is stored and the run is still going. |
| Webhook envelope | status | OK, ERROR | Failed and canceled jobs send ERROR. Runs send OK on completed and ERROR on failed. |
| Run webhook envelope | outcome | ok, degraded, error | See below. |
| Usage ledger row | status | reserved, captured, refunded | refunded: released after a failure or a cancellation before capture. |
| Resource read | resource_status | processing, ready, failed, canceled, archived | Avatar and avatar-video lists accept status=ready as an alias for completed jobs. |
| Format or Action | status | active, inactive | inactive refuses API runs with a 409, but a Format never run over the API may read inactive and still run. |
| Format grant | status | pending, accepted | pending confers nothing until the invited workspace's admin accepts. |
| Balance | state | funded, empty | empty: no spendable USD balance, or no balance row yet. |
Is it canceled or cancelled?
One l everywhere except POST /v1/videos. Jobs, runs, bulk items, and resources spell it canceled; the OpenRouter-shaped video route answers cancelled, and it also says pending for queued and in_progress for processing. Compare strings per surface rather than sharing one enum.
Scheduled runs show why. Their statuses remap internal ones: done surfaces as completed, error as failed, and cancelled as canceled, and the docs warn not to assume job-side status strings transfer.
Which values are terminal, and which send a webhook?
Stop polling a job on completed, failed, or canceled, and a run on those three or skipped. Terminal is not the same as delivered:
- Job webhooks fire on all three terminal statuses, as
job.completed,job.failed, andjob.canceled. - Run webhooks fire once, on
completedorfailed. Acanceledorskippedrun never delivers, so read the cancel or create response instead. - A skipped Scheduled run carries
skip_reason: previous_run_active; preventing overlapping runs covers when that happens. - A bulk queue's
completedstill needs a check ofcounts.failedandcounts.canceled.
What does outcome add to a webhook's status?
A run webhook's status is binary. outcome answers whether you got usable output: ok is completed with output, error is a run that did not complete, and degraded is a completed, billed run whose receipt still carries an output_error. A completed receipt carries one when, for example, output_extraction_failed reports details.reason: harvest_unavailable: the projection could not run, status stays completed, and the receipt fills in on the next read.
Over the API, a result that does not match your output_schema fails the run: status is failed and error carries the same reason as output_error. That run arrives with status: "ERROR" and outcome: "error". Branch on outcome when the question is whether you got usable output.
Sources
Related posts
More in Developers
- Sume job types and concurrency: which calls take a slot
Each Sume endpoint's job type and slot use: every generation job, trims and Timeline included, takes a concurrency slot; frames and inspect don't.
- Sume API media URL rules: which URLs each endpoint accepts
Sume generation endpoints fetch public HTTPS media URLs. Trim, filter, frames, inspect, and Timeline take only your workspace's media.sume.com URLs.
- Webhook URL rejected as invalid? Sume's webhook URL rules
Sume answers 400 invalid_request when a webhook URL is not public HTTPS. The rules for scheme, host, port, and credentials, and the check at delivery.
- Connect Claude Code, Cursor, or Codex to Sume with hosted MCP
Sume's hosted MCP server at mcp.sume.com/mcp lets coding agents generate images, video, audio, and avatars. Setup, OAuth scopes, and spend gates.
Written by Sume