Veo 3.1 API

Google DeepMind Veo 3.1: cinematic 4–8 s video with native dialogue and sound effects.

Google·VideoAvailable

from$0.18/ second$0.210% off

Model IDveo-3.1

text-to-videoimage-to-videoaudio

Input

Text · Image

Output

Video

Provider

6 providers

Duration (s)

4 · 6 · 8

Resolution

720p · 1080p · 4k

Aspect ratio

16:9 · 9:16

Last 7 days · not enough recent requests for stats yet.

Veo 3.1 pricing

Prices are per unit; requests without a provider are routed to the cheapest provider that supports your parameters.

Option720p1080p4k
All options
$1.125 / request
113 Credits
$1.147 / request
115 Credits
$1.665 / request
167 Credits

Try Veo 3.1 before you integrate

Test output quality, compare provider prices and estimate cost before writing any code.

Provider
Video
Estimated cost

Input

prompt
negative_prompt
image_url
end_image_url
duration
resolution
aspect_ratio
generate_audio
seed

Result

Idle
Your generation will appear here.

Provider prices for this request

Enter a prompt to compare provider prices.

Veo 3.1 prompt examples

Ready-to-use prompts. Load one into the playground and tweak it.

Source
Scene

11 prompts

A mother and daughter share a magical evening together while reading a Japanese folktale in a cozy Japanese living room. The scene opens with a warm medium two-shot from the front. The mother and daughter sit closely together on a sofa with an open book resting on their laps. The mother gently wraps one arm behind her daughter and looks down at the book, while soft warm light catches the waves in her hair. The daughter sits close beside her, watching the pages with curiosity and wonder. The camera glides slowly and gently toward them, creating an intimate and emotional atmosphere. The open book fills the lower part of the frame and begins to radiate a soft golden glow. Its pages subtly pulse and ripple as a miniature magical world starts unfolding from the book. Urashima Tarō appears riding a sea turtle, emerging from the illustrated pages like a living pop-up story. The camera continues its smooth movement toward the daughter and transitions into a close-up from her left side. Her profile fills the frame while her mother becomes softly blurred in the background. The daughter watches the magical scene with wide-eyed amazement and says excitedly, “Mama, look! He’s moving!” Warm cinematic lighting, gentle emotional pacing, subtle magical effects, intimate family atmosphere, realistic characters, soft depth of field, and an enchanting storybook feeling.

Veo 3.1 API reference

Endpoints, request fields and runnable examples for this model.

Base URL

https://01router.com/api/v1
llms.txt

Quick start

Set API_KEY to your project key, then run a sample from your server. Replace example media URLs with your own public URLs.

Auto-routing chooses a provider that supports the request. Select a provider to see its input constraints and pinned request examples.

curl https://01router.com/api/v1/generations \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  --data-binary @- <<'JSON'
{
  "model": "veo-3.1",
  "input": {
    "prompt": "A cinematic shot of a red fox running through snow",
    "duration": 8,
    "resolution": "720p",
    "aspect_ratio": "16:9",
    "generate_audio": true
  }
}
JSON

# Replace GENERATION_ID with the id returned above; poll until status is "succeeded" or "failed"
curl https://01router.com/api/v1/generations/GENERATION_ID -H "Authorization: Bearer $API_KEY"

Endpoints

Only endpoints relevant to this model are listed. Paths below include /api/v1. Click an endpoint to read its usage.

Authentication

Send your API key as a Bearer token. Requests are billed to the key owner's credits.

Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Get an API key

Input

Send JSON with Content-Type: application/json. Model parameters belong inside input; model, provider and callback_url are top-level fields.

Request body

NameTypeRequiredDescription
modelstringYes"veo-3.1"
providerstringNoPin a provider; omit to auto-route to the cheapest. One of: 01router | replicate | wavespeed | kie | atlascloud | vercel
inputobjectYesModel parameters, see the input fields below.
callback_urlstringNoOptional public HTTPS webhook URL. The final task result is signed and delivered here; polling remains available.

input · input fields

Required fields are marked explicitly. Other fields use the listed defaults when omitted.

NameTypeRequiredValuesDefault
prompt*stringYes——
negative_promptstringNo——
image_url
Optional start image (image-to-video)
stringNo——
end_image_urlstringNo——
durationnumberNo4 | 6 | 88
resolutionstringNo720p | 1080p | 4k720p
aspect_ratiostringNo16:9 | 9:1616:9
generate_audiobooleanNo—true
seedintegerNomin: 0 · max: 2147483647—
Callbacks →

Output

Creating a task does not mean generation has finished. Keep its id, poll until succeeded or failed, then read outputs or error. Amounts below are illustrative; actual charges depend on the request.

queued→processing→succeeded / failed

Task submitted

{
  "id": "gen_example",
  "object": "generation",
  "model": "veo-3.1",
  "type": "video",
  "provider": "01router",
  "status": "processing",
  "input": {
    "prompt": "A cinematic shot of a red fox running through snow",
    "duration": 8,
    "resolution": "720p",
    "aspect_ratio": "16:9",
    "generate_audio": true
  },
  "outputs": [],
  "error": null,
  "credits": 0,
  "price_usd": 0,
  "created_at": "2026-10-25T08:00:00.000Z",
  "completed_at": null
}

Task completed

{
  "id": "gen_example",
  "object": "generation",
  "model": "veo-3.1",
  "type": "video",
  "provider": "01router",
  "status": "succeeded",
  "input": {
    "prompt": "A cinematic shot of a red fox running through snow",
    "duration": 8,
    "resolution": "720p",
    "aspect_ratio": "16:9",
    "generate_audio": true
  },
  "outputs": [
    "https://example.com/output.mp4"
  ],
  "error": null,
  "credits": 0,
  "price_usd": 0,
  "created_at": "2026-10-25T08:00:00.000Z",
  "completed_at": "2026-10-25T08:01:00.000Z"
}

Response fields

NameTypeRequiredDescription
idstringYesGeneration ID. Use it to query or cancel this task.
objectstringYesgeneration
modelstringYesveo-3.1
typestringYesvideo
providerstringYesProvider
statusstringYesqueued → processing → succeeded / failed. Stop polling at either terminal state.
inputobjectYesModel parameters, see the input fields below.
outputsstring[]YesResult URLs. Empty while processing; read after succeeded and save the files promptly.
errorstring | nullYesFailure reason, or null when no failure is reported.
creditsnumberYesCredits charged for this request.
price_usdnumberYesRequest price in USD.
created_atstringYesCreation time in ISO 8601 format.
completed_atstring | nullYesCompletion time in ISO 8601 format; null before completion.

Get the result

Poll every few seconds until status is succeeded or failed. Output URLs are provider-hosted and may expire — download them promptly. Or pass callback_url to get the result pushed.

curl "https://01router.com/api/v1/generations/GENERATION_ID" \
  -H "Authorization: Bearer $API_KEY"

queued → processing → succeeded / failed. Stop polling at either terminal state. Result URLs. Empty while processing; read after succeeded and save the files promptly.

Cancel a task

Cancellation depends on provider support and task state. A confirmed cancellation returns status: failed and error: Canceled by user. Unsupported or completed tasks return 409 not_cancelable.

curl -X POST "https://01router.com/api/v1/generations/GENERATION_ID/cancel" \
  -H "Authorization: Bearer $API_KEY"

Quote

Same body as creating a generation. Returns every available provider sorted by price, plus the ones that cannot serve the request and why.

curl "https://01router.com/api/v1/quote" -H "Content-Type: application/json" --data-binary @- <<'JSON'
{
  "model": "veo-3.1",
  "input": {
    "prompt": "A cinematic shot of a red fox running through snow",
    "duration": 8,
    "resolution": "720p",
    "aspect_ratio": "16:9",
    "generate_audio": true
  }
}
JSON

Model schema

This public endpoint returns the model parameters and each provider’s supported constraints and prices.

curl "https://01router.com/api/v1/models/veo-3.1"

Errors

Check the HTTP status and error.message. Fix the request before retrying validation or authentication errors. A failed generation is reported in status and error on the task itself.

{
  "error": {
    "message": "Invalid or missing API key",
    "code": "unauthorized"
  }
}

400Invalid body or parameter value

401Missing or invalid API key

402Not enough credits

404Unknown model or generation

409The task cannot be canceled (already finished, or the provider does not support canceling)

429Too many requests — retry after the given seconds

502Every provider rejected the task (credits refunded)

Auth, routing, billing and error codes are covered in →

Use with AI

Give your coding assistant this model reference: endpoints, input constraints, output fields and request examples in plain text.

Open llms.txt

How does Veo 3.1 compare?

Specs and starting prices side by side. Test with the same prompt before you choose.

Veo 3.1Gemini Omni Flash 1.1Grok Imagine Video 1.5Seedance 2.5
VendorGoogleGooglexAIByteDance
Starting price$0.18 / second$0.027 / second$0.011 / second$0.086 / second
InputText · ImageText · ImageText · ImageText · Image
Provider6 providers5 providers10 providers9 providers
Duration (s)4 · 6 · 83 – 101 – 154 – 30
Resolution720p · 1080p · 4k360p · 720p · 1080p · 4k480p · 720p · 1080p480p · 720p · 1080p
Aspect ratio16:9 · 9:1616:9 · 9:1616:9 · 4:3 · 3:2 · 1:1 · 2:3 · 3:4 · 9:1616:9 · 9:16 · 1:1 · 4:3 · 3:4 · 21:9

Veo 3.1 API FAQ

What is Veo 3.1 best for?

Google's Veo 3.1 is built for polished final renders: ads, branded content, storytelling and product or character animation, with native dialogue, sound effects and music.

Which durations and resolutions are supported?

4, 6 or 8 seconds at 720p, 1080p or 4K, in 16:9 or 9:16, at 24 fps.

Can I use first and last frames?

Yes. Pass image_url as the first frame and optionally end_image_url to interpolate to a last frame.

Does audio cost more?

On most providers, clips with generate_audio enabled cost more per second than silent ones. Turn it off when you only need visuals.

How is it billed on 01router?

Per output second (some providers price per clip), depending on resolution and audio; see the pricing table. Outputs carry Google's SynthID watermark. Failed generations are refunded.

Related models

Other models you can call with the same API key.