Veo 3.1
Genera clip video con Veo 3.1 tramite un'unica API basata su attività: tre modelli con prezzo per clip di 8 secondi e due con prezzo al secondo, con fotogrammi, audio e output GIF.
Veo 3.1 è il modello di generazione video di Google. SeedRouter lo offre con cinque ID modello su un unico endpoint: tre con prezzo per clip, ogni clip lunga 8 secondi, e due con prezzo al secondo e più controlli (durata, audio, seed, prompt negativo, primo e ultimo fotogramma). Invia la richiesta, conserva l'ID attività restituito e leggi il video finito dall'attività. Le immagini vengono passate come URL.
ID modello
| ID modello | Fatturazione | Durata | Immagini | Audio |
|---|---|---|---|---|
veo-3.1-fast | per clip | 8 secondi | fino a 3, modalità frame o reference | nessun interruttore |
veo-3.1-quality | per clip | 8 secondi | fino a 3, modalità frame | nessun interruttore |
veo-3.1-lite | per clip | 8 secondi | nessuna (da testo a video) | nessun interruttore |
veo-3.1-fast-official | al secondo | 4, 6 o 8 secondi | primo e ultimo fotogramma | generate_audio |
veo-3.1-quality-official | al secondo | 4, 6 o 8 secondi | primo e ultimo fotogramma | generate_audio |
Consulta la pagina del modello per i prezzi attuali.
Esempio rapido
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"
}'Endpoint
POST https://api.seedrouter.ai/v1/videos/generations| Intestazione | Valore |
|---|---|
| Authorization | Bearer YOUR_API_KEY |
| Content-Type | application/json |
La risposta è un'attività ({"id": "task_...", "status": "processing"}), non il video finito. Interroga GET /v1/tasks/{task_id} per ottenere il risultato. Conserva le chiavi API nel codice lato server.
Parametri: modelli per clip
veo-3.1-fast, veo-3.1-quality e veo-3.1-lite.
| Campo | Tipo | Predefinito | Note |
|---|---|---|---|
model | string | obbligatorio | Uno dei tre ID qui sopra. |
prompt | string | obbligatorio | Descrive l'inquadratura. |
duration | integer | 8 | È accettato solo 8. |
aspect_ratio | enum | 16:9 o 9:16. | |
resolution | enum | 720p | 720p, 1080p o 4k (maiuscole o minuscole). veo-3.1-lite non ha il 4k. |
enable_gif | boolean | false | Restituisce la clip come GIF animata invece che come MP4. Solo 720p. |
nsfw_check | boolean | false | Controlla il prompt e le immagini alla ricerca di contenuti non sicuri prima della generazione. |
image_urls | array | Solo Fast e Quality. Fino a 3 URL pubblici di immagini. | |
generation_type | enum | in base al numero di immagini | Solo Fast e Quality. frame o reference; Quality accetta solo frame. |
Parametri: modelli al secondo
veo-3.1-fast-official e veo-3.1-quality-official.
| Campo | Tipo | Predefinito | Note |
|---|---|---|---|
model | string | obbligatorio | Uno dei due ID qui sopra. |
prompt | string | obbligatorio | Descrive l'inquadratura. |
negative_prompt | string | Cosa tenere fuori dalla clip. | |
duration | integer | 8 | 4, 6 o 8 secondi. |
aspect_ratio | enum | 16:9 | 16:9 o 9:16. |
resolution | enum | 720p | 720p, 1080p o 4k (maiuscole o minuscole). |
first_frame_image | string | URL pubblico di un'immagine. La clip si apre su di essa. | |
last_frame_image | string | URL pubblico di un'immagine. Richiede first_frame_image. | |
seed | integer | casuale | Da 0 a 4294967295. |
generate_audio | boolean | false | Aggiunge una traccia audio. Fatturato a una tariffa al secondo più alta. |
person_generation | enum | allow_adult | allow_adult o disallow. |
resize_mode | enum | pad | pad o crop. Richiede first_frame_image. |
enhance_prompt | boolean | true | È accettato solo true; altrimenti ometti il campo. |
nsfw_check | boolean | false | Controlla il prompt e le immagini alla ricerca di contenuti non sicuri prima della generazione. |
Lo schema è rigoroso: i campi sconosciuti vengono rifiutati invece che ignorati, e ogni modello accetta solo i propri campi. I callback non sono disponibili; interroga invece l'attività.
Modalità delle immagini
Su veo-3.1-fast e veo-3.1-quality, generation_type stabilisce come vengono usate le image_urls:
generation_type | Immagini | Effetto |
|---|---|---|
frame | 1 o 2 | La prima immagine è il primo fotogramma, la seconda l'ultimo. |
reference | fino a 3 | Le immagini fanno da riferimento per soggetto e stile. Solo Fast. |
| omesso | 2 o 3 | Due immagini usano la modalità frame, tre la modalità reference. |
veo-3.1-quality non esegue la modalità reference, quindi rifiuta generation_type: "reference" e tre immagini senza generation_type. veo-3.1-lite non accetta immagini.
Sui modelli al secondo, imposta first_frame_image e, facoltativamente, last_frame_image. resize_mode stabilisce se un'immagine di forma diversa viene riempita o ritagliata.
Input multimediali
Le immagini sono URL HTTP(S) pubblici:
{ "image_urls": ["https://example.com/first.jpg", "https://example.com/last.jpg"] }Sui modelli per clip ogni immagine è JPEG, PNG o WebP e al massimo di 10 MB; un file che non rispetta queste regole fa fallire l'attività senza addebito. Dati in base64 non sono accettati: carica il file nel tuo storage e passa il suo URL.
Fattori di costo
Consulta la sezione prezzi del modello per le tariffe attuali.
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 settingL'addebito viene fissato quando la richiesta è accettata, quindi l'importo riservato è l'importo addebitato. Consulta gli addebiti definitivi nella cronologia di utilizzo del tuo account. Le attività fallite non vengono addebitate.
Schema di output
L'invio restituisce l'attività:
{"id": "task_...", "model": "veo-3.1-fast", "status": "processing", "created_at": 1789689600}Recuperare l'attività
GET https://api.seedrouter.ai/v1/tasks/{task_id}Interroga ogni 10–20 secondi finché status non diventa completed o failed. Un timeout di rete durante il polling non significa che la generazione sia fallita: conserva l'ID attività e riprendi il controllo. Non creare un'altra attività per verificare l'avanzamento.
Attività completata
{
"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 è un MP4, oppure una GIF quando la richiesta ha impostato enable_gif. Il link si trova sullo storage di SeedRouter.
Cosa hanno restituito le nostre esecuzioni di prova (una per ciascuna, 2026-10-04):
| Richiesta | File |
|---|---|
veo-3.1-fast, 9:16, modalità frame | MP4, H.264, 720 × 1280, 24 fps, 8 s, con una traccia audio AAC stereo |
veo-3.1-fast-official, 16:9, 720p, 4 s, senza generate_audio | MP4, H.264, 1280 × 720, 24 fps, 4 s, senza traccia audio |
veo-3.1-lite, enable_gif | GIF, 480 × 270, 16 fps, 8 s |
I modelli per clip non hanno un interruttore per l'audio; i modelli al secondo aggiungono una traccia audio solo con generate_audio.
Errori
Le richieste rifiutate prima della creazione di un'attività restituiscono un errore HTTP con un oggetto error e non vengono addebitate. Un'attività che fallisce dopo l'accettazione restituisce HTTP 200 quando viene interrogata, con status: "failed" e un oggetto error.
Vedi il catalogo errori comune per codici, stati HTTP e indicazioni sui tentativi.
{
"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."
}
}Se l'invio stesso va in timeout, controlla le tue attività prima di inviare di nuovo: la prima richiesta potrebbe essere stata accettata.
Suggerimenti
- Inizia con
veo-3.1-liteoveo-3.1-fasta 720p per provare un prompt, poi passa a Quality o al 4k per il render finale. - Indica la camera e la luce: un obiettivo e un movimento di camera cambiano l'inquadratura più degli aggettivi.
- Aggiungi
no text, no logosper tenere fuori dall'inquadratura scritte e marchi inventati. - Per un'inquadratura che deve iniziare e finire su immagini note, usa la modalità frame con due immagini, oppure i modelli al secondo con
first_frame_imageelast_frame_image. - Fissa
seedsui modelli al secondo e cambia una sola frase alla volta per perfezionare un'inquadratura.
