Veo 3.1
Veo 3.1 text-to-video and image-to-video with native audio and first/last-frame interpolation
Veo 3.1 generates 4–8 second videos with optional native audio, and supports first-frame, first+last-frame, and reference-image workflows.
All tasks are asynchronous: submit, poll the task status, then download the result. The full lifecycle is documented on the Video Generation page.
Model Lineup
veo-3.1-generate-preview — highest quality, native audio, up to 4K. Durations 4 / 6 / 8 s; aspect ratios 16:9 / 9:16.
veo-3.1-fast-generate-preview — balanced quality and speed. Durations 4 / 6 / 8 s; aspect ratios 16:9 / 9:16.
veo-3.1-lite-generate-preview — fastest and lowest cost; does not support 4k. Durations 4 / 6 / 8 s; aspect ratios 16:9 / 9:16.
Submit a Generation Task
Routes by the model field in the request body to the matching model.
Task creation is not idempotent, so failover retries are disabled for video routes.
/v1/videosCompatibility aliasPOST/v1/video/generationsRequest
schemaJSON body.
modelstringRequiredVeo 3.1 model ID.
veo-3.1-generate-previewveo-3.1-fast-generate-previewveo-3.1-lite-generate-previewpromptstringOptionalVideo description prompt. Required for text-to-video; optional when an image input is provided via image, images, lastFrameImage, or input_reference. Chinese and English are both accepted; English prompts usually produce the best results.
size / resolutionstringOptionalResolution. 4k is only available on the non-lite models. If omitted, the model default is used.
720p1080p4kduration / secondsinteger | stringOptionalVideo duration in seconds. At 1080p or 4k, only 8 seconds is supported.
468aspect_ratiostringOptionalAspect ratio. Defaults to 16:9.
16:99:16generate_audiobooleanOptionalWhether to generate synchronized audio. Not enabled unless explicitly set — enabling roughly doubles the cost.
enhance_promptbooleanOptionalWhether to apply prompt enhancement. Not enabled unless explicitly set.
negative_promptstringOptionalNegative prompt describing what to avoid.
seedintegerOptionalRandom seed, 0 to 2^32 - 1. Best-effort; determinism is not guaranteed.
person_generationstringOptionalPeople-generation policy.
allow_allallow_adultdisallowimagestringOptionalFirst-frame image for image-to-video. Accepts HTTP(S) URL, data URI, or raw base64.
imagesarray<string>OptionalImage array; the first item is used as the main image input.
lastFrameImagestringOptionalLast-frame image. Combined with image, the model interpolates between the first and last frames.
input_referencestringOptionalReference image input. Accepts HTTP(S) URL, data URI, or raw base64.
image_mime_typestringOptionalOptional MIME type hint for the provided image(s), e.g. image/png.
Response
schemaSubmission receipt. Fields are returned at the top level of the JSON body (no data wrapper).
idstringOptionalTask ID (task_xxx). Same value as task_id, kept for OpenAI SDK compatibility.
task_idstringOptionalTask ID used for polling and download.
objectstringOptionalAlways video.
modelstringOptionalModel name from the request.
statusstringOptionalInitial task status, usually QUEUED.
SUBMITTEDQUEUEDIN_PROGRESSSUCCESSFAILUREprogressintegerOptionalProgress 0–100, usually 0 right after submission.
created_atintegerOptionalTask creation time (Unix seconds).
4K output (resolution = 4k) is only available on the non-lite models.
1080p and 4k resolutions only support 8-second duration.
Audio is not generated unless generate_audio is set to true (which roughly doubles the cost).
Both success and business failures return HTTP 200. A failed call carries an error object — { "error": { "message", "type", "code" }} — instead of the receipt fields; check for the error field to tell them apart.
Query and Download
Poll the task until it reaches SUCCESS or FAILURE (every 10–15 seconds, never below 5 seconds), then download the result. The download endpoint supports Range requests (HTTP 206) for resumable download and seek-while-playing.
/v1/videos/{task_id}Compatibility aliasGET/v1/video/generations/{task_id}/v1/videos/{task_id}/contentResponse
schemaCore fields below. The full task detail schema, status lifecycle, and polling guidance are documented on the Video Generation page.
statusstringOptionalTask status.
SUBMITTEDQUEUEDIN_PROGRESSSUCCESSFAILUREprogressstringOptionalProgress percentage string, such as "50%".
result_urlstringOptionalResult video download URL, present when status is SUCCESS. Has the form /v1/videos/{task_id}/content.
fail_reasonstringOptionalFailure reason, present when status is FAILURE.
