Generate a video
Create a video generation job. Handles text-to-video, image-to-video
(send a start frame in files), lipsync (sync_v2, veed_fabric_1.0,
omnihuman_v1.5, …), video editing (grok_imagine_edit), avatars
(heygen_avatar), and video upscaling (topaz_video, seedvr_video).
When files contains an image and the model has an image-to-video
variant, varg routes to it automatically — same model family, never
substituted.
Authorizations
varg API key (varg_...). Get one at app.varg.ai
or run bunx vargai login. App sessions may alternatively send a
Supabase JWT.
Headers
Any unique string. Retrying a request with the same key returns the existing job (HTTP 200) instead of creating and charging a new one (HTTP 202).
Body
"kling_v3"
2000"16:9"
Seconds
1 <= x <= 120Start frame (image-to-video), source video + audio (lipsync), etc.
10Provider-native overrides, keyed by provider id
(e.g. a fal object with seed, num_images, ...). Discover
per-model fields via GET /tools/{tool_key}?model=<model>.
Cross-cutting job options
Response
Idempotency replay — the existing job for this Idempotency-Key (no new charge).
"job_a1b2c3d4e5f6"
Lifecycle is queued then submitting then running, ending in a
terminal status (completed, failed, or cancelled).
queued, submitting, running, completed, failed, cancelled "image"
The request body as submitted (model, prompt, ...)
Canonical output envelope. Present only when the job is completed.
"stitching 3/8 (40%)"
Fraction 0..1
Structured pricing. 1 credit = 1 cent = $0.01.
"fal"
"fal:flux_schnell"
The provider's raw status string
Lifecycle URLs (present on creation responses)