Veo 3.1
Générez des clips vidéo Veo 3.1 via une seule API de tâches : trois modèles facturés par clip de 8 secondes et deux à la seconde, avec images clés, audio et sortie GIF.
Veo 3.1 est le modèle de génération vidéo de Google. SeedRouter le propose sous cinq ID de modèle sur un seul point de terminaison : trois facturés au clip, chaque clip durant 8 secondes, et deux facturés à la seconde avec davantage de réglages (durée, audio, seed, prompt négatif, première et dernière image). Envoyez la requête, conservez l'identifiant de tâche renvoyé et récupérez la vidéo terminée dans la tâche. Les images sont transmises sous forme d'URL.
ID de modèle
| ID de modèle | Facturation | Durée | Images | Audio |
|---|---|---|---|---|
veo-3.1-fast | au clip | 8 secondes | jusqu'à 3, mode images clés ou références | pas d'option |
veo-3.1-quality | au clip | 8 secondes | jusqu'à 3, mode images clés | pas d'option |
veo-3.1-lite | au clip | 8 secondes | aucune (texte vers vidéo) | pas d'option |
veo-3.1-fast-official | à la seconde | 4, 6 ou 8 secondes | première et dernière image | generate_audio |
veo-3.1-quality-official | à la seconde | 4, 6 ou 8 secondes | première et dernière image | generate_audio |
Consultez la page du modèle pour les prix actuels.
Exemple rapide
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"
}'Point de terminaison
POST https://api.seedrouter.ai/v1/videos/generations| En-tête | Valeur |
|---|---|
| Authorization | Bearer YOUR_API_KEY |
| Content-Type | application/json |
La réponse est une tâche ({"id": "task_...", "status": "processing"}), pas la vidéo terminée. Interrogez GET /v1/tasks/{task_id} pour obtenir le résultat. Conservez les clés API dans du code côté serveur.
Paramètres : modèles au clip
veo-3.1-fast, veo-3.1-quality et veo-3.1-lite.
| Champ | Type | Défaut | Remarques |
|---|---|---|---|
model | string | obligatoire | L'un des trois ID ci-dessus. |
prompt | string | obligatoire | Décrit le plan. |
duration | integer | 8 | Seul 8 est accepté. |
aspect_ratio | enum | 16:9 ou 9:16. | |
resolution | enum | 720p | 720p, 1080p ou 4k (casse indifférente). veo-3.1-lite n'a pas de 4k. |
enable_gif | boolean | false | Renvoie le clip en GIF animé au lieu d'un MP4. 720p uniquement. |
nsfw_check | boolean | false | Vérifie le prompt et les images à la recherche de contenu inapproprié avant la génération. |
image_urls | array | Fast et Quality uniquement. Jusqu'à 3 URL d'images publiques. | |
generation_type | enum | selon le nombre d'images | Fast et Quality uniquement. frame ou reference ; Quality accepte uniquement frame. |
Paramètres : modèles à la seconde
veo-3.1-fast-official et veo-3.1-quality-official.
| Champ | Type | Défaut | Remarques |
|---|---|---|---|
model | string | obligatoire | L'un des deux ID ci-dessus. |
prompt | string | obligatoire | Décrit le plan. |
negative_prompt | string | Ce qui doit rester hors du clip. | |
duration | integer | 8 | 4, 6 ou 8 secondes. |
aspect_ratio | enum | 16:9 | 16:9 ou 9:16. |
resolution | enum | 720p | 720p, 1080p ou 4k (casse indifférente). |
first_frame_image | string | URL d'image publique. Le clip commence sur cette image. | |
last_frame_image | string | URL d'image publique. Nécessite first_frame_image. | |
seed | integer | aléatoire | De 0 à 4294967295. |
generate_audio | boolean | false | Ajoute une piste audio. Facturé à un tarif à la seconde plus élevé. |
person_generation | enum | allow_adult | allow_adult ou disallow. |
resize_mode | enum | pad | pad ou crop. Nécessite first_frame_image. |
enhance_prompt | boolean | true | Seul true est accepté ; sinon, omettez le champ. |
nsfw_check | boolean | false | Vérifie le prompt et les images à la recherche de contenu inapproprié avant la génération. |
Le schéma est strict : les champs inconnus sont rejetés au lieu d'être ignorés, et chaque modèle n'accepte que ses propres champs. Les callbacks ne sont pas disponibles ; interrogez plutôt la tâche.
Modes image
Sur veo-3.1-fast et veo-3.1-quality, generation_type détermine l'usage des image_urls :
generation_type | Images | Effet |
|---|---|---|
frame | 1 ou 2 | La première image est la première image du clip, la deuxième la dernière. |
reference | jusqu'à 3 | Les images servent de références pour le sujet et le style. Fast uniquement. |
| omis | 2 ou 3 | Deux images utilisent le mode images clés, trois le mode références. |
veo-3.1-quality ne gère pas le mode références : il refuse donc generation_type: "reference" ainsi que trois images sans generation_type. veo-3.1-lite n'accepte aucune image.
Sur les modèles à la seconde, définissez first_frame_image et, si vous le souhaitez, last_frame_image. resize_mode choisit si une image d'un autre format est complétée par des bandes ou recadrée.
Entrées média
Les images sont des URL HTTP(S) publiques :
{ "image_urls": ["https://example.com/first.jpg", "https://example.com/last.jpg"] }Sur les modèles au clip, chaque image est au format JPEG, PNG ou WebP et pèse au maximum 10 Mo ; un fichier qui ne respecte pas ces règles fait échouer la tâche sans facturation. Les données en base64 ne sont pas acceptées : téléversez le fichier sur votre propre stockage et transmettez son URL.
Facteurs de coût
Consultez la section des prix du modèle pour les tarifs actuels.
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 settingLe montant est fixé à l'acceptation de la requête : le montant réservé est donc le montant facturé. Consultez les montants finaux dans l'historique d'utilisation de votre compte. Les tâches échouées ne sont pas facturées.
Schéma de sortie
L'envoi renvoie la tâche :
{"id": "task_...", "model": "veo-3.1-fast", "status": "processing", "created_at": 1789689600}Récupérer la tâche
GET https://api.seedrouter.ai/v1/tasks/{task_id}Interrogez toutes les 10 à 20 secondes jusqu'à ce que status vaille completed ou failed. Un dépassement de délai réseau pendant l'interrogation ne signifie pas que la génération a échoué : conservez l'identifiant de tâche et reprenez la vérification. Ne créez pas une autre tâche pour vérifier l'avancement.
Tâche terminée
{
"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 est un MP4, ou un GIF si la requête a défini enable_gif. Le lien pointe vers le stockage de SeedRouter.
Ce que nos tests ont renvoyé (un essai chacun, 2026-10-04) :
| Requête | Fichier |
|---|---|
veo-3.1-fast, 9:16, mode images clés | MP4, H.264, 720 × 1280, 24 fps, 8 s, avec une piste audio AAC stéréo |
veo-3.1-fast-official, 16:9, 720p, 4 s, sans generate_audio | MP4, H.264, 1280 × 720, 24 fps, 4 s, sans piste audio |
veo-3.1-lite, enable_gif | GIF, 480 × 270, 16 fps, 8 s |
Les modèles au clip n'ont pas d'option audio ; les modèles à la seconde n'ajoutent une piste audio qu'avec generate_audio.
Erreurs
Les requêtes rejetées avant la création d'une tâche renvoient une erreur HTTP avec un objet error et ne sont pas facturées. Une tâche qui échoue après acceptation renvoie HTTP 200 lorsqu'on l'interroge, avec status: "failed" et un objet error.
Voir le catalogue d'erreurs commun pour les codes, les statuts HTTP et les conseils de reprise.
{
"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."
}
}Si l'envoi lui-même dépasse le délai, vérifiez vos tâches avant de renvoyer : la première requête a peut-être été acceptée.
Conseils
- Commencez avec
veo-3.1-liteouveo-3.1-fasten 720p pour tester un prompt, puis passez à Quality ou à la 4k pour le rendu final. - Nommez la caméra et la lumière : un objectif et un mouvement de caméra changent davantage le plan que des adjectifs.
- Ajoutez
no text, no logospour éviter les lettrages et marques inventés dans le cadre. - Pour un plan qui doit commencer et finir sur des images connues, utilisez le mode images clés avec deux images, ou les modèles à la seconde avec
first_frame_imageetlast_frame_image. - Fixez
seedsur les modèles à la seconde et modifiez une seule proposition à la fois pour faire évoluer un plan.
