Veo 3.1
Veo 3.1 Videoclips über eine Aufgaben-API erzeugen: drei Modelle mit Preis pro 8-Sekunden-Clip und zwei mit Preis pro Sekunde, mit Frames, Audio und GIF-Ausgabe.
Veo 3.1 ist das Videogenerierungsmodell von Google. SeedRouter bietet es als fünf Modell-IDs an einem Endpunkt an: drei mit Abrechnung pro Clip, jeder Clip 8 Sekunden lang, und zwei mit Abrechnung pro Sekunde und mehr Einstellungen (Dauer, Audio, Seed, negativer Prompt, erster und letzter Frame). Sende die Anfrage, behalte die zurückgegebene Aufgaben-ID und lies das fertige Video aus der Aufgabe. Bilder werden als URLs übergeben.
Modell-IDs
| Modell-ID | Abrechnung | Länge | Bilder | Audio |
|---|---|---|---|---|
veo-3.1-fast | pro Clip | 8 Sekunden | bis zu 3, Frame- oder Referenzmodus | kein Schalter |
veo-3.1-quality | pro Clip | 8 Sekunden | bis zu 3, Frame-Modus | kein Schalter |
veo-3.1-lite | pro Clip | 8 Sekunden | keine (Text zu Video) | kein Schalter |
veo-3.1-fast-official | pro Sekunde | 4, 6 oder 8 Sekunden | erster und letzter Frame | generate_audio |
veo-3.1-quality-official | pro Sekunde | 4, 6 oder 8 Sekunden | erster und letzter Frame | generate_audio |
Aktuelle Preise findest du auf der Modellseite.
Kurzbeispiel
curl https://api.seedrouter.ai/v1/videos/generations \
-H "Authorization: Bearer $SEEDROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "veo-3.1-fast",
"prompt": "A red paper boat drifts across a calm pond at sunrise, soft mist on the water, slow push-in on a 35mm lens, no text, no logos.",
"resolution": "720p",
"aspect_ratio": "16:9"
}'Endpunkt
POST https://api.seedrouter.ai/v1/videos/generations| Header | Wert |
|---|---|
| Authorization | Bearer YOUR_API_KEY |
| Content-Type | application/json |
Die Antwort ist eine Aufgabe ({"id": "task_...", "status": "processing"}), nicht das fertige Video. Frag GET /v1/tasks/{task_id} ab, um das Ergebnis zu erhalten. Bewahre API-Schlüssel in serverseitigem Code auf.
Parameter: Modelle pro Clip
veo-3.1-fast, veo-3.1-quality und veo-3.1-lite.
| Feld | Typ | Standardwert | Hinweise |
|---|---|---|---|
model | string | Pflicht | Eine der drei IDs oben. |
prompt | string | Pflicht | Beschreibt die Einstellung. |
duration | integer | 8 | Nur 8 wird akzeptiert. |
aspect_ratio | enum | 16:9 oder 9:16. | |
resolution | enum | 720p | 720p, 1080p oder 4k (Groß-/Kleinschreibung egal). veo-3.1-lite hat kein 4k. |
enable_gif | boolean | false | Den Clip als animiertes GIF statt als MP4 zurückgeben. Nur 720p. |
nsfw_check | boolean | false | Prompt und Bilder vor der Generierung auf unsichere Inhalte prüfen. |
image_urls | array | Nur Fast und Quality. Bis zu 3 öffentliche Bild-URLs. | |
generation_type | enum | je nach Bildanzahl | Nur Fast und Quality. frame oder reference; Quality nimmt nur frame. |
Parameter: Modelle pro Sekunde
veo-3.1-fast-official und veo-3.1-quality-official.
| Feld | Typ | Standardwert | Hinweise |
|---|---|---|---|
model | string | Pflicht | Eine der zwei IDs oben. |
prompt | string | Pflicht | Beschreibt die Einstellung. |
negative_prompt | string | Was nicht in den Clip soll. | |
duration | integer | 8 | 4, 6 oder 8 Sekunden. |
aspect_ratio | enum | 16:9 | 16:9 oder 9:16. |
resolution | enum | 720p | 720p, 1080p oder 4k (Groß-/Kleinschreibung egal). |
first_frame_image | string | Öffentliche Bild-URL. Der Clip beginnt damit. | |
last_frame_image | string | Öffentliche Bild-URL. Erfordert first_frame_image. | |
seed | integer | zufällig | 0 bis 4294967295. |
generate_audio | boolean | false | Eine Tonspur hinzufügen. Wird zu einem höheren Tarif pro Sekunde abgerechnet. |
person_generation | enum | allow_adult | allow_adult oder disallow. |
resize_mode | enum | pad | pad oder crop. Erfordert first_frame_image. |
enhance_prompt | boolean | true | Nur true wird akzeptiert; lass das Feld sonst weg. |
nsfw_check | boolean | false | Prompt und Bilder vor der Generierung auf unsichere Inhalte prüfen. |
Das Schema ist strikt: Unbekannte Felder werden abgelehnt statt ignoriert, und jedes Modell nimmt nur seine eigenen Felder an. Callbacks sind nicht verfügbar; frag stattdessen die Aufgabe ab.
Bildmodi
Bei veo-3.1-fast und veo-3.1-quality legt generation_type fest, wie image_urls verwendet werden:
generation_type | Bilder | Wirkung |
|---|---|---|
frame | 1 oder 2 | Das erste Bild ist der erste Frame, das zweite der letzte Frame. |
reference | bis zu 3 | Die Bilder dienen als Referenzen für Motiv und Stil. Nur Fast. |
| weggelassen | 2 oder 3 | Zwei Bilder verwenden den Frame-Modus, drei den Referenzmodus. |
veo-3.1-quality unterstützt keinen Referenzmodus und lehnt daher generation_type: "reference" sowie drei Bilder ohne generation_type ab. veo-3.1-lite nimmt keine Bilder an.
Bei den Modellen pro Sekunde setzt du first_frame_image und optional last_frame_image. resize_mode bestimmt, ob ein Bild mit anderem Format aufgefüllt oder zugeschnitten wird.
Medieneingaben
Bilder sind öffentliche HTTP(S)-URLs:
{ "image_urls": ["https://example.com/first.jpg", "https://example.com/last.jpg"] }Bei den Modellen pro Clip ist jedes Bild JPEG, PNG oder WebP und höchstens 10 MB groß; eine Datei, die gegen diese Regeln verstößt, lässt die Aufgabe ohne Berechnung fehlschlagen. Base64-Daten werden nicht akzeptiert: Lade die Datei in deinen eigenen Speicher hoch und übergib ihre URL.
Kostenfaktoren
Die aktuellen Tarife findest du im Preisabschnitt des Modells.
per-clip models: cost = price of one clip at the output resolution (720p and 1080p cost the same)
per-second models: cost = duration × rate for the resolution and audio settingDer Betrag wird bei der Annahme der Anfrage festgelegt, sodass der reservierte Betrag dem berechneten entspricht. Die endgültigen Kosten siehst du im Nutzungsverlauf deines Kontos. Fehlgeschlagene Aufgaben werden nicht berechnet.
Ausgabeschema
Beim Senden wird die Aufgabe zurückgegeben:
{"id": "task_...", "model": "veo-3.1-fast", "status": "processing", "created_at": 1789689600}Aufgabe abrufen
GET https://api.seedrouter.ai/v1/tasks/{task_id}Frag alle 10–20 Sekunden ab, bis status den Wert completed oder failed hat. Eine Zeitüberschreitung des Netzwerks während der Abfrage bedeutet nicht, dass die Erzeugung fehlgeschlagen ist: Behalte die Aufgaben-ID und setze die Prüfung fort. Erstelle keine weitere Aufgabe, um den Fortschritt zu prüfen.
Abgeschlossene Aufgabe
{
"id": "task_...",
"model": "veo-3.1-fast",
"status": "completed",
"created_at": 1789689600,
"finished_at": 1789689720,
"output": {
"video_url": "https://static.seedrouter.ai/media/tasks/task_example/0.mp4"
}
}video_url ist ein MP4 oder ein GIF, wenn die Anfrage enable_gif gesetzt hat. Der Link liegt auf dem Speicher von SeedRouter.
Was unsere Testläufe zurückgegeben haben (je ein Lauf, 2026-10-04):
| Anfrage | Datei |
|---|---|
veo-3.1-fast, 9:16, Frame-Modus | MP4, H.264, 720 × 1280, 24 fps, 8 s, mit einer Stereo-AAC-Tonspur |
veo-3.1-fast-official, 16:9, 720p, 4 s, ohne generate_audio | MP4, H.264, 1280 × 720, 24 fps, 4 s, ohne Tonspur |
veo-3.1-lite, enable_gif | GIF, 480 × 270, 16 fps, 8 s |
Die Modelle pro Clip haben keinen Audio-Schalter; die Modelle pro Sekunde fügen nur mit generate_audio eine Tonspur hinzu.
Fehler
Anfragen, die vor der Erstellung einer Aufgabe abgelehnt werden, geben einen HTTP-Fehler mit einem error-Objekt zurück und werden nicht berechnet. Eine Aufgabe, die nach der Annahme fehlschlägt, gibt bei der Abfrage HTTP 200 zurück, zusammen mit status: "failed" und einem error-Objekt.
Codes, HTTP-Status und Hinweise zu Wiederholungen findest du im gemeinsamen Fehlerkatalog.
{
"id": "task_...",
"model": "veo-3.1-fast",
"status": "failed",
"error": {
"code": 60001,
"message": "The request was rejected by the content policy. Please revise the prompt or input images."
}
}Kommt es beim Senden selbst zu einer Zeitüberschreitung, prüfe deine Aufgaben, bevor du erneut sendest: Die erste Anfrage wurde möglicherweise bereits angenommen.
Tipps
- Beginne mit
veo-3.1-liteoderveo-3.1-fastin 720p, um einen Prompt auszuprobieren, und wechsle für das finale Rendering zu Quality oder 4k. - Nenne Kamera und Licht: Ein Objektiv und eine Kamerabewegung verändern die Einstellung stärker als Adjektive.
- Füge
no text, no logoshinzu, um erfundene Schriftzüge und Zeichen aus dem Bild fernzuhalten. - Für eine Einstellung, die mit bekannten Bildern beginnen und enden muss, verwende den Frame-Modus mit zwei Bildern oder die Modelle pro Sekunde mit
first_frame_imageundlast_frame_image. - Leg
seedbei den Modellen pro Sekunde fest und ändere jeweils nur einen Satzteil, um eine Einstellung schrittweise zu verbessern.
