Skip to main content
POST
Create a Veo video task
Use veo-3.1-generate-001, veo-3.1-fast-generate-001, or veo-3.1-lite-generate-001 (Preview). All return asynchronous tasks.

Create a task

Query the result

Veo uses the shared video task query endpoint, GET /v1/contents/generations/tasks/{id}. See Retrieve a Veo task for authentication, statuses, and response fields. Pass the complete id returned by creation, including its veo31: prefix, and use the same API key. No model parameter or request body is needed. Poll until status is succeeded or failed; read successful video links from outputs.videos. Querying does not create another task or charge again.
GET /v1/contents/generations/tasks lists owned tasks. Cancellation, deletion, callbacks and streaming are not supported for Veo.

Modes and inputs

Omitting mode infers it from the assets. These input forms cannot be combined. Reference images describe subjects, not a separate style-reference operation. Audio inputs and video editing are not supported.

HTTPS and GCS inputs

You can provide an HTTPS URL or a gs://bucket/object URI directly in any media field. Public and signed HTTPS URLs are accepted; local files, data URLs and Base64 input are not accepted by this endpoint. Direct GCS inputs must meet both requirements:
  • The object or directory is authorized for your GENGEN account. Contact support to register the exact object or prefix; another user’s private GENGEN objects are never accepted.
  • The object is readable by GENGEN. Contact support to configure read access for an external private bucket, or provide a signed HTTPS URL instead. A gs:// URI alone does not grant access.
GCS images must be JPEG or PNG, with a maximum size of 20 MiB. HTTPS images also accept WebP and are converted to PNG; the converted image must remain within 20 MiB. Extension inputs must be Veo-generated MP4 videos, 1–30 seconds, 24 fps, 16:9 or 9:16, and 720p, 1080p or 4K, up to 64 MiB.

Video extension

Extension adds exactly seven seconds. controls.duration represents the added duration, not the input video’s duration. The Playground does not expose video extension.

Controls

A nonempty prompt is required (up to 10,000 characters). Use English prompts. Unsupported controls are rejected instead of silently ignored. Advanced settings go under providerOptions.google: negativePrompt (string, up to 10,000 characters), enhancePrompt (boolean), personGeneration (allow_adult or disallow), and resizeMode (pad or crop). resizeMode applies to image inputs. These fields are optional.

Outputs, retention and billing

Statuses are queued, running, succeeded, and failed. Failed tasks may include failureReason. Outputs are HTTPS URLs in outputs.videos, not raw GCS paths or Base64. Videos remain available for seven days after generation completion. Signed links last at most one hour; retrieving or listing the task renews links while the video is retained. Copy the video to your own storage before outputs.expiresAt. After expiry the task remains successful but outputs.videos is empty. GENGEN reserves the estimated balance before queueing. Successful tasks charge for the generated seconds and the number of videos actually returned; extension charges for seven added seconds per returned video. Filtered outputs are not included. Failed tasks release the reservation. Polling does not charge again. See customer pricing. Try the Veo API Explorer.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json
model
enum<string>
required
Available options:
veo-3.1-generate-001,
veo-3.1-fast-generate-001,
veo-3.1-lite-generate-001
prompt
string
required
Required string length: 1 - 10000
mode
enum<string>

Inferred from assets when omitted. Lite does not support multimodal_reference. Extension is API-only.

Available options:
text_to_video,
image_first_frame,
image_first_last_frame,
multimodal_reference,
video_extend
assets
object

Choose first frame, first+last frames, subject references, or extension video; input forms cannot be combined.

controls
object
providerOptions
object

Response

Owned asynchronous video task

id
string
required
Example:

"veo31:12345678-1234-4234-8234-123456789abc"

model
enum<string>
required
Available options:
veo-3.1-generate-001,
veo-3.1-fast-generate-001,
veo-3.1-lite-generate-001
status
enum<string>
required
Available options:
queued,
running,
succeeded,
failed
outputs
object
required
createdAt
string<date-time>
updatedAt
string<date-time>
failureReason
string