Veo 3.1
Prezzi di listino del provider: senza ricarico della piattaforma, pagamento a consumo. Questi sono i prezzi di listino ufficiali. I clienti autenticati possono vedere i prezzi effettivi, inclusi gli sconti workspace, su /console/pricing.
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
Veo 3.1 è l'attuale modello di punta di generazione video di Google, il più recente della linea Veo.
- 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 o 1080p, 24 fps, di 4, 6 o 8 secondi, in 16:9 o 9:16, e un interruttore generateAudio sceglie tra output sonoro e silenzioso.
- Veo 3.1 affina la sincronizzazione audio-video e la fedeltà all'immagine di riferimento rispetto a Veo 3.
- Synthorai lo serve tramite l'API di job asincrona /v1/videos — crea un task, poi interrogalo (o tieni aperta la chiamata con Prefer: wait) finché l'URL firmato del video è pronto — e fattura al secondo di output a tariffe separate per sonoro e silenzioso.
Specifiche e limiti
| Modalità | text + image → video |
| Funzionalità | vision |
| Risoluzione | 720p / 1080p |
| Durata clip | 4 / 6 / 8 s |
| Frame rate | 24 fps |
| Proporzioni | 16:9 · 9:16 |
| Input video | text-to-video · first-frame & first/last-frame image-to-video (up to 2 guide images) |
| Audio nativo | Sì — genera audio |
| Formato | .mp4 |
| Da notare | Google's Veo 3.1 video model, the current flagship of the Veo line: text-to-video, first-frame image-to-video, and first-and-last-frame interpolation (up to two guide images), all with native synchronized audio (dialogue, ambient sound, music); 720p/1080p, 24 fps, 4/6/8 s, 16:9 and 9:16; a generateAudio switch selects sound-on vs silent output. Veo 3.1 sharpens audio-visual sync and reference-image adherence over Veo 3. Synthorai serves it via the async /v1/videos job API — create a task, then poll it (or hold the request open with Prefer: wait) until the signed video URL is ready — and bills per output second at separate sound-on and silent rates. |
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, oltre a image-to-video primo/ultimo fotogramma, fino a due guide e 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.