Veo 2 ist Googles älteres, allgemein verfügbares Videomodell, angekündigt im Dezember 2024, bevor native Audio zur Veo-Linie kam.
- Eingabe
- Text Bild
- Ausgabe
- Video
- Preis
- $0.5/s
Preis im Vergleich
Preisposition unter 5 vergleichbaren Modellen
Der Balken zeigt, wo der Preis dieses Modells unter allen Modellen derselben Art auf Synthorai liegt. An beiden Enden stehen das günstigste und das teuerste Modell. Es sind Grundpreise; Rabatte für Batch, Region und Cache-Schreibvorgänge stehen auf der Preisseite.
Spezifikationen & Limits
Video
| Auflösung | 720p |
|---|---|
| Cliplänge | 5-8 s Ein durchgehender Bereich, keine feste Auswahl. |
| Bildrate | 24 fps |
| Seitenverhältnisse | 16:9 · 9:16 |
| Video-Eingaben | Text-to-Video · First-Frame-Image-to-Video (Einzelbild) |
| Format | .mp4 |
Modell
| Modalitäten | Text + Bild → Video |
|---|
- Googles Legacy-Videomodell Veo 2 in GA (angekündigt im Dezember 2024, bevor natives Audio zur Veo-Reihe kam): nur stummer 720p-Output, Text-to-Video sowie First-Frame-Image-to-Video mit einem Bild, 24 fps, 5-8 s, 16:9 und 9:16
- keine Audiospur und keine Last-Frame- oder Referenzbild-Eingabe (diese kommen mit den Veo-3.x-Generationen). Google führt inzwischen Veo 3.1 als empfohlenen Ersatz. Synthorai stellt es über die asynchrone /v1/videos-Job-API bereit und rechnet pro Output-Sekunde ab (Upstream gibt keine Nutzungsdaten zurück, die Dauer wird daher aus der Anfrage ermittelt)
Veo 2 in 30 Sekunden nutzen
Asynchrone Job-API: Task anlegen und per Polling abfragen, oder die Anfrage mit Prefer: wait offen halten. 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-2.0-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-2.0-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-2.0-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-2.0-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-2.0-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).Über Veo 2
- Es generiert stumme .mp4-Clips aus einem Textprompt oder einem einzelnen First-Frame-Bild in 720p, 24 fps, 5 bis 8 Sekunden lang, in 16:9 oder 9:16, und es ist das einzige Veo, dessen Dauer ein durchgehender Bereich ist statt der festen 4, 6 oder 8 Sekunden der späteren Generationen.
- Es liegt außerdem vor der Videoverlängerung, die mit Veo 3.1 kommt, und es ist das eine Modell der Reihe, dessen Prompt-Rewriter sich abschalten lässt, sodass Prompts das Modell genau so erreichen, wie sie geschrieben sind, statt zuerst erweitert zu werden.
- Die gemeinsamen Request-Steuerungen gelten: bis zu vier Videos pro Aufruf, ein Seed für Reproduzierbarkeit, ein negativer Prompt, die Auswahl der Kamerabewegung für bildgetriebene Clips, die Wahl zwischen Padding und Zuschneiden, wenn das Seitenverhältnis der Eingabe nicht passt, sowie optimierte oder verlustfreie Kompression, mit Content Credentials in der Ausgabe.
- Google nennt inzwischen Veo 3.1 als empfohlenen Ersatz, doch Veo 2 bleibt für bestehende Workflows und kostensensible stumme Ausgabe verfügbar.
- Synthorai stellt es über die asynchrone /v1/videos Job-API bereit und rechnet pro Ausgabesekunde ab (die Upstream-API liefert keine Usage, daher wird die Dauer aus der Anfrage ermittelt).
- Task anlegen und per Polling abfragen, oder für kurze Jobs Prefer: wait nutzen.
FAQ
Lässt sich die Veo 2 API kostenlos testen?
Ja, neue Konten erhalten 10 Test-Calls und bis zu $1 kostenloses Guthaben, keine Kreditkarte erforderlich. Das reicht, um Veo 2 mit Ihrem realen Workload auszuprobieren, bevor Sie eine Zahlungsmethode hinterlegen.
Worin ist Veo 2 am besten?
Älteres GA-Modell, stumme 720p-Ausgabe; Text- und Einzelbild-to-Video; 5-8 Sekunden bei 24 fps. Das vollständige Bild finden Sie im Über-Abschnitt, direkt aus den offiziellen Release Notes des Anbieters.
Was kostet Veo 2?
Veo 2 kostet auf Synthorai $0.5 pro Sekunde generiertem Video. Abgerechnet werden nur erfolgreiche Generierungen: nutzungsbasierte Abrechnung, ohne Plattform-Aufschlag, ohne Abo.
Wie generiere ich Videos mit der Veo 2 API?
Senden Sie einen POST an /v1/videos auf Synthorai mit model="veo-2.0-generate-001", um einen asynchronen Job anzulegen, und fragen Sie den Task dann per Polling ab (oder halten Sie die Anfrage mit dem Header Prefer: wait offen), bis die Video-URL bereitsteht. Kein Vendor-SDK nötig.
Wie erhalte ich Zugang zu Veo 2?
Richten Sie Ihr vorhandenes OpenAI SDK auf base_url="https://synthorai.io/v1", setzen Sie model="veo-2.0-generate-001", fertig. Ein API-Key deckt jedes Modell auf dem Gateway ab.
Verwandte Modelle
Vergleichen
Jeder Wert auf dieser Seite ist aus der Dokumentation des Anbieters übernommen, oben verlinkt, und trägt das Datum der Prüfung. Preise werden über den gesamten Katalog verglichen; Spezifikationswerte, die Anbieter unterschiedlich definieren, werden mit benanntem Unterschied gezeigt statt grafisch verglichen. Nichts hier wird von uns gemessen, und nichts wird bewertet.