Video Generation
Veo Series
Google Veo 3.1: the official line billed per second at 4 / 6 / 8 seconds, the economy line billed per finished clip with extension support, 4K on both routes
POST
Veo Series
Google’s Veo 3.1 video line comes in two routes. The official route,
A successful submission returns a
Official route (
Economy route (
See Submit a task for
You are only billed for a successfully generated video. Failed and cancelled tasks, and tasks that return no usable video, are refunded in full. The final charge is the
Generated videos are returned in
veo3.1-fast and veo3.1-quality, offers 4 / 6 / 8 second output, first and last frames, native audio and seed, billed per second. The economy route, veo3.1-lite, veo3.1-fast-rev and veo3.1-quality-rev, reaches Veo through an aggregator, always outputs eight seconds and is billed per finished clip; the two -rev tiers can also extend a video they generated earlier. veo3.1-lite (Veo 3.1 Lite Economy) belongs to the economy route and is not Google’s official Veo 3.1 Lite. Both routes offer 720p, 1080p and 4k; they differ in both parameters and billing, and never switch to each other.
Quick start
task_id. Retrieve the result with GET /v1/tasks/{task_id}, wait inline with Prefer: wait, or configure a webhook.
Chaining an extension takes two steps. Submit action: "generate" on veo3.1-fast-rev or veo3.1-quality-rev and keep the task_id; once that task is completed, pass its task_id as ref_task_id on an action: "extend" request. ref_task_id is the task_id returned by that first task, not an upstream ID, and it must be a completed generate task on the same model under the same API key. An extension is 720p by default; a 4k extension needs a 4k parent.
Request parameters
Both routes
string
required
Model ID; see Available models.
string
default:"generate"
generate— generate a video; supported by all five modelsextend— continue a finished video; onlyveo3.1-fast-revandveo3.1-quality-revsupport it, andref_task_idis required
string
required
Video description. Under
action: "extend" it describes the continuation.integer
Output duration in seconds; required under
action: "generate". The official route takes 4, 6 or 8, and resolution 1080p or 4k takes 8 only; the economy route is fixed at 8. action: "extend" does not take this parameter — the continuation’s length is decided upstream.string
default:"720p"
Output resolution:
720p, 1080p or 4k. Also accepted under action: "extend", where it defaults to 720p; a 4k extension needs a 4k parent.string
default:"16:9"
Frame ratio:
16:9 or 9:16.Official route (veo3.1-fast / veo3.1-quality)
string
First-frame image URL.
string
Last-frame image URL; must be sent together with
first_frame_image.string
Negative prompt describing what to keep out of the video.
integer
Random seed, for reproducing a result.
boolean
default:"false"
Generate native audio. Enabling it moves the request to the audio pricing tier.
string
Person policy:
allow_adult allows adult people / disallow generates none.string
How to fit a frame image whose ratio differs from the output:
pad or crop.Economy route (veo3.1-lite / veo3.1-fast-rev / veo3.1-quality-rev)
string[]
Reference image URLs, supported by
veo3.1-fast-rev and veo3.1-quality-rev; how many depends on generation_type. veo3.1-lite is text-to-video only and takes no images.string
How the images are used; required whenever
image_urls is present:frame— treat them as first / last frames; 1-2 imagesreference— treat them as reference material; 1-3 images,veo3.1-fast-revonly
boolean
default:"false"
Also output a GIF. Cannot be combined with
resolution 1080p or 4k.string
required
The parent task being extended; required under
action: "extend". Use the task_id returned by the generate task.boolean
default:"false"
Under
action: "extend", whether to return only the newly generated segment. false returns the joined clip.callback_url, callback_events, Prefer: wait, Idempotency-Key, and the maximum-cost header.
The official route does not support image_urls, generation_type, enable_gif, ref_task_id or raw; the economy route does not support first_frame_image, last_frame_image, negative_prompt, seed, generate_audio, person_generation or resize_mode. Any other parameter returns 400 and is not billed.
Limits
The
ref_task_id on action: "extend" must point at a completed generate task on the same model. Pointing at another model, another action or an unfinished task returns 400 and is not billed.
Pricing
Official route
veo3.1-fast and veo3.1-quality are billed resolution tier × seconds: resolution picks the tier (720p, 1080p or 4k), and the seconds come from duration (4, 6 or 8; 1080p and 4k take 8 only).
generate_audio: true switches to the audio tier’s per-second rate, still multiplied by duration alone. All three resolutions have an audio tier. Frame images, negative_prompt and seed do not affect the price.
Economy route
veo3.1-lite, veo3.1-fast-rev and veo3.1-quality-rev are billed per finished clip: one charge per generation, independent of length (output is always eight seconds). Resolution is the only tiering dimension; the number of reference images and the generation_type do not affect the price.
action: "extend" is also one charge per finished clip, independent of how long the continuation is, tiered by the resolution in the request (720p when omitted); raw does not affect the price.
Per-model rates are in
price_config on GET /v1/models, and in the console’s Model Market.What a single call actually cost is the cost field on the task response — an integer quota at 500,000 quota = 1 USD.cost field on the task response — an integer quota, not dollars.
Response
Completed task
result.videos; expires_at is when the link stops working, so store the file before then. See Query Task Status for the full field list.
Available models
Official route — billed per second, with frame control and native audio.
Economy route — one price per finished clip, always eight seconds, no native audio.