Veo 3.1 è l'attuale modello di punta di generazione video di Google, il più recente della linea Veo.
- Input
- testo immagine
- Output
- video
- Prezzo
- $0.4/s
Benchmark
Veo 3.1: 12 pubblicati, ma nessun benchmark condiviso con abbastanza modelli per confrontare.
Dati pubblicati dai fornitori: ByteDance
Il prezzo nel contesto
Posizione del prezzo tra 5 modelli comparabili
La barra mostra dove si colloca il prezzo di questo modello tra tutti i modelli dello stesso tipo su Synthorai. Alle due estremità sono indicati il più economico e il più caro. Sono tariffe base; gli sconti per batch, regione e scrittura in cache sono nella pagina dei prezzi.
Specifiche e limiti
Video
| Risoluzione | 720p / 1080p Un insieme fisso di opzioni, non un intervallo. |
|---|---|
| Durata clip | 4 / 6 / 8 s Un insieme fisso di opzioni, non un intervallo. |
| Frame rate | 24 fps |
| Proporzioni | 16:9 · 9:16 |
| Input video | text-to-video · image-to-video con primo fotogramma e con primo/ultimo fotogramma (fino a 2 immagini guida) |
| Audio nativo | Sì, genera audio |
| Formato | .mp4 |
Modello
| Modalità | testo + immagine → video |
|---|
- Il modello video Veo 3.1 di Google, l'attuale flagship della linea Veo: text-to-video, image-to-video con primo fotogramma e interpolazione tra primo e ultimo fotogramma (fino a due immagini guida), tutti con audio sincronizzato nativo (dialoghi, suoni ambientali, musica)
- 720p/1080p, 24 fps, 4/6/8 s, 16:9 e 9:16
- un interruttore generateAudio seleziona l'output con audio o muto. Veo 3.1 affina la sincronizzazione audio-video e l'aderenza alle immagini di riferimento rispetto a Veo 3. Synthorai lo serve tramite l'API di job asincrona /v1/videos (crea un task, poi interrogalo, oppure tieni aperta la richiesta con Prefer: wait, finché l'URL firmato del video non è pronto) e lo fattura per secondo di output a tariffe distinte per output con audio e muto
Un solo prompt, misurato attraverso il gateway
Veo 3.1
Restituito dal modello 1280×720 Durata 8s latenza 63 s
Un prompt, una richiesta per modello, nessun nuovo tentativo e nessun cherry-picking - il primo risultato restituito da ciascun modello. Né le dimensioni né la durata sono state fissate: ogni modello ha utilizzato il proprio default, perché una richiesta modellata per adattarsi a tutti non renderebbe giustizia a nessuno. I file qui sono stati ricodificati per il web, quindi valutate la composizione e l'aderenza al prompt, non la compressione.
Usa Veo 3.1 in 30 secondi
API di job asincrona: crea un task e interrogalo, oppure tieni aperta la richiesta con 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.1-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.1-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.1-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.1-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.1-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).Informazioni su Veo 3.1
- Genera clip .mp4 da un prompt testuale, da un'immagine di primo fotogramma o come interpolazione primo-e-ultimo fotogramma tra due immagini guida, tutte con audio nativo sincronizzato: dialogo con sincronizzazione labiale, suono ambientale e musica.
- L'output è in 720p, 1080p o 4K, 24 fps, di 4, 6 o 8 secondi, in 16:9 o 9:16, e un interruttore generateAudio seleziona output sonoro o silenzioso.
- Oltre a Veo 3 aggiunge fino a tre immagini di riferimento degli asset per portare un personaggio, un prodotto o un luogo attraverso più inquadrature, con le clip guidate da riferimento fissate a 8 secondi, e l'estensione video, che prende una clip esistente da 1 a 30 secondi e la prosegue di 7 secondi per chiamata, così le sequenze più lunghe si costruiscono per concatenamento anziché chiedendo una generazione più lunga.
- Google ha anche quintuplicato la quota di richieste per questa generazione.
- Le richieste accettano fino a quattro video per chiamata, un seed, un prompt negativo, la selezione del movimento di camera e compressione ottimizzata o lossless, con le Content Credentials incorporate nell'output.
- Synthorai lo serve tramite l'API di job asincrona /v1/videos e fattura al secondo di output, con tariffe separate per le generazioni sonore e silenziose.
- Crea un task, poi interrogalo (o tieni aperta la richiesta con Prefer: wait) finché l'URL firmato del video non è pronto.
FAQ
L'API di Veo 3.1 si può provare gratis?
Sì: i nuovi account ricevono 10 chiamate di prova e fino a $1 di credito gratuito, senza carta richiesta. Abbastanza per provare Veo 3.1 sul tuo carico di lavoro reale prima di aggiungere un metodo di pagamento.
In cosa eccelle Veo 3.1?
Attuale punta di diamante Veo con audio nativo; image-to-video primo/ultimo fotogramma, fino a due guide; output sonoro o silenzioso a tariffe separate. Il quadro completo è nella sezione «Informazioni», tratto dalle note di rilascio ufficiali del vendor.
Quanto costa Veo 3.1?
Su Synthorai, Veo 3.1 costa $0.4 al secondo di video generato. Vengono addebitate solo le generazioni riuscite: pagamento a consumo, senza ricarico della piattaforma, senza abbonamento.
Come genero video con l'API di Veo 3.1?
Invia una POST a /v1/videos su Synthorai con model="veo-3.1-generate-001" per creare un job asincrono, poi interroga il task (o tieni aperta la richiesta con l'header Prefer: wait) finché l'URL del video non è pronto. Non serve alcun SDK del vendor.
Come ottengo l'accesso a Veo 3.1?
Punta il tuo SDK OpenAI esistente a base_url="https://synthorai.io/v1", imposta model="veo-3.1-generate-001" e hai finito: una sola chiave API copre tutti i modelli del gateway.
Modelli correlati
Confronta
Ogni valore di questa pagina è trascritto dalla documentazione del fornitore, collegata sopra, e riporta la data in cui è stato verificato. I prezzi sono confrontati sull'intero catalogo; i valori di specifica che i fornitori definiscono in modo diverso sono mostrati indicando la differenza anziché messi a grafico. Nulla qui è misurato da noi e nulla è valutato con un punteggio.