Saltar al contenido

Gemini Omni: API de generación de video

Genere videos cortos con Gemini Omni en una sola solicitud síncrona: modelo, parámetros, respuesta, errores y facturación.

Gemini Omni genera un video corto en una sola solicitud síncrona: el clip terminado vuelve como MP4 en base64 en el cuerpo de la respuesta, sin ID de tarea ni sondeo.

ElementoValor
Base URLhttps://api.hop-base.com/v1beta
Generar videoPOST /v1beta/interactions
Alias equivalentesPOST /v1/interactions, POST /interactions
Tareas y sondeoNo hay; la respuesta es síncrona
Grupo de la clave"Gemini oficial directo"

Modelos disponibles

ID del modeloResoluciónDuraciónPrecio oficial
gemini-omni-flash-preview720p3-10 segundos$1,50 / $9/ 1M tokens

gemini-omni-flash-preview es el único modelo de Gemini que produce video y, a diferencia de los demás modelos de video de HopBase, es síncrono. Devuelve un MP4 de 720p y 3-10 segundos, facturado por token y no por segundo. Consulte la ficha del modelo para ver todas las especificaciones.

El video de Omni lo sirve el grupo Gemini oficial directo: el mismo grupo y la misma clave que el chat de Gemini y la generación de imágenes de Gemini. No hay que comprar un paquete de video aparte. Confirme la disponibilidad con GET /v1/models y consulte sus tarifas efectivas en el catálogo de modelos con la sesión iniciada.

Parámetros de la solicitud

ParámetroObligatorioTipo y límitesPredeterminadoDescripción
modelObligatoriosolo gemini-omni-flash-preview—Cualquier otro modelo se rechaza con 400
inputObligatoriocadena, o el arreglo nativo de pasos; medios como base64 en data + mime_type o uri remoto; video de entrada ≤ 10 s—Texto, imagen y video. El límite de 10 s lo comprueba el modelo, no la pasarela
streamOpcionalbooleanofalsetrue no da un flujo incremental; el resultado llega de una vez
Otros campos nativosOpcionalp. ej. system_instruction, generation_config—Se transmiten sin cambios

No existen parámetros duration, resolution ni fps. Indique la duración que quiere en el propio prompt.

Respuesta

La solicitud queda abierta hasta que el clip está terminado, así que no hay estados intermedios como «en cola» o «en proceso». Si todo va bien recibe HTTP 200, y el clip está en steps[].content[], en el paso cuyo type es model_output.

CampoDescripción
statuscompleted al terminar
steps[].typeEl paso con el clip es model_output
steps[].content[].typeEl bloque de video es video
steps[].content[].mime_typevideo/mp4
steps[].content[].dataMP4 codificado en base64
usage.total_input_tokens / usage.total_output_tokensTokens de entrada y de salida
usage.output_tokens_by_modalityTokens de salida desglosados por modalidad, como referencia

Éxito

{
  "status": "completed",
  "model": "gemini-omni-flash-preview",
  "steps": [{
    "type": "model_output",
    "content": [{ "type": "video", "mime_type": "video/mp4", "data": "<base64-mp4>" }]
  }],
  "usage": {
    "total_input_tokens": 20,
    "total_output_tokens": 17819,
    "output_tokens_by_modality": [{ "modality": "video", "tokens": 17376 }]
  }
}

Las cifras de usage.output_tokens_by_modality ya están incluidas en total_output_tokens, así que no las sume de nuevo.

PropiedadValor
Duración3-10 segundos
Resolución720p
Cuadros por segundo24 FPS
ContenedorMP4, devuelto en base64
Ventana de contexto1.048.576 tokens

El clip llega dentro del propio cuerpo JSON: no hay enlace de descarga, así que nada caduca. Como resultado, las respuestas son grandes; dimensione los búferes de su cliente en consecuencia.

Fallo

Un fallo puede tomar tres formas:

  • Un error de validación de la pasarela devuelve 400 con la forma {"error": {"message": …}}; vea «Errores comunes» más abajo.
  • Los errores del propio modelo llegan en su cuerpo de error nativo.
  • Un 200 sin bloque type: "video" (el modelo respondió solo con texto o se negó). Se factura igualmente por tokens, así que compruebe ese bloque antes de dar la llamada por buena.

Ejemplo mínimo

curl https://api.hop-base.com/v1beta/interactions \
  -H "Authorization: Bearer sk-your-key" \
  -H "Content-Type: application/json" \
  --max-time 600 \
  -d '{
    "model": "gemini-omni-flash-preview",
    "input": "Video de 3 segundos: pelota roja rodando lento sobre fondo blanco"
  }'

Notas

Chat Completions no puede devolver el video.

Enviar gemini-omni-flash-preview a /v1/chat/completions funciona, pero solo vuelve la parte de texto de la respuesta: el bloque de video se descarta. Use el endpoint de Interactions cuando quiera el clip.

La generación de video es lenta y este endpoint no tiene modo asíncrono: Prefer: respond-async funciona para la generación de imágenes de Gemini, pero no aquí.

  • El endpoint nativo de Interactions no tiene un vigilante de tiempo del lado de la pasarela, así que configure un tiempo de espera de cliente generoso; cinco minutos es un mínimo razonable.
  • Llamar a gemini-omni-flash-preview a través de /v1/chat/completions en su lugar tiene un límite de unos 100 segundos por llamada, sin importar el tiempo de espera de su cliente; use el endpoint de Interactions directamente para cualquier solicitud que pueda tardar más.
  • HopBase no reintenta deliberadamente un 504 en esta ruta. Repetir una solicitud cuyo resultado se desconoce arriesgaría generar y pagar el clip dos veces.
  • El ID del modelo lleva preview. Sus capacidades y disponibilidad pueden cambiar sin aviso.

El gateway no valida un límite común de cantidad o bytes por archivo para Omni. Un límite no verificado no significa ilimitado. No copie las 16 imágenes de GPT Image ni las reglas Seedance.

uri es una dirección remota y data contiene base64; no use asset://, ID de Seedance ni rutas locales. La aceptación estructural no garantiza que el medio o la moderación pasen.

Errores comunes y soluciones

La pasarela rechaza estos casos con 400:

Interactions API only supports model gemini-omni-flash-preview
request body is missing input
missing model
request body must be JSON
Error o síntomaSolución
Interactions API only supports model gemini-omni-flash-previewPonga model en gemini-omni-flash-preview
request body is missing inputAñada input
missing modelAñada model
request body must be JSONEnvíe el cuerpo en JSON
402Su saldo es cero o negativo; recargue y vuelva a llamar
200 sin bloque de videoEl modelo respondió solo con texto o se negó, y se factura igualmente; compruebe steps[].content[] antes de darlo por bueno
Solo texto vía /v1/chat/completionsUse POST /v1beta/interactions
504HopBase no lo reintenta; repetirlo podría generar y cobrar el clip dos veces

Facturación

Se factura por token, no por segundo. Un 200 sin bloque de video se factura igualmente por tokens; una solicitud que falla o agota el tiempo de espera no se factura.

No se reserva saldo por adelantado; un 402 solo aparece cuando su saldo es cero o negativo. Los precios de lista oficiales están en la página de precios, su tarifa es la que aparece en el catálogo de modelos con la sesión iniciada, y el cargo real de cada solicitud está en su registro de uso.

Próximos pasos