Como usar a API Gemini Omni 1.1 Flash

Passe o gemini-omni-1.1-flash pela API de Interações do Google: obtenha uma chave, faça sua primeira requisição curl e Python, gerencie a entrega de URI de 4MB e salve a chamada como um teste no Apidog.

INEZA Felin-Michel

INEZA Felin-Michel

3 setembro 2026

Como usar a API Gemini Omni 1.1 Flash

Apidog para empresas

Implantação local

SSO & RBAC

Conforme SOC 2

Explorar Apidog Enterprise

Você chama o Gemini Omni 1.1 Flash com o ID do modelo gemini-omni-1.1-flash através da API de Interações do Google, e não o endpoint generateContent que você usa para modelos de texto. Essa é a primeira coisa que confunde as pessoas. Se você copiar um trecho de texto do Gemini e trocar o nome do modelo, receberá um 404.

Este guia o levará de um terminal vazio a uma solicitação de geração de vídeo testada. Você obterá uma chave, fará sua primeira chamada em curl e Python, aprenderá os parâmetros existentes (e a surpreendente lista dos que não existem), lidará com respostas grandes e salvará tudo como um teste repetível.

O modelo foi lançado em GA (disponibilidade geral) em 27 de agosto de 2026. Para saber o que foi lançado com ele, veja o que há de novo no Gemini Omni 1.1 Flash.

O que você precisa antes de começar

Armazene a chave como uma variável de ambiente em vez de colá-la no código-fonte:

export GEMINI_API_KEY="your_key_here"

Os SDKs oficiais leem essa variável por conta própria, o que mantém o segredo fora do seu repositório.

Sua primeira chamada de geração de vídeo

O endpoint é um POST para /v1beta/interactions. Aqui está ele em curl:

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."
  }'

Dois campos: o modelo e a entrada. Essa é toda a solicitação mínima. A resposta carrega o vídeo gerado como base64 em output_video.data.

Em Python, instale o SDK com pip install google-genai, então:

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))

JavaScript segue o mesmo formato com @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'));
}

A geração leva tempo. A latência escala com a duração, resolução e carga atual da API, então defina um tempo limite do cliente generoso antes de decidir que algo está com problemas.

Controlando resolução e proporção de tela

Tudo sobre o formato de saída vai em 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",
    },
)

Os valores aceitos:

Campo Valores Padrão
type video video
aspect_ratio 16:9, 9:16 16:9
resolution 360p, 720p, 1080p, 4k 720p
delivery base64 inline, uri inline

Faça rascunhos em 360p. Ele gera até 60% mais rápido que 720p e custa um terço, então suas quinze tentativas de prompt descartáveis custam o que cinco costumavam custar. Re-renderize o que você vai manter em uma resolução mais alta. 1080p e 4k são upscales dos frames gerados, não renderizações nativas. A discriminação de preços mostra o custo real de cada nível por segundo.

Os parâmetros que não existem

Esta lista importa mais do que a anterior, porque você desperdiçará uma tarde caso contrário:

Se você precisar excluir algo de uma cena, escreva a exclusão no próprio prompt. O exemplo da documentação faz exatamente isso: “usando o desenho apenas como guia para movimento, não mostre o desenho no vídeo final.”

Entradas de imagem, keyframes e referências

Passe uma lista em vez de uma string quando quiser incluir mídia. Imagem para vídeo:

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"},
    ],
)

Duas imagens se tornam um primeiro e um último quadro, e o modelo gera o movimento entre eles:

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."},
    ],
)

As referências de vídeo funcionam da mesma forma através da API Files, limitadas a três clipes de três segundos cada. O áudio nesses clipes é ignorado; o modelo os lê para movimento e aparência.

Edição multi-turno

Isso é o que separa o Omni de um endpoint simples de texto para vídeo. Gere uma vez e depois edite de forma conversacional passando o ID da interação 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.",
)

Sem reenvio, sem redescrever a cena. O mesmo mecanismo impulsiona a extensão de cena, que é abordada no guia de extensão de 40 segundos.

Lidando com vídeos acima de 4MB

Qualquer coisa maior que 4MB retorna como um URI em vez de base64 inline, e o arquivo precisa terminar o processamento antes de poder ser baixado. Este é o bug que a maioria das pessoas encontra em 1080p: seu manipulador lê output_video.data, não encontra nada e relata uma falha silenciosa.

Peça a entrega por URI explicitamente e faça polling:

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)

Escreva seu manipulador de resposta para aceitar ambos os formatos desde o início. A resolução altera qual deles você recebe.

Teste a solicitação no Apidog

Uma vez que a chamada funciona, o problema muda. Você agora tem um endpoint caro, lento e não determinístico em seu caminho crítico, e precisa saber quando ele muda de comportamento. Comandos curl ad-hoc no histórico do shell não informam isso.

Configure-o uma vez no Apidog:

  1. Crie um projeto e um ambiente. Coloque GEMINI_API_KEY e MODEL_ID em variáveis de ambiente para que a chave nunca vá parar na solicitação salva.
  2. Adicione a solicitação. POST para https://generativelanguage.googleapis.com/v1beta/interactions, corpo JSON com model e input. Referencie as variáveis com {{MODEL_ID}}.
  3. Aumente o tempo limite. A geração de vídeo leva muito mais tempo do que a conclusão de texto, e o tempo limite padrão do cliente a interromperá.
  4. Adicione asserções. Verifique o código de status, verifique se output_video existe e verifique o formato da resposta que você espera para sua resolução. Esta é a asserção que detecta a troca entre inline e URI.
  5. Duplique para cada tipo de tarefa. Uma solicitação salva para cada um: texto para vídeo, imagem para vídeo e extensão. Quando o Google lançar o Omni 1.2, você executa três solicitações e saberá em minutos o que mudou.

O Apidog não gera vídeo e não é um framework de IA. É onde você constrói a solicitação, a envia e mantém a resposta a um padrão que você definiu. Baixe o Apidog se você quiser essa estrutura no lugar antes de aumentar seus gastos.

Erros comuns e correções

FAQ

Toda a integração consiste em dois campos obrigatórios mais um manipulador de resposta que lida com ambos os formatos de entrega. Faça uma chamada em 360p funcionar primeiro, salve-a com asserções e, em seguida, aumente a resolução quando confiar na infraestrutura. Leia a documentação oficial do Omni para a lista de parâmetros à medida que ela evolui.

Pratique o design de API no Apidog

Descubra uma forma mais fácil de construir e usar APIs