Veo 3.1 API — pricing & specs
Veo 3.1 is a Google DeepMind model that generates video clips from text prompts. On KeepRouter, Veo 3.1 costs $0.4000 per second of video, billed pay-as-you-go with no monthly fee. Call it through a compatible KeepRouter endpoint supported by its active route, with the model id veo-3.1.
| Maker | Google DeepMind |
|---|---|
| Modality | Text-to-video |
| Clip length | 4, 6, 8 seconds only |
| Output price | $0.4000 per second of video |
| Capabilities | Text-to-video, Asynchronous task: poll for the finished clip |
| Endpoint | POST /v1/video/generations, then GET /v1/videos/{id} |
| Model id | veo-3.1 |
How pricing works for Veo 3.1
Veo 3.1 is billed per second of generated video — $0.4000 per second of video, charged when the render is submitted. There is no monthly fee; the clip's `duration` is the billed quantity, so a 5-second clip costs five times the published per-second rate.
Calling Veo 3.1 on KeepRouter
Point a compatible client at the supported KeepRouter endpoint and set the model to veo-3.1. KeepRouter preserves the client-facing request shape while handling upstream routing or translation. Submit the render to POST /v1/video/generations, then poll GET /v1/videos/{id} until status is completed and read url.
cURL
# 1. Submit the render and keep the task id
TASK=$(curl -s https://keeprouter.com/v1/video/generations \
-H "Authorization: Bearer $KEEPROUTER_KEY" -H "Content-Type: application/json" \
-d '{"model":"veo-3.1","prompt":"a paper plane gliding over a sunlit desk","duration":4}' \
| python3 -c 'import json,sys; print(json.load(sys.stdin)["id"])')
# 2. Poll until the clip is ready
curl -s https://keeprouter.com/v1/videos/$TASK -H "Authorization: Bearer $KEEPROUTER_KEY"Python
import os, time, requests
headers = {"Authorization": "Bearer " + os.environ["KEEPROUTER_KEY"]}
task = requests.post("https://keeprouter.com/v1/video/generations", headers=headers, json={
"model": "veo-3.1", "prompt": "a paper plane gliding over a sunlit desk", "duration": 4,
}).json()
while True:
state = requests.get(f"https://keeprouter.com/v1/videos/{task['id']}", headers=headers).json()
if state["status"] in ("completed", "failed", "canceled"):
break
time.sleep(5)
print(state["url"] or state["error"])JavaScript
const headers = { Authorization: "Bearer " + process.env.KEEPROUTER_KEY, "Content-Type": "application/json" };
const task = await (await fetch("https://keeprouter.com/v1/video/generations", {
method: "POST", headers,
body: JSON.stringify({ model: "veo-3.1", prompt: "a paper plane gliding over a sunlit desk", duration: 4 }),
})).json();
let state;
do {
await new Promise((r) => setTimeout(r, 5000));
state = await (await fetch("https://keeprouter.com/v1/videos/" + task.id, { headers })).json();
} while (state.status !== "completed" && state.status !== "failed" && state.status !== "canceled");
console.log(state.url ?? state.error);Estimate API costs
At the current KeepRouter customer price, an example workload of 6 seconds of generated video per request costs approximately $2.40 per request. At 100 requests per day, that is $7200.00 over 30 days. This is a usage estimate, excluding processing fees, taxes, retries and application infrastructure. Actual usage, cache hits and supported generation durations need their own checks.
Adjust quantities in the API cost calculator.
How to evaluate Veo 3.1
Veo 3.1 is listed on KeepRouter as text-to-video under the exact id veo-3.1. Use POST /v1/video/generations, then GET /v1/videos/{id} for the listed route; a maker's upstream features do not automatically apply to this gateway endpoint. No context limit is asserted here because the exact upstream limit has not been verified for this catalog entry.
First workload: Render one short representative clip, then inspect motion, consistency and the billed duration. Accepted durations on this route: 4, 6, 8 seconds.
Before production: Video generation is asynchronous and billed by generated seconds. Poll the task result; keep failed or refused jobs separate in your cost accounting.
Public model usage evidence
No public, exact-variant usage figure has been verified for this KeepRouter model id. Missing data is not zero usage; family-level or maker-wide traffic is not presented as this model's traffic.
Published examples and cases
OpusClip Agent Opus and Volley
Google DeepMind identifies OpusClip's promotional-video workflow and Volley's RPG cinematics as uses of Veo 3.1. The source does not identify KeepRouter or its Lite/Fast tiers. Google DeepMind Veo showcase.
Source and verification boundary
Official Veo 3.1 documentation. KeepRouter's live catalog is authoritative for the customer price and enabled endpoint shown here; the maker remains authoritative for upstream model capabilities and limits.
Pricing and implementation guides
Related models
- Veo 3.1 (1080p) by Google DeepMind — $0.4000 per second of video
- Gemma 4 31B by Google DeepMind — $0.1200 per 1M input tokens and $0.3500 per 1M output tokens
- Veo 3.1 (4K) by Google DeepMind — $0.6000 per second of video
- Gemma 4 26B A4B IT by Google DeepMind — $0.1000 per 1M input tokens and $0.3000 per 1M output tokens
- Veo 3.1 Fast by Google DeepMind — $0.1000 per second of video
- gemini-embedding-001 by Google DeepMind — $0.1500 per 1M input tokens and $0.6000 per 1M output tokens
All models & pricing · Quickstart · KeepRouter vs OpenRouter · Glossary · Get an API key
Catalog facts and prices last changed .
Page content reviewed .