Veo 3.1

Google's Veo 3.1 turns a prompt into a 4, 6 or 8 second video with dialogue, sound effects and ambient audio, at 720p, 1080p or 4K. Start from a first frame, set a last frame, or guide the subject with 1 to 3 reference images (reference videos are 8 seconds). For cinematic scenes, product shots and short ads with sound.

Input

Fields marked * are required. Review the price before generating.

Optional. Input image for the first frame of the video.

Uploading a file needs an account. Create accountJPEG, PNG, WebP · up to 25 MB

Optional. Last frame of the video.

Uploading a file needs an account. Create accountJPEG, PNG, WebP · up to 25 MB

Optional. Accepts 1 to 3 reference images. Duration will be 8 seconds by default. First and last images will be ignored.

Uploading a file needs an account. Create accountJPEG, PNG, WebP · up to 25 MB

The prompt to generate the video.

Resolution of the generated video

Additional settings

Aspect ratio of the generated video

A text string that describes anything you want to discourage the model from generating

A number to make generated videos deterministic. For random result do not send.

Duration of the generated video in seconds. When using reference images duration is set to 8 by default.

Starting price$2.54 / video

You sign up first. Your settings are kept.

API code for this input

Uses your current form values and requests a new quote. Running the generation step uses your balance. Get an API key

# 1. Price the exact input (quotes are valid for up to 10 minutes)
curl -s https://api.raywake.com/v1/quotes \
  -H "Authorization: Bearer $RAYWAKE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "veo-3-1",
  "input": {
    "aspectRatio": "match_input_image",
    "resolution": "720p",
    "durationSeconds": "4"
  }
}'

# 2. Start the generation with the quote_id from step 1
curl -s https://api.raywake.com/v1/generate \
  -H "Authorization: Bearer $RAYWAKE_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"model": "veo-3-1", "quote_id": "QUOTE_ID", "input": {"aspectRatio":"match_input_image","resolution":"720p","durationSeconds":"4"}}'

# 3. Poll until the status is terminal
curl -s https://api.raywake.com/v1/jobs/JOB_ID \
  -H "Authorization: Bearer $RAYWAKE_API_KEY"

Set RAYWAKE_API_KEY before running. Replace QUOTE_ID and JOB_ID in cURL with the returned values. File links can expire; refresh them if you run the code later.

More runnable examples on GitHub