DEV Community

Cover image for Cómo usar la API Gemini Omni 1.1 Flash
Roobia
Roobia

Posted on Originally published at apidog.com

Cómo usar la API Gemini Omni 1.1 Flash

Llamas a Gemini Omni 1.1 Flash con el ID de modelo gemini-omni-1.1-flash mediante la API de Interacciones de Google, no mediante el endpoint generateContent de los modelos de texto. Si copias una solicitud de texto de Gemini y solo cambias el nombre del modelo, obtendrás un error 404.

Prueba Apidog hoy

Esta guía te lleva desde una terminal vacía hasta una solicitud probada de generación de video: crearás una clave, harás llamadas con curl y Python, revisarás los parámetros disponibles, gestionarás respuestas grandes y guardarás todo como una prueba repetible.

El modelo alcanzó la disponibilidad general (GA) el 27 de agosto de 2026. Consulta las novedades de Gemini Omni 1.1 Flash para conocer lo que se lanzó con él.

Requisitos

  • Una cuenta de Google para iniciar sesión en AI Studio.
  • Una clave de API de Gemini de Google AI Studio.
  • Facturación habilitada. Omni no tiene nivel gratuito, a diferencia de la opción gratuita para los modelos de texto. La primera solicitud tiene coste.
  • Una herramienta para enviar solicitudes HTTP: curl, el SDK de Python o un cliente de API.

Guarda la clave en una variable de entorno, no en el código fuente:

export GEMINI_API_KEY="your_key_here"
Enter fullscreen mode Exit fullscreen mode

Los SDK oficiales leen esta variable automáticamente y mantienen el secreto fuera del repositorio.

Primera solicitud de generación de video

El endpoint es POST /v1beta/interactions:

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions?key=$GEMINI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-omni-1.1-flash",
    "input": "A marble rolling fast on a chain reaction style track, continuous smooth shot."
  }'
Enter fullscreen mode Exit fullscreen mode

La solicitud mínima solo necesita model e input. La respuesta incluye el video generado como base64 en output_video.data.

Instala el SDK de Python con pip install google-genai:

import base64
from google import genai

client = genai.Client()  # reads GEMINI_API_KEY from the environment

interaction = client.interactions.create(
    model="gemini-omni-1.1-flash",
    input="A marble rolling fast on a chain reaction style track, continuous smooth shot.",
)

with open("marble.mp4", "wb") as f:
    f.write(base64.b64decode(interaction.output_video.data))
Enter fullscreen mode Exit fullscreen mode

En JavaScript, usa @google/genai:

import { GoogleGenAI } from '@google/genai';
import * as fs from 'fs';

const ai = new GoogleGenAI({});

const interaction = await ai.interactions.create({
  model: 'gemini-omni-1.1-flash',
  input: 'A marble rolling fast on a chain reaction style track, continuous smooth shot.',
});

if (interaction.output_video?.data) {
  fs.writeFileSync('marble.mp4', Buffer.from(interaction.output_video.data, 'base64'));
}
Enter fullscreen mode Exit fullscreen mode

La generación puede tardar varios minutos. La latencia depende de la duración, la resolución y la carga de la API, así que configura un tiempo de espera generoso.

Controlar resolución y relación de aspecto

Configura el formato de salida mediante response_format:

interaction = client.interactions.create(
    model="gemini-omni-1.1-flash",
    input="A drone shot of a mountain landscape at sunrise.",
    response_format={
        "type": "video",
        "aspect_ratio": "16:9",
        "resolution": "1080p",
    },
)
Enter fullscreen mode Exit fullscreen mode
Campo Valores Predeterminado
type video video
aspect_ratio 16:9, 9:16 16:9
resolution 360p, 720p, 1080p, 4k 720p
delivery base64 en línea, uri en línea

Usa 360p para los borradores: puede generar resultados hasta un 60 % más rápido que 720p y cuesta un tercio. Después, vuelve a renderizar el prompt elegido con mayor resolución. 1080p y 4k son escalados de los fotogramas generados, no resoluciones nativas. Consulta el desglose de precios para conocer el coste por segundo.

Parámetros no compatibles

Para evitar errores de implementación, Omni no admite:

  • Instrucciones del sistema
  • temperature
  • top_p
  • Secuencias de parada
  • Un campo de prompt negativo

Si necesitas excluir algo de una toma, incluye la instrucción directamente en el prompt. La documentación usa este enfoque: “usando el dibujo solo como guía para el movimiento, no muestres el dibujo en el video final”.

Imágenes, fotogramas clave y referencias

Pasa una lista en input cuando incluyas medios. Para convertir una imagen en video:

interaction = client.interactions.create(
    model="gemini-omni-1.1-flash",
    input=[
        {"type": "image", "data": base64_image, "mime_type": "image/jpeg"},
        {"type": "text", "text": "turn this into realistic footage, using the drawing only as a guide for movement, do not show the drawing in the final video"},
    ],
)
Enter fullscreen mode Exit fullscreen mode

Si envías dos imágenes, la primera se usa como fotograma inicial y la segunda como fotograma final. El modelo genera el movimiento entre ambas:

interaction = client.interactions.create(
    model="gemini-omni-1.1-flash",
    input=[
        {"type": "image", "data": first_frame_b64, "mime_type": "image/jpeg"},
        {"type": "image", "data": last_frame_b64, "mime_type": "image/jpeg"},
        {"type": "text", "text": "A smooth cinematic transition from a lush green forest at sunrise to a snowy forest under a starry night sky."},
    ],
)
Enter fullscreen mode Exit fullscreen mode

Las referencias de video funcionan de forma similar mediante la API de Archivos, con un límite de tres clips de tres segundos cada uno. El audio se ignora; el modelo usa los clips para interpretar el movimiento y la apariencia.

Edición conversacional de varios turnos

Omni permite generar un video y editarlo usando el ID de la interacción anterior:

res1 = client.interactions.create(
    model="gemini-omni-1.1-flash",
    input="A woman playing violin outdoors.",
)

res2 = client.interactions.create(
    model="gemini-omni-1.1-flash",
    previous_interaction_id=res1.id,
    input="Make the violin invisible.",
)
Enter fullscreen mode Exit fullscreen mode

No necesitas volver a subir el video ni describir de nuevo la escena. El mismo mecanismo permite extender escenas; consulta la guía para extender videos hasta 40 segundos.

Gestionar videos de más de 4 MB

Los videos de más de 4 MB se devuelven como una URI, no como base64 en línea. Además, el archivo debe terminar de procesarse antes de descargarse. Este es un error habitual con 1080p: el código busca output_video.data, no encuentra datos y registra un fallo silencioso.

Solicita explícitamente la entrega mediante URI y sondea el estado:

import time
from google import genai

client = genai.Client()

interaction = client.interactions.create(
    model="gemini-omni-1.1-flash",
    input="A beautiful sunset.",
    response_format={"type": "video", "delivery": "uri"},
)

video_output = interaction.output_video
file_name = video_output.uri.split("/")[-1]

while True:
    f_info = client.files.get(name=f"files/{file_name}")
    if f_info.state.name == "ACTIVE":
        break
    if f_info.state.name == "FAILED":
        raise RuntimeError("Generation failed.")
    time.sleep(5)

video_bytes = client.files.download(file=video_output.uri)
with open("output.mp4", "wb") as f:
    f.write(video_bytes)
Enter fullscreen mode Exit fullscreen mode

Diseña el manejador para aceptar desde el principio las dos formas de respuesta: output_video.data y output_video.uri. La resolución determina cuál recibirás.

Probar la solicitud en Apidog

Una vez que la llamada funciona, necesitas controlar un endpoint costoso, lento y no determinista. El historial de la shell no basta para detectar cambios de comportamiento.

Configúralo una vez en Apidog:

  1. Crea un proyecto y un entorno. Define GEMINI_API_KEY y MODEL_ID como variables de entorno para que la clave no se almacene en la solicitud.
  2. Añade una solicitud POST a https://generativelanguage.googleapis.com/v1beta/interactions, con un cuerpo JSON que incluya model e input. Usa {{MODEL_ID}} para referenciar la variable.
  3. Aumenta el tiempo de espera. La generación de video tarda mucho más que una finalización de texto.
  4. Añade aserciones para comprobar el código de estado, la existencia de output_video y la forma de respuesta esperada para la resolución elegida.
  5. Duplica la solicitud para cada flujo: texto a video, imagen a video y extensión. Cuando aparezca Omni 1.2, podrás ejecutar las tres y detectar rápidamente qué cambió.

Apidog no genera videos ni es un framework de IA. Sirve para construir solicitudes, ejecutarlas y validar las respuestas con un estándar definido. Descarga Apidog para establecer esta estructura antes de aumentar el gasto.

Errores comunes y soluciones

  • 404 en el endpoint: estás usando /v1beta/models/gemini-omni-1.1-flash:generateContent. Omni requiere /v1beta/interactions, con el modelo en el cuerpo.
  • output_video.data está vacío: la respuesta usa una URI porque el video supera los 4 MB. Lee output_video.uri y descárgalo mediante la API de Archivos.
  • Modelo no encontrado: revisa si tu configuración todavía usa gemini-omni-flash-preview. Ese endpoint se retirará el 30 de septiembre de 2026.
  • Falla la edición de un video subido: esta función no está disponible en el EEE, Suiza ni el Reino Unido. Los videos generados por el modelo sí funcionan en esas regiones.
  • Se rechaza una extensión: los videos de entrada tienen un límite de 10 segundos; la extensión solo añade contenido al final y no permite añadir diálogos a una subida.

Preguntas frecuentes

  • ¿Qué endpoint usa Gemini Omni? POST https://generativelanguage.googleapis.com/v1beta/interactions, con gemini-omni-1.1-flash en el cuerpo.
  • ¿Existe un nivel gratuito para la API de Gemini Omni? No. Cada generación se factura. Los modelos de texto sí tienen una opción gratuita en AI Studio.
  • ¿Puedo establecer la temperatura o un prompt negativo? No. Las instrucciones del sistema, temperature, top_p, las secuencias de parada y los prompts negativos no son compatibles. Incluye las exclusiones en el prompt.
  • ¿Cómo genero un video vertical? Establece aspect_ratio en 9:16 dentro de response_format.
  • ¿Los videos generados tienen marca de agua? Sí. Toda la salida incluye SynthID, invisible para los espectadores y detectable mediante programación.
  • ¿Cómo se compara con la API de Veo? Usa otro endpoint, tiene otro precio y ofrece fortalezas diferentes. La comparación Omni 1.1 Flash frente a Veo 3.1 explica las diferencias, y la guía de la API de Veo 3.1 cubre esa integración.

La integración se reduce a dos campos obligatorios y un manejador capaz de procesar ambas formas de entrega. Empieza con una llamada a 360p, guárdala con aserciones y aumenta la resolución cuando la infraestructura sea estable. Consulta la documentación oficial de Omni para seguir la evolución de los parámetros.

Top comments (0)