Veo 3 es el modelo de generación de vídeo de Google y la generación que introdujo el audio nativo sincronizado en la línea Veo.
- Entrada
- texto imagen
- Salida
- vídeo
- Precio
- $0.75/s
El precio en contexto
Posición del precio entre 5 modelos comparables
La barra muestra dónde queda el precio de este modelo entre todos los modelos del mismo tipo en Synthorai. En cada extremo se nombra el más barato y el más caro. Son tarifas base; los descuentos por lote, región y escritura en caché están en la página de precios.
Especificaciones y límites
Vídeo
| Resolución | 720p / 1080p Un conjunto fijo de opciones, no un rango. |
|---|---|
| Duración del clip | 4 / 6 / 8 s Un conjunto fijo de opciones, no un rango. |
| Fotogramas por segundo | 24 fps |
| Relaciones de aspecto | 16:9 · 9:16 |
| Entradas de vídeo | texto a vídeo · imagen a vídeo con primer fotograma |
| Audio nativo | Sí, genera sonido |
| Formato | .mp4 |
Modelo
| Modalidades | texto + imagen → vídeo |
|---|
- Modelo de vídeo Veo 3 de Google, la generación que introdujo el audio sincronizado nativo en la línea Veo: texto a vídeo e imagen a vídeo con primer fotograma, 720p/1080p, 24 fps, 4/6/8 s, 16:9 y 9:16
- un interruptor generateAudio selecciona salida con sonido o muda. La interpolación de primer y último fotograma y las imágenes de referencia llegan con Veo 3.1, que Google indica ahora como sucesor recomendado. Synthorai lo sirve mediante la API asíncrona de trabajos /v1/videos y lo factura por segundo de salida con tarifas distintas para salida con sonido y muda
Usa Veo 3 en 30 segundos
API asíncrona de tareas: crea una tarea y consulta su estado, o mantén la solicitud abierta 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.0-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.0-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.0-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.0-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.0-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).Acerca de Veo 3
- Trabaja a partir de un prompt de texto o de una imagen de primer fotograma, produciendo clips .mp4 en 720p o 1080p a 24 fps, de 4, 6 u 8 segundos, en 16:9 o 9:16, con diálogo, efectos de sonido y audio ambiente generados junto al vídeo.
- Un interruptor generateAudio selecciona salida con sonido o silenciosa.
- La duración pasa del rango continuo de 5 a 8 segundos de Veo 2 a tres valores fijos aquí, y cuatro capacidades que definen a Veo 3.1 sencillamente no están en esta generación: la interpolación de primer y último fotograma, las imágenes de referencia de activos, la extensión de vídeo y la salida en 4K.
- Google indica ahora Veo 3.1 como el sucesor recomendado, y la línea 3.0 lleva además una cuota de solicitudes cinco veces menor.
- Las solicitudes aceptan hasta cuatro vídeos por llamada, una semilla, un prompt negativo, control de movimiento de cámara para los clips dirigidos por imagen, un modo de redimensionado con relleno o recorte, y compresión optimizada o sin pérdidas y, a diferencia de Veo 2, el reescritor de prompts no puede desactivarse, así que hay que contar con que los prompts escuetos se expandan antes de la generación.
- La salida lleva Content Credentials.
- Synthorai lo sirve mediante la API asíncrona de jobs /v1/videos y factura por segundo de salida a tarifas separadas para sonido y silencio.
- Crea una tarea y luego consúltala o mantén la llamada abierta con Prefer: wait.
Preguntas frecuentes
¿Se puede probar gratis la API de Veo 3?
Sí: las cuentas nuevas reciben 10 llamadas de prueba y hasta $1 de crédito gratuito, sin tarjeta. Suficiente para probar Veo 3 con tu carga de trabajo real antes de añadir un método de pago.
¿En qué destaca Veo 3?
Generación de audio nativo sincronizado; salida con sonido o silenciosa a tarifas separadas; 720p/1080p, 4-8 segundos. En la sección «Acerca de» tienes la visión completa, según las notas de lanzamiento del propio proveedor.
¿Cuánto cuesta Veo 3?
Veo 3 cuesta $0.75 por segundo de vídeo generado en Synthorai. Solo se facturan las generaciones completadas con éxito: pago por uso, sin recargo de plataforma, sin suscripción.
¿Cómo genero vídeos con la API de Veo 3?
Envía un POST a /v1/videos en Synthorai con model="veo-3.0-generate-001" para crear una tarea asíncrona y después consulta su estado (o mantén la solicitud abierta con la cabecera Prefer: wait) hasta que esté lista la URL del vídeo. No hace falta ningún SDK del proveedor.
¿Cómo obtengo acceso a Veo 3?
Apunta el SDK de OpenAI que ya usas a base_url="https://synthorai.io/v1", pon model="veo-3.0-generate-001" y listo. Una sola clave API sirve para todos los modelos de la pasarela.
Modelos relacionados
Comparar
Todos los valores de esta página están transcritos de la documentación del propio proveedor, enlazada arriba, e indican la fecha en que se comprobaron. Los precios se comparan con los de todo el catálogo; cuando los proveedores definen una especificación de forma distinta, se muestra el valor indicando la diferencia en lugar de llevarlo a un gráfico. Aquí no hay mediciones nuestras ni puntuaciones.