Comment utiliser l'API Gemini Omni 1.1 Flash

Appelez gemini-omni-1.1-flash via l'API Interactions de Google : obtenez une clé, effectuez votre première requête curl et Python, gérez la livraison d'URI de 4 Mo et enregistrez l'appel en tant que test dans Apidog.

INEZA Felin-Michel

INEZA Felin-Michel

3 September 2026

Comment utiliser l'API Gemini Omni 1.1 Flash

Apidog pour les entreprises

Déploiement sur site

SSO & RBAC

Conforme SOC 2

Découvrir Apidog Enterprise

Vous appelez Gemini Omni 1.1 Flash avec l'ID de modèle gemini-omni-1.1-flash via l'API Interactions de Google, et non le point de terminaison generateContent que vous utilisez pour les modèles de texte. C'est la première chose qui déroute les utilisateurs. Si vous copiez un extrait de texte Gemini et échangez le nom du modèle, vous obtenez une erreur 404.

Ce guide vous emmène d'un terminal vide à une requête de génération vidéo testée. Vous obtiendrez une clé, effectuerez votre premier appel en curl et Python, apprendrez les paramètres qui existent (et la liste surprenante de ceux qui n'existent pas), gérerez les réponses volumineuses et sauvegarderez le tout comme un test reproductible.

Le modèle est passé en disponibilité générale le 27 août 2026. Pour savoir ce qui a été livré avec, consultez les nouveautés de Gemini Omni 1.1 Flash.

Ce dont vous avez besoin avant de commencer

Stockez la clé en tant que variable d'environnement plutôt que de la coller dans le code source :

export GEMINI_API_KEY="your_key_here"

Les SDK officiels lisent cette variable automatiquement, ce qui permet de garder le secret hors de votre dépôt.

Votre premier appel de génération vidéo

Le point de terminaison est une requête POST vers /v1beta/interactions. Voici comment l'utiliser en 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."
  }'

Deux champs : le modèle et l'entrée. C'est la requête minimale complète. La réponse contient la vidéo générée en base64 dans output_video.data.

En Python, installez le SDK avec pip install google-genai, puis :

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 suit la même structure avec @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'));
}

La génération prend du temps. La latence varie en fonction de la durée, de la résolution et de la charge actuelle de l'API, alors définissez un délai d'attente client généreux avant de conclure que quelque chose ne fonctionne pas.

Contrôle de la résolution et du rapport d'aspect

Tout ce qui concerne le format de sortie se trouve dans 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",
    },
)

Les valeurs acceptées :

Champ Valeurs Défaut
type video video
aspect_ratio 16:9, 9:16 16:9
resolution 360p, 720p, 1080p, 4k 720p
delivery base64 inline, uri inline

Brouillon en 360p. Il génère jusqu'à 60 % plus vite que le 720p et coûte un tiers du prix, de sorte que vos quinze tentatives de prompt jetables coûtent ce que cinq coûtaient auparavant. Refaites le rendu de celui que vous conservez à une résolution plus élevée. Les résolutions 1080p et 4k sont des agrandissements des images générées, et non des rendus natifs. La répartition des prix indique ce que chaque niveau coûte réellement par seconde.

Les paramètres qui n'existent pas

Cette liste est plus importante que la précédente, car vous risqueriez de perdre un après-midi :

Si vous devez exclure quelque chose d'une prise de vue, écrivez l'exclusion directement dans le prompt. L'exemple des documents fait exactement cela : « n'utilisez le dessin que comme guide pour le mouvement, ne montrez pas le dessin dans la vidéo finale. »

Entrées d'image, images clés et références

Passez une liste au lieu d'une chaîne de caractères lorsque vous souhaitez inclure des médias. Image vers vidéo :

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

Deux images deviennent une première image et une dernière image, et le modèle génère le mouvement entre elles :

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

Les références vidéo fonctionnent de la même manière via l'API Files, limitées à trois clips de trois secondes chacun. L'audio de ces clips est ignoré ; le modèle les interprète pour le mouvement et l'apparence.

Édition multi-tours

C'est ce qui distingue Omni d'un simple point de terminaison texte-vers-vidéo. Générez une fois, puis modifiez de manière conversationnelle en passant l'ID d'interaction précédent :

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

Pas de re-téléchargement, pas de re-description de la scène. Le même mécanisme est utilisé pour l'extension de scène, qui est couverte dans le guide d'extension de 40 secondes.

Gestion des vidéos de plus de 4 Mo

Tout ce qui est plus grand que 4 Mo est renvoyé sous forme d'URI au lieu de base64 inline, et le fichier doit finir d'être traité avant de pouvoir être téléchargé. C'est l'erreur que la plupart des gens rencontrent en 1080p : leur gestionnaire lit output_video.data, ne trouve rien et signale un échec silencieux.

Demandez explicitement la livraison par URI et sondez :

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)

Écrivez votre gestionnaire de réponse pour accepter les deux formats dès le début. La résolution modifie celui que vous obtenez.

Tester la requête dans Apidog

Une fois que l'appel fonctionne, le problème change. Vous avez maintenant un point de terminaison coûteux, lent et non déterministe dans votre chemin critique, et vous devez savoir quand son comportement change. Les commandes curl ad hoc dans l'historique du shell ne vous le diront pas.

Configurez-le une fois dans Apidog :

  1. Créez un projet et un environnement. Placez GEMINI_API_KEY et MODEL_ID dans des variables d'environnement afin que la clé n'atterrisse jamais dans la requête enregistrée.
  2. Ajoutez la requête. Effectuez un POST vers https://generativelanguage.googleapis.com/v1beta/interactions, corps JSON avec model et input. Référencez les variables avec {{MODEL_ID}}.
  3. Augmentez le délai d'attente. La génération vidéo est beaucoup plus longue qu'une complétion de texte, et le délai d'attente client par défaut la coupera.
  4. Ajoutez des assertions. Vérifiez le code de statut, vérifiez que output_video existe, et vérifiez la forme de réponse que vous attendez à votre résolution. C'est l'assertion qui détecte le basculement entre inline et URI.
  5. Dupliquez pour chaque type de tâche. Une requête enregistrée pour chaque type : texte-vers-vidéo, image-vers-vidéo et extension. Lorsque Google publiera Omni 1.2, vous exécuterez trois requêtes et saurez en quelques minutes ce qui a changé.

Apidog ne génère pas de vidéo et n'est pas un framework d'IA. C'est là que vous construisez la requête, l'envoyez et maintenez la réponse à une norme que vous définissez. Téléchargez Apidog si vous voulez avoir ce harnais en place avant d'augmenter vos dépenses.

Erreurs courantes et correctifs

FAQ

L'intégration complète se compose de deux champs obligatoires et d'un gestionnaire de réponse qui gère les deux formats de livraison. Faites d'abord fonctionner un appel en 360p, enregistrez-le avec des assertions, puis augmentez la résolution une fois que vous faites confiance au système. Lisez la documentation officielle d'Omni pour la liste des paramètres au fur et à mesure de son évolution.

Pratiquez le Design-first d'API dans Apidog

Découvrez une manière plus simple de créer et utiliser des API