Veo 3.1
Genera clips de vídeo con Veo 3.1 mediante una sola API de tareas: tres modelos con precio por clip de 8 segundos y dos con precio por segundo, con fotogramas, audio y salida GIF.
Veo 3.1 es el modelo de generación de vídeo de Google. SeedRouter lo ofrece con cinco ID de modelo en un mismo endpoint: tres con precio por clip, cada clip de 8 segundos, y dos con precio por segundo y más controles (duración, audio, semilla, prompt negativo, primer y último fotograma). Envía la solicitud, guarda el identificador de tarea devuelto y lee el vídeo terminado desde la tarea. Las imágenes se envían como URL.
ID de modelo
| ID de modelo | Facturación | Duración | Imágenes | Audio |
|---|---|---|---|---|
veo-3.1-fast | por clip | 8 segundos | hasta 3, modo fotogramas o referencias | sin interruptor |
veo-3.1-quality | por clip | 8 segundos | hasta 3, modo fotogramas | sin interruptor |
veo-3.1-lite | por clip | 8 segundos | ninguna (texto a vídeo) | sin interruptor |
veo-3.1-fast-official | por segundo | 4, 6 u 8 segundos | primer y último fotograma | generate_audio |
veo-3.1-quality-official | por segundo | 4, 6 u 8 segundos | primer y último fotograma | generate_audio |
Consulta la página del modelo para ver los precios actuales.
Ejemplo rápido
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| Encabezado | Valor |
|---|---|
| Authorization | Bearer YOUR_API_KEY |
| Content-Type | application/json |
La respuesta es una tarea ({"id": "task_...", "status": "processing"}), no el vídeo terminado. Consulta GET /v1/tasks/{task_id} para obtener el resultado. Guarda las claves de API en código del lado del servidor.
Parámetros: modelos por clip
veo-3.1-fast, veo-3.1-quality y veo-3.1-lite.
| Campo | Tipo | Por defecto | Notas |
|---|---|---|---|
model | string | obligatorio | Uno de los tres ID anteriores. |
prompt | string | obligatorio | Describe el plano. |
duration | integer | 8 | Solo se acepta 8. |
aspect_ratio | enum | 16:9 o 9:16. | |
resolution | enum | 720p | 720p, 1080p o 4k (en mayúsculas o minúsculas). veo-3.1-lite no tiene 4k. |
enable_gif | boolean | false | Devuelve el clip como GIF animado en lugar de MP4. Solo 720p. |
nsfw_check | boolean | false | Revisa el prompt y las imágenes en busca de contenido no seguro antes de generar. |
image_urls | array | Solo Fast y Quality. Hasta 3 URL de imágenes públicas. | |
generation_type | enum | según el número de imágenes | Solo Fast y Quality. frame o reference; Quality solo admite frame. |
Parámetros: modelos por segundo
veo-3.1-fast-official y veo-3.1-quality-official.
| Campo | Tipo | Por defecto | Notas |
|---|---|---|---|
model | string | obligatorio | Uno de los dos ID anteriores. |
prompt | string | obligatorio | Describe el plano. |
negative_prompt | string | Lo que debe quedar fuera del clip. | |
duration | integer | 8 | 4, 6 u 8 segundos. |
aspect_ratio | enum | 16:9 | 16:9 o 9:16. |
resolution | enum | 720p | 720p, 1080p o 4k (en mayúsculas o minúsculas). |
first_frame_image | string | URL de imagen pública. El clip empieza en ella. | |
last_frame_image | string | URL de imagen pública. Requiere first_frame_image. | |
seed | integer | aleatorio | De 0 a 4294967295. |
generate_audio | boolean | false | Añade una pista de audio. Se factura con una tarifa por segundo más alta. |
person_generation | enum | allow_adult | allow_adult o disallow. |
resize_mode | enum | pad | pad o crop. Requiere first_frame_image. |
enhance_prompt | boolean | true | Solo se acepta true; en otro caso, omite el campo. |
nsfw_check | boolean | false | Revisa el prompt y las imágenes en busca de contenido no seguro antes de generar. |
El esquema es estricto: los campos desconocidos se rechazan en lugar de ignorarse, y cada modelo solo admite sus propios campos. No hay callbacks disponibles; consulta la tarea en su lugar.
Modos de imagen
En veo-3.1-fast y veo-3.1-quality, generation_type define cómo se usan las image_urls:
generation_type | Imágenes | Efecto |
|---|---|---|
frame | 1 o 2 | La primera imagen es el primer fotograma y la segunda, el último. |
reference | hasta 3 | Las imágenes sirven de referencia para el sujeto y el estilo. Solo Fast. |
| omitido | 2 o 3 | Dos imágenes usan el modo fotogramas; tres, el modo referencias. |
veo-3.1-quality no ejecuta el modo referencias, así que rechaza generation_type: "reference" y tres imágenes sin generation_type. veo-3.1-lite no admite imágenes.
En los modelos por segundo, define first_frame_image y, opcionalmente, last_frame_image. resize_mode elige si una imagen con otra forma se rellena o se recorta.
Entradas multimedia
Las imágenes son URL HTTP(S) públicas:
{ "image_urls": ["https://example.com/first.jpg", "https://example.com/last.jpg"] }En los modelos por clip, cada imagen es JPEG, PNG o WebP y ocupa como máximo 10 MB; un archivo que incumpla estas reglas hace fallar la tarea sin cobro. No se aceptan datos en base64: sube el archivo a tu propio almacenamiento y pasa su URL.
Factores de coste
Consulta la sección de precios del modelo para ver las tarifas actuales.
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 settingEl cargo se fija cuando se acepta la solicitud, así que el importe reservado es el importe cobrado. Consulta los cargos finales en el historial de uso de tu cuenta. Las tareas fallidas no se cobran.
Esquema de salida
El envío devuelve la tarea:
{"id": "task_...", "model": "veo-3.1-fast", "status": "processing", "created_at": 1789689600}Consultar la tarea
GET https://api.seedrouter.ai/v1/tasks/{task_id}Sondea cada 10–20 segundos hasta que status sea completed o failed. Que se agote el tiempo de red durante el sondeo no significa que la generación haya fallado: conserva el identificador de tarea y reanuda la comprobación. No crees otra tarea para consultar el progreso.
Tarea completada
{
"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 es un MP4, o un GIF si la solicitud activó enable_gif. El enlace está en el almacenamiento de SeedRouter.
Lo que devolvieron nuestras pruebas (una ejecución cada una, 2026-10-04):
| Solicitud | Archivo |
|---|---|
veo-3.1-fast, 9:16, modo fotogramas | MP4, H.264, 720 × 1280, 24 fps, 8 s, con una pista de audio AAC estéreo |
veo-3.1-fast-official, 16:9, 720p, 4 s, sin generate_audio | MP4, H.264, 1280 × 720, 24 fps, 4 s, sin pista de audio |
veo-3.1-lite, enable_gif | GIF, 480 × 270, 16 fps, 8 s |
Los modelos por clip no tienen interruptor de audio; los modelos por segundo solo añaden una pista de audio con generate_audio.
Errores
Las solicitudes rechazadas antes de crear una tarea devuelven un error HTTP con un objeto error y no se cobran. Una tarea que falla después de aceptarse devuelve HTTP 200 al consultarla, con status: "failed" y un objeto error.
Consulta el catálogo de errores común para ver códigos, estados HTTP y pautas de reintento.
{
"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 el propio envío agota el tiempo de espera, revisa tus tareas antes de volver a enviar: puede que la primera solicitud se haya aceptado.
Consejos
- Empieza con
veo-3.1-liteoveo-3.1-fasten 720p para probar un prompt y pasa a Quality o a 4k para el render final. - Nombra la cámara y la luz: un objetivo y un movimiento de cámara cambian el plano más que los adjetivos.
- Añade
no text, no logospara evitar letras y marcas inventadas en el encuadre. - Para un plano que deba empezar y terminar en imágenes conocidas, usa el modo fotogramas con dos imágenes, o los modelos por segundo con
first_frame_imageylast_frame_image. - Fija
seeden los modelos por segundo y cambia una sola cláusula cada vez para iterar sobre un plano.
