Loading...
Loading...
Animate a still image into video with Gemini Omni 1.1 Flash. The source image becomes the first frame and drives the generated motion.
Inicia sesión para ejecutar modelos
No output yet
Run the model to see generated results.
import requests
result = requests.post(
'https://api.e2x.ai/v1/jobs/submit',
headers={
'Authorization': f'Bearer {API_KEY}',
'Content-Type': 'application/json'
},
json={
'model': 'google/omni-1.1-flash/image-to-video',
'input': {}
}
)import time
job_id = result.json()['jobId']
while True:
response = requests.get(
f'https://api.e2x.ai/v1/jobs/{'{job_id}'}',
headers={'Authorization': f'Bearer {'{API_KEY}'}'}
)
data = response.json()['data']
if data['status'] == 'completed':
print('Done!', data['outputs'][0]['url'])
break
elif data['status'] == 'failed':
raise Exception(f"Job failed: {'{'}data['error']['message']{'}'}")
time.sleep(2)Costo estimado por generación según duración y resolución. Solo pagas por lo que uses.
Gemini Omni 1.1 Flash llegó a disponibilidad general en Google el 27 de agosto de 2026. Pertenece a la familia Gemini, no a Veo, y exponemos su capability de image-to-video como google/omni-1.1-flash/image-to-video. Cobramos por segundo de vídeo terminado —$0.09 por segundo en 720p, frente a una tarifa de lista de $0.15—, porque un descuento permanente del 40% cubre las cuatro capabilities. El clip por defecto, de ocho segundos, sale por $0.72. Obligatorios: prompt e image_url.
Entienda qué es la imagen fija antes de su primera llamada. Es un contrato. Fija el primer fotograma y, con él, el encuadre, la óptica, la paleta, el sujeto y todos los defectos que ya estaban en la foto. Su prompt manda sobre los segundos siguientes, sobre nada anterior a ellos.
Casi todos los resultados sosos de aquí vienen del mismo error: un prompt que describe la fotografía en vez del cambio. Diga qué se mueve. Diga adónde va la cámara.
| Duración del clip | Precio en 720p |
|---|---|
| 4 s | $0.36 |
| 6 s | $0.54 |
| 8 s (por defecto) | $0.72 |
| 10 s | $0.90 |
La resolución escala esa tarifa: 360p es 0,4× ($0.0297 por segundo), 1080p 1,5× ($0.135) y 4K 2× ($0.18). Una pasada de cuatro segundos en 360p cuesta $0.1188, la forma más barata de averiguar si su imagen fija se mueve siquiera.
¿Dos fotogramas y el medio en manos del modelo? Omni 1.1 Flash start-end-frame-to-video. ¿Un mismo sujeto fotografiado desde varios ángulos, estable a lo largo de una lista de planos? Omni 1.1 Flash reference-to-video. ¿Nada de material de partida? Omni 1.1 Flash text-to-video lleva el argumento completo sobre precios.
Trate el job como una continuación, no como una interpretación. El modelo acepta su imagen fija como primer fotograma y después inventa veinticuatro fotogramas plausibles por segundo detrás de ella, todos anclados a lo que usted entregó. Ese anclaje es el valor: un key visual ya aprobado sigue siendo de marca porque nadie lo ha vuelto a tirar.
También es la restricción. Un encuadre recargado le da al modelo más objetos que mantener coherentes mientras todo se mueve, y la coherencia es el punto débil de esta generación. La model card de Google lo dice: "Mantener una consistencia completa a lo largo de las ediciones, generar escenas con movimiento complejo o renderizar texto perfectamente exacto sigue siendo un desafío." Los rótulos se emborronan. Las multitudes revuelven caras. Un sujeto solo sobre un fondo limpio aguanta diez segundos mejor de lo que el desorden aguanta cuatro.
Haga usted mismo el recorte. La salida viene en 16:9 o 9:16: ni cuadrado, ni 4:5, ni ultrapanorámico. Meta un retrato 4:5 en un job 16:9 y algo cede: o el modelo rellena los lados con material que nadie fotografió, o la composición se desplaza para encajar. Paga $0.09 por segundo en cualquiera de los dos casos. Recorte antes, mientras la decisión es gratis.
No suba a 4K a base de escalar. La resolución del original marca el techo de lo que la salida puede sostener honestamente. Una miniatura de 640 píxeles de ancho renderizada en 1080p es un archivo más grande con el mismo detalle, a 1,5× la tarifa.
Deje sitio para que el movimiento vaya a alguna parte. Aire sobre la cabeza del sujeto, carretera por delante del coche. Recorte apretado y nada podrá moverse sin salirse del cuadro a empujones: es una razón habitual de que un clip se lea como una fotografía temblorosa.
Genere una key en el dashboard y manténgala en el servidor. Nuestro pipeline descarga image_url por su cuenta, así que tiene que ser alcanzable desde la internet pública: una dirección HTTPS en su CDN o su object store, nunca una ruta local, localhost ni una URL detrás de un login. Las URLs firmadas valen si la ventana es generosa: los jobs tardan unos cuatro minutos y un enlace de sesenta segundos muere antes.
curl -X POST https://api.e2x.ai/v1/jobs/submit \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "google/omni-1.1-flash/image-to-video",
"input": {
"prompt": "El vapor empieza a salir del pico de la tetera y se desplaza hacia la derecha. La cámara hace un push-in lento sobre el asa. Zumbido de cocina, una tetera que empieza a chasquear. Nada más se mueve en el plano.",
"image_url": "https://cdn.example.com/stills/copper-kettle-16x9.jpg",
"aspect_ratio": "16:9",
"resolution": "720p",
"duration": "8"
}
}'
Le devolvemos un job ID. O hace polling, o nos pasa un webhookUrl y se salta el bucle:
const headers = {
Authorization: `Bearer ${process.env.E2X_API_KEY}`,
"Content-Type": "application/json",
};
const start = await fetch("https://api.e2x.ai/v1/jobs/submit", {
method: "POST",
headers,
body: JSON.stringify({
model: "google/omni-1.1-flash/image-to-video",
input: {
prompt:
"Ella se gira hacia la cámara y el pañuelo se levanta con el viento. Cámara fija. Gaviotas, oleaje a lo lejos.",
image_url: "https://cdn.example.com/stills/portrait-9x16.png",
aspect_ratio: "9:16",
resolution: "360p",
duration: "10",
},
}),
}).then((r) => r.json());
const { jobId } = start.data;
for (let tick = 0; tick < 360; tick++) {
const job = await fetch(`https://api.e2x.ai/v1/jobs/${jobId}`, { headers })
.then((r) => r.json());
if (job.data.status === "completed") {
await archive(job.data.outputs[0].url); // cópielo a un sitio permanente
break;
}
if (["failed", "cancelled"].includes(job.data.status)) {
throw new Error(job.data.error?.message ?? job.data.status);
}
await new Promise((r) => setTimeout(r, 5000));
}
Un job informa de pending, luego processing, y después completed, failed o cancelled. Hay dos detalles del schema que muerden: duration y resolution son strings, así que envíe "10" y no 10; y no existe ningún interruptor de audio, porque el sonido se genera junto con la imagen y se dirige desde su prompt. Las definiciones de los campos se mantienen al día en la especificación legible por máquina.
Escriba solo lo que cambia. El sujeto, la luz y la composición llegaron con el archivo; repetirlos gasta una atención que el modelo podría dedicar al movimiento. No declare ningún movimiento y obtendrá un fotograma casi quieto con algo de deriva, a tarifa completa.
Un movimiento, con nombre. El vapor sube. Una puerta se abre hacia dentro. El pelo se levanta. Elija la acción que importa y deje que el resto se quede quieto: decirlo en voz alta ayuda más de lo que parece.
Una instrucción de cámara. "Push-in lento", "cámara fija", "deriva a la izquierda en cámara en mano". La gramática llana gana a un párrafo de cinematografía, y una cámara sin especificar pasa a ser decisión del modelo.
El sonido de debajo. Tono de sala, tráfico, un efecto concreto. El silencio no es el valor por defecto; una mezcla sin especificar se la inventan por usted. Los prompts admiten hasta 50.000 caracteres, así que la longitud nunca es el límite: lo es la precisión. Nuestra guía de prompting de Gemini Omni entra más a fondo en el fraseo.
Óigalo de nosotros y no de una factura. Veo 3.1 Fast image-to-video corre en esta misma plataforma a $0.01 por segundo: nueve veces por debajo del endpoint de esta página.
| Endpoint | Clip de 8 segundos | Tire de él cuando |
|---|---|---|
| Veo 3.1 Fast image-to-video | $0.08 | Una imagen, un clip, y nada depende de él después |
| Omni 1.1 Flash image-to-video | $0.72 | Necesita diez segundos, una pasada de borrador en 360p, o que este plano case con otros |
| Veo 3.1 Fast text-to-video | $0.08 | La imagen fija no está haciendo $0.64 de trabajo |
Los precios y las condiciones de los productos pueden cambiar con el tiempo; consulte los precios vigentes de cada proveedor antes de tomar una decisión de compra. Los precios de Google Batch o Flex no son directamente equivalentes a un request estándar de API bajo demanda, porque la programación, la disponibilidad y las condiciones de procesamiento son distintas; por eso quedan excluidos de esta comparación. Se trata de una comparación acotada, no de una afirmación de que E2X sea la opción más barata del mundo en cualquier configuración.
Tómeselo en serio. Una fotografía, animada una vez, es de Veo. El sobreprecio de aquí se amortiza en tres casos: su montaje necesita diez segundos y Veo se queda en ocho; quiere hacer borradores a $0.0297 por segundo; o este clip tiene que pertenecer a un conjunto. Otras formas de animar una imagen fija están en la categoría image-to-video, junto a nuestro catálogo de modelos.
La salida es de 24 fps, de tres a diez segundos por generación, con un watermark SynthID en cada fotograma que nadie de la cadena puede desactivar. Las URLs de resultado son temporales: archive el archivo dentro de su handler de finalización. Un enlace que mañana no pueda descargar es un render que paga dos veces.
Hay una regla que se aplica precisamente porque usted sube una fotografía: en el EEE, Suiza y el Reino Unido, Google bloquea las imágenes de origen en las que aparecen menores, y también algunas personas reconocibles. Además, el inglés es el único idioma de prompt que Google ha evaluado. Nuestras notas de lanzamiento de Gemini Omni 1.1 Flash cuentan qué más cambió respecto al predecesor que seguimos operando, obsoleto en origen el 30 de septiembre de 2026.
Nueve céntimos de dólar compran un segundo en 720p. El clip por defecto dura ocho segundos, así que son $0.72; los diez segundos, que son el techo, salen por $0.90. Esa tarifa es un 40% de descuento sobre un precio de lista de $0.15, leído de nuestro catálogo en vivo el 28 de agosto de 2026. La resolución mueve el multiplicador: 0,4× en 360p, 1,5× en 1080p y 2× en 4K.
Veo, para la mayoría de las imágenes sueltas: $0.01 por segundo frente a $0.09, o $0.08 frente a $0.72 en ocho segundos. Vuelva aquí cuando necesite diez segundos, cuando una pasada de borrador en 360p le ahorre dinero en conjunto, o cuando el clip tenga que casar con otros hechos a partir del mismo sujeto.
Solo 16:9 y 9:16. Recorte su original a la proporción de destino antes de enviarlo; si no, el modelo resuelve el desajuste por su cuenta y usted puede perder parte de la composición que había aprobado.
En cualquier sitio al que nuestro pipeline llegue por HTTPS público: un CDN, un bucket de S3 o de GCS, su propio servidor web. Las rutas locales, localhost y cualquier cosa detrás de autenticación fallan. Las URLs firmadas funcionan cuando su caducidad supera con holgura los cuatro minutos que tarda un job.
Normalmente porque el prompt vuelve a describir la imagen en lugar de dirigirla. La imagen fija ya fijó el sujeto y el encuadre; sin ningún movimiento ni movimiento de cámara declarados, el modelo no tiene sobre qué actuar. Reescríbalo como un movimiento más una instrucción de cámara.
Sí, producido de forma nativa junto a la imagen y sincronizado con ella. No hay campo has_sound ni modo mudo, así que describa el ambiente en el prompt. El audio no se puede editar después: un cambio significa otra generación.
Sí. Google bloquea las imágenes de origen en las que aparecen menores, y también ciertas personas reconocibles, para los usuarios del EEE, Suiza y el Reino Unido; es su política, y se aplica en todos los proveedores. Las salidas llevan además un watermark SynthID invisible, así que cuente con assets de IA etiquetados.