Veo 3 Fast is the speed-and-cost tier of Google's Veo 3 generation, offering the same core capabilities as Veo 3 at lower latency and price.
- Input
- text image
- Output
- video
- Price
- $0.15/s
Price in context
Where the price sits among 5 comparable models
The bar shows how this model’s price compares with every other model of the same kind on Synthorai. The cheapest and the most expensive are named at each end. These are base rates; batch, region and cache-write discounts are on the pricing page.
Specs & limits
Video
| Resolution | 720p / 1080p A fixed set of options, not a range. |
|---|---|
| Clip length | 4 / 6 / 8 s A fixed set of options, not a range. |
| Frame rate | 24 fps |
| Aspect ratios | 16:9 · 9:16 |
| Video inputs | text-to-video · first-frame image-to-video |
| Native audio | Yes, generates sound |
| Format | .mp4 |
Model
| Modalities | text + image → video |
|---|
- Speed/cost tier of Google's Veo 3 generation: the same capability profile as Veo 3 at lower latency and price: text-to-video and first-frame image-to-video with native synchronized audio, 720p/1080p, 24 fps, 4/6/8 s, 16:9 and 9:16
- a generateAudio switch selects sound-on vs silent output. Google now lists Veo 3.1 Fast as the recommended replacement. Synthorai serves it via the async /v1/videos job API and bills per output second at separate sound-on and silent rates
Use Veo 3 Fast in 30 seconds
Asynchronous job API: create a task and poll it, or hold the request open with Prefer: wait. POST /v1/videos
import time
import requests
BASE = "https://synthorai.io/v1"
HEADERS = {"Authorization": "Bearer sk-syn-..."}
# 1) create the video generation job (POST /v1/videos)
task = requests.post(
f"{BASE}/videos",
headers=HEADERS,
json={
"model": "veo-3.0-fast-generate-001",
"prompt": "a watercolor lighthouse at dawn, waves rolling in, camera pulling back",
"resolution": "720p",
"duration": 5,
},
).json()
# 2) poll the job until it reaches a terminal state
while task["status"] in ("queued", "in_progress"):
time.sleep(5)
task = requests.get(f"{BASE}/videos/{task['id']}", headers=HEADERS).json()
# 3) completed → signed video URL (valid ~24h - download and store it promptly)
if task["status"] == "completed":
print(task["data"][0]["url"])
else:
print(task["error"])const HEADERS = {
Authorization: "Bearer sk-syn-...",
"Content-Type": "application/json",
};
interface VideoTask {
id: string;
status: "queued" | "in_progress" | "completed" | "failed" | "cancelled";
data?: Array<{ url: string }>;
error?: { code: string; message: string };
}
// 1) create the video generation job (POST /v1/videos)
const created = await fetch("https://synthorai.io/v1/videos", {
method: "POST",
headers: HEADERS,
body: JSON.stringify({
model: "veo-3.0-fast-generate-001",
prompt: "a watercolor lighthouse at dawn, waves rolling in, camera pulling back",
resolution: "720p",
duration: 5,
}),
});
let task = (await created.json()) as VideoTask;
// 2) poll the job until it reaches a terminal state
while (task.status === "queued" || task.status === "in_progress") {
await new Promise((r) => setTimeout(r, 5000));
const res = await fetch(`https://synthorai.io/v1/videos/${task.id}`, { headers: HEADERS });
task = (await res.json()) as VideoTask;
}
// 3) completed → signed video URL (valid ~24h — download and store it promptly)
if (task.status === "completed") console.log(task.data?.[0]?.url);
else console.error(task.error);# Create the job; "Prefer: wait" holds the request up to 60s and returns the
# completed task when generation finishes in time (else the queued task).
curl https://synthorai.io/v1/videos \
-H "Authorization: Bearer sk-syn-..." \
-H "Content-Type: application/json" \
-H "Prefer: wait=60" \
-d '{
"model": "veo-3.0-fast-generate-001",
"prompt": "a watercolor lighthouse at dawn, waves rolling in, camera pulling back",
"resolution": "720p",
"duration": 5
}'
# Still queued / in_progress? Poll until completed → data[0].url (valid ~24h).
curl https://synthorai.io/v1/videos/vid_9f2e8c1a4b7d \
-H "Authorization: Bearer sk-syn-..."package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
"time"
)
const base = "https://synthorai.io/v1"
type videoTask struct {
ID string `json:"id"`
Status string `json:"status"`
Data []struct {
URL string `json:"url"`
} `json:"data"`
}
func call(method, url string, body []byte) (t videoTask) {
req, _ := http.NewRequest(method, url, bytes.NewReader(body))
req.Header.Set("Authorization", "Bearer sk-syn-...")
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
json.NewDecoder(resp.Body).Decode(&t)
return t
}
func main() {
// 1) create the video generation job (POST /v1/videos)
payload, _ := json.Marshal(map[string]any{
"model": "veo-3.0-fast-generate-001",
"prompt": "a watercolor lighthouse at dawn, waves rolling in, camera pulling back",
"resolution": "720p",
"duration": 5,
})
task := call("POST", base+"/videos", payload)
// 2) poll the job until it reaches a terminal state
for task.Status == "queued" || task.Status == "in_progress" {
time.Sleep(5 * time.Second)
task = call("GET", base+"/videos/"+task.ID, nil)
}
// 3) completed → signed video URL (valid ~24h — download and store promptly)
if task.Status == "completed" {
fmt.Println(task.Data[0].URL)
}
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
// JDK built-in HttpClient — no extra dependency needed.
HttpClient http = HttpClient.newHttpClient();
// 1) create the job; "Prefer: wait=60" holds the request up to 60s and
// returns the completed task when generation finishes in time
HttpRequest create = HttpRequest.newBuilder(URI.create("https://synthorai.io/v1/videos"))
.header("Authorization", "Bearer sk-syn-...")
.header("Content-Type", "application/json")
.header("Prefer", "wait=60")
.POST(HttpRequest.BodyPublishers.ofString("""
{"model": "veo-3.0-fast-generate-001",
"prompt": "a watercolor lighthouse at dawn, waves rolling in, camera pulling back",
"resolution": "720p", "duration": 5}"""))
.build();
String task = http.send(create, HttpResponse.BodyHandlers.ofString()).body();
System.out.println(task); // {"id":"vid_…","status":…} — completed → data[0].url
// 2) still queued / in_progress? Poll GET https://synthorai.io/v1/videos/{id} until the
// status turns completed, then download data[0].url (valid ~24h).About Veo 3 Fast
- It covers text-to-video and first-frame image-to-video with native synchronized audio, outputting 720p or 1080p .mp4 clips at 24 fps, 4, 6, or 8 seconds long, in 16:9 or 9:16, and a generateAudio switch selects sound-on or silent output.
- Worth knowing before you choose it: Google's model cards for Veo 3 and Veo 3 Fast match in every published capability field, so resolution, durations, aspect ratios, frame rate, videos per request, seed, negative prompt, camera motion, and Content Credentials are all identical, and speed and price are the only documented difference between the two.
- Like the standard tier it inherits the 3.0 generation's limits, with no first-and-last-frame interpolation, no reference images, no video extension, no 4K, and a prompt rewriter that cannot be switched off.
- That profile suits high-volume drafts, social formats, and quick iteration where throughput beats top-tier polish; Google now lists Veo 3.1 Fast as the recommended replacement.
- Synthorai serves it through the asynchronous /v1/videos job API with create-and-poll or Prefer: wait semantics, and bills per output second at separate sound-on and silent rates.
FAQ
Is the Veo 3 Fast API free to try?
Yes: new accounts get 10 trial calls and up to $1 in free credit, no card required. That's enough to try Veo 3 Fast against your real workload before adding a payment method.
What is Veo 3 Fast best at?
Faster, cheaper Veo 3 tier; sound-on or silent output at separate rates; native audio, 720p/1080p, 4-8 seconds. See the About section for the full picture from the vendor's own release notes.
How much does Veo 3 Fast cost?
Veo 3 Fast costs $0.15 per second of generated video on Synthorai. Only successful generations are billed: pay-as-you-go, no platform markup, no subscription.
How do I generate videos with the Veo 3 Fast API?
POST to /v1/videos on Synthorai with model="veo-3.0-fast-generate-001" to create an asynchronous job, then poll the task (or hold the request open with a Prefer: wait header) until the video URL is ready. No vendor SDK is needed.
How do I get access to Veo 3 Fast?
Point your existing OpenAI SDK at base_url="https://synthorai.io/v1", set model="veo-3.0-fast-generate-001", and you're done. One API key covers every model on the gateway.
Related models
Compare
Every value on this page is transcribed from the vendor's own documentation, linked above, and carries the date it was checked. Prices are compared across the catalogue; specification values that vendors define differently are shown with the difference stated rather than charted. Nothing here is measured by us, and nothing is scored.