Omni job status names: pending vs queued, cancelled vs canceled
Sume's /v1/videos poll uses pending, in_progress, completed, failed and cancelled; /v1/jobs uses queued, processing and canceled. Mapping table for Omni code.

The same Gemini Omni Flash job shows two status vocabularies on Sume. GET /v1/videos/{id} returns pending, in_progress, completed, failed and cancelled. The job API returns queued, processing, completed, failed and canceled, one l in the last. Code that compares strings against the wrong set will poll forever.
Mapping
| Meaning | /v1/videos | /v1/jobs | Webhook event |
|---|---|---|---|
| Waiting | pending | queued | - |
| Running | in_progress | processing | - |
| Done | completed | completed | job.completed |
| Failed | failed | failed | job.failed |
| Stopped | cancelled | canceled | job.canceled |
A normalizer
Fold both vocabularies into three states before your loop sees them.
const TERMINAL = { completed: "done", failed: "error", cancelled: "error", canceled: "error" };
const WAITING = new Set(["pending", "queued", "in_progress", "processing"]);
export function state(status) {
if (status in TERMINAL) return TERMINAL[status];
if (WAITING.has(status)) return "wait";
throw new Error("unknown status " + status);
}Why it matters on Omni
A job stuck in a wait state is not free: a 10 second 1080p Omni clip holds $1.875 until it ends. Treat an unknown status as an error, not as "keep waiting".
Webhooks send terminal events only (completed, failed, canceled), with no progress deliveries, so keep a poll as backup for a missed delivery.
Poll on booleans when you can
On the job endpoints, GET /v1/jobs/{id}/status also carries terminal and result_ready booleans. Polling on those avoids string comparison entirely: stop when terminal is true, and fetch /v1/jobs/{id}/result when result_ready is true. When next_poll_after_seconds is present, obey it; otherwise back off between polls.
Sources
Related posts
More in Developers
- Omni Flash on /v1/videos vs /v1/video-router: the field map
The same Gemini Omni Flash 1.1 runs on /v1/videos and /v1/video-router/generate with different fields. Field map for frame_images, input_references, video_url.
- Omni Flash references: 10 images, 3 clips of 3 s, 9 s of footage
Gemini Omni Flash 1.1 on Sume takes up to 10 reference images and 3 reference clips of 3 s each (9 s of footage), with no audio reference. Cost: $1.00 for 8 s.
- Omni resolution values: 4K, lowercase 4k, and what is rejected
Gemini Omni Flash 1.1 on Sume takes 360p, 720p, 1080p and 4K. The catalog also accepts lowercase 4k as an alias. Which strings fail, and the price of each.
- Omni video references: three clips of 3 s, so 9 s of footage at most
Gemini Omni Flash 1.1 takes up to 3 reference videos of 3 s each and 10 reference images. The tags are VIDEO_REF_0 to 2; the price is unchanged.
Written by Sume