Respuesta rápida: Para extender un video con Gemini Omni 1.2 Flash, envía tu clip y un prompt breve de continuación a la API de Interactions. Cada turno añade de 3 a 10 segundos y devuelve el clip más largo. La API de Gemini se detiene en 30 segundos en total. La Agent Platform de Google Cloud llega a 40, pero solo si planificas cada paso para que no recorte tu apertura.
Si buscas consejos para escribir prompts, consulta nuestra guía sobre la extensión de escenas de Omni 1.1. Esta guía cubre las novedades: las solicitudes, los cálculos del encadenamiento y el costo de un clip de 40 segundos.
Cómo funciona la extensión de video de Gemini Omni 1.2 Flash
La extensión de video genera una continuación al final de un clip. El modelo lee hasta los últimos 10 segundos de tu entrada como contexto, escribe de 3 a 10 segundos nuevos y los une al clip. Solo añade contenido al final: no puedes anteponer material ni extender la parte media.
Google documenta límites diferentes según dónde invoques al modelo:
| Gemini API | Agent Platform (Google Cloud) | |
|---|---|---|
| Autenticación | Clave de API | Proyecto y token de acceso |
| Duración total | 30 segundos | 40 segundos |
| Duración de la entrada | No se indica un límite específico | Cualquier duración |
| Imágenes de referencia | Hasta 6 en Omni | Hasta 2 por extensión |
| Modo de extensión | Prompt primero, task como alternativa |
task: "extend" en todos los ejemplos |
| Seed y labels | Fuera de la documentación de Omni | generation_config.seed, labels |
| Resultados almacenados | 55 días en el plan de pago | Hasta 7 días |
Fuentes: la documentación de Omni de la API de Gemini y la documentación de extensión de Agent Platform.
En Agent Platform, el modelo lee hasta los últimos 10 segundos y luego concatena el nuevo segmento sobre los últimos 30 segundos de la entrada. El ejemplo de Google extiende una entrada de 60 segundos en 10 segundos y devuelve 40, por lo que los primeros 30 segundos se pierden.

No tienes que unir nada manualmente, ya que la salida incluye el material anterior. Eso sí, Google edita algunos fotogramas finales de tu entrada para suavizar la transición.
Qué cambió en la extensión en la versión 1.2
- Clips iniciales de 15 segundos. En 1.1 el límite era de 10. Cada turno de extensión sigue limitado a 10 segundos.
- Imágenes de referencia, seed y labels en las solicitudes de extensión de Agent Platform.
- Nueva sintaxis de prompts. Google dejó obsoletas etiquetas como
<IMAGE_REF_0>, que usan las guías antiguas. Describe cada imagen en lenguaje natural. - Nuevo tipo de entrada. Los ejemplos actuales envían
"type": "video", no el tipodocumentde los ejemplos de 1.1.
Cómo extender un video paso a paso en la API de Gemini
- Genera un clip o sube uno mediante la API de Files. Los archivos subidos se eliminan a las 48 horas.
- Describe solo lo que sucede a continuación.
- Define
durationentre"3s"y"10s"(10 por defecto). - Guarda el ID de interacción para el siguiente turno.
from google import genai
client = genai.Client()
first = client.interactions.create(
model="gemini-omni-1.2-flash",
input="A courier in a yellow jacket cycles through a rainy night market.",
response_format={"type": "video", "duration": "15s"},
)
second = client.interactions.create(
model="gemini-omni-1.2-flash",
previous_interaction_id=first.id,
input="The courier brakes at a red door. Keep the same yellow jacket.",
response_format={"type": "video", "duration": "10s", "delivery": "uri"},
)
Para extender tu propio material, reemplaza previous_interaction_id por un array de entrada con {"type": "video", "uri": video_file.uri} y un elemento de texto.
- Evita
taskal principio. Google indica que añade restricciones estrictas, así que define"task": "extend"envideo_configsolo como alternativa. - Usa
delivery: "uri"por encima de 4 MB. Guarda el URI de la respuesta de creación. UnGETposterior devuelve base64 en línea incluso para solicitudes con URI. - Mantén
storeactivado. Constore: false, no puedes continuar a partir de ese ID de interacción.
Las subidas tienen dos límites adicionales: no se puede añadir diálogo en escenas donde alguien habla, y no se puede extender desde el EEE, Suiza o el Reino Unido. La extensión en varios turnos de un video generado evita ambas restricciones.
Ejemplo de solicitud en Agent Platform
Usa esta vía si necesitas 40 segundos o una cola de trabajos. La generación puede tardar más de un minuto, así que envía este cuerpo mediante POST a https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/interactions con background activado:
{
"model": "gemini-omni-1.2-flash",
"background": true,
"input": [
{ "type": "text", "text": "The courier opens the red door and steps inside." },
{ "type": "video", "uri": "gs://my-bucket/hop-1.mp4", "mime_type": "video/mp4" }
],
"response_format": [
{
"type": "video",
"delivery": "uri",
"gcs_uri": "gs://my-bucket/out/",
"aspect_ratio": "16:9",
"duration": "5s"
}
],
"generation_config": {
"seed": 4242,
"video_config": { "task": "extend" }
},
"labels": { "campaign": "courier", "hop": "2" }
}
La llamada devuelve un ID de interacción con estado in_progress. Consulta su estado con GET .../locations/global/interactions/INTERACTION_ID. Cuando termine, lee el URI gs:// del paso model_output dentro de steps. Ese URI se convierte en la entrada de tu siguiente salto.
También existen los modos sin estado (store: false), con estado (store: true) y de streaming. Los resultados almacenados y asíncronos se conservan hasta 7 días, así que copia todo lo que necesites.
[VERIFICAR] No ejecutado: no había un proyecto de Google Cloud disponible. El cuerpo de ejemplo de Google no muestra niseednilabels, así que confirma su ubicación.
Encadenamiento hasta el límite de 40 segundos
Un salto solo conserva todo tu material si su entrada es de 30 segundos o menos. Para llegar a 40 sin perder nada, alcanza exactamente 30 primero.
| Salto | duration planificado |
Salida planificada | duration ingenuo |
Salida ingenua |
|---|---|---|---|---|
| Inicio | 15s | 15s | 15s | 15s |
| 1 | 10s | 25s | 10s | 25s |
| 2 | 5s | 30s | 10s | 35s |
| 3 | 10s | 40s | 10s | 40s, se pierden los primeros 5s |

La cadena ingenua gana 5 segundos extra y luego descarta tu apertura. La duración del clip no te avisará, porque ambas cadenas devuelven 40 segundos.
Un inicio de 15 segundos no ahorra llamadas al llegar a 40: empezar con 10 también requiere tres extensiones. Pero ayuda en otros casos: llegar a 25 segundos requiere una extensión en lugar de dos, y llegar a 35 requiere dos en lugar de tres.
En la API de Gemini, detente después del salto 2. Google no dice qué ocurre con una solicitud que supera los 30 segundos.
Mantén la consistencia de los personajes con imágenes de referencia y seed
Un personaje que salió del cuadro antes de los últimos 10 segundos es invisible para el modelo, incluso si esos fotogramas permanecen en el clip. La solución de Google: menciónalo de nuevo o pasa una imagen de referencia en el mismo array de input:
{ "type": "image", "uri": "gs://my-bucket/courier.png", "mime_type": "image/png" },
{ "type": "text", "text": "The courier from the reference image walks back into frame." }
- Reutiliza la misma imagen en cada salto que necesite ese personaje.
- Elige con cuidado en Agent Platform. Dos imágenes por extensión solo alcanzan para lo que es más propenso a variar.
- No envíes videos de referencia. Google los admite solo para generación nueva, no para extensión.
- Indica los tiempos a partir del nuevo segmento. 0s en tu prompt significa el inicio de la parte extendida, no el inicio del clip.
Define generation_config.seed para obtener resultados reproducibles. Resulta más útil al depurar: vuelve a ejecutar un salto con la misma seed para ver si un cambio provino de tu prompt. Google no garantiza que una seed mantenga la consistencia de un personaje entre prompts diferentes, así que para eso confía en las referencias. Usa labels para rastrear la facturación por salto.
Cuánto cuesta un clip de 40 segundos
La página de precios de Google factura la salida de video de Omni 1.2 a $12.00 por millón de tokens. No especifica si una extensión factura solo los segundos nuevos o cada segundo devuelto. La cadena planificada genera 40 segundos, pero devuelve 15, 25, 30 y 40, lo que suma un total de 110.
| Resolución | Por segundo | Si solo facturan los segundos nuevos | Si factura cada segundo devuelto |
|---|---|---|---|
| 360p | $0.023 | $0.93 | $2.55 |
| 720p | Aprox. $0.07 | $2.78 | $7.65 |
| 1080p (remuestreado) | $0.104 | $4.17 | $11.47 |
| 4K (remuestreado) | $0.209 | $8.34 | $22.94 |
Estas son tarifas de la API de Gemini, calculadas a partir de los tokens por segundo de Google. Los tokens de entrada ($1.50 por millón) y los tokens de razonamiento ($9.00 por millón) se suman aparte.
Hasta que lo verifiques, presupuesta con la columna de la derecha. Para mantener la factura baja:
- Genera borradores a 360p y valida toda la cadena antes de pagar por 720p.
- Elige la resolución antes de encadenar. La página del modelo en Agent Platform limita la entrada de reescalado a 15 segundos, así que un clip terminado de 40 segundos no cabe en una sola pasada.
- Presupuesta regeneraciones en las tomas difíciles. El anuncio de Google señala la acción deportiva rápida, los cambios repentinos de guion y la física compleja como áreas que siguen mejorando.
Las solicitudes a gemini-omni-1.1-flash se enrutan a la versión 1.2 a partir del 3 de diciembre de 2026 y se facturan con las tarifas de 1.2.
Deja que tu agente de código pruebe el flujo asíncrono con Apidog CLI
Una cadena asíncrona falla en silencio: un sondeo que nunca termina, una ejecución que acaba en estado failed, una respuesta que cambia de estructura. Deja que tu agente de código construya esa prueba con Apidog CLI y la ejecute por ti.
npm install -g apidog-cli@latest
apidog auth login --with-token <YOUR_TOKEN>
apidog skill install
Luego dale a Claude Code, Codex o Cursor un único prompt:
In Apidog project <id>, create endpoints for POST and GET on the Omni
interactions URL. Build a test scenario named omni-extend-async: start a
3-second 360p extension with background set to true, save the interaction
ID, then loop with a 10-second delay on GET until status leaves in_progress.
Assert status is completed and a model_output step holds a video/mp4 item
with a uri or data. Run it and summarize any failures.
El agente valida su payload y luego construye y ejecuta el escenario:
apidog cli-schema get test-scenario-update
apidog test-scenario create --project <id> --name "omni-extend-async" --folder-id <folderId> --priority 1
apidog test-scenario import-steps <scenarioId> --project <id> --source endpoint --ids <postId>,<getId>
apidog cli-schema validate test-scenario-update --file scenario.json
apidog test-scenario update <scenarioId> --project <id> --file scenario.json
apidog run -t <scenarioId> --project <id> -e <envId> --timeout-request 300000 -r cli,junit --out-dir ./reports
Cada ejecución factura un clip real, así que ejecútala cada noche, no en cada commit. Un salto de 3 segundos a 360p cuesta alrededor de $0.07 si solo facturan los segundos nuevos. La misma línea se integra en un pipeline, como muestra nuestra guía de CI/CD con Apidog CLI, y la guía de configuración de Claude Code cubre la parte del agente. Apidog Free cubre hasta 4 usuarios.
Preguntas frecuentes
¿Cuánto puede durar un video de Gemini Omni 1.2 Flash? Una sola generación dura de 3 a 15 segundos. Con extensión, la documentación de la API de Gemini indica 30 segundos en total y la de Agent Platform indica 40.
¿Por qué desapareció el inicio de mi video extendido? En Agent Platform solo se conservan los últimos 30 segundos de la entrada. Cualquier entrada de más de 30 segundos pierde su apertura. Planifica tus saltos para que el último comience exactamente desde los 30 segundos.
¿Puedo extender un video que filmé yo mismo? Sí, fuera del EEE, Suiza y el Reino Unido. Súbelo mediante la API de Files o apunta a Cloud Storage en Agent Platform. No puedes añadir diálogo a un clip subido donde alguien esté hablando.
¿Puedo extender un clip gratis? No a través de la API. Google enumera el plan gratuito como "No disponible" para Omni 1.2 y 1.1, así que incluso una prueba se factura. Una extensión de 3 segundos a 360p es la más económica que puedes ejecutar.
