Sie rufen Gemini Omni 1.1 Flash mit der Modell-ID gemini-omni-1.1-flash über die Interactions API von Google auf, nicht über den generateContent-Endpunkt, den Sie für Textmodelle verwenden. Das ist das Erste, worüber die Leute stolpern. Wenn Sie ein Gemini-Text-Snippet kopieren und den Modellnamen austauschen, erhalten Sie einen 404-Fehler.
Diese Anleitung führt Sie von einem leeren Terminal zu einer getesteten Videoerzeugungsanfrage. Sie erhalten einen Schlüssel, tätigen Ihren ersten Aufruf in curl und Python, lernen die existierenden Parameter (und die überraschende Liste der nicht existierenden Parameter), handhaben große Antworten und speichern das Ganze als wiederholbaren Test.
Das Modell ging am 27. August 2026 in die allgemeine Verfügbarkeit (GA). Was damit ausgeliefert wurde, finden Sie unter was ist neu in Gemini Omni 1.1 Flash.
Was Sie vor dem Start benötigen
- Ein Google-Konto, um sich bei AI Studio anzumelden.
- Einen Gemini-API-Schlüssel von Google AI Studio.
- Abrechnung aktiviert. Omni hat keine kostenlose Stufe, im Gegensatz zur kostenlosen Nutzung der Textmodelle. Ihre erste Anfrage kostet Geld.
- Eine Methode zum Senden von HTTP-Anfragen: curl, das Python SDK oder ein API-Client.
Speichern Sie den Schlüssel als Umgebungsvariable, anstatt ihn in den Quelltext einzufügen:
export GEMINI_API_KEY="your_key_here"
Die offiziellen SDKs lesen diese Variable eigenständig aus, wodurch das Geheimnis aus Ihrem Repository ferngehalten wird.
Ihr erster Videoerzeugungsaufruf
Der Endpunkt ist ein POST an /v1beta/interactions. Hier ist er in 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."
}'
Zwei Felder: das Modell und die Eingabe. Das ist die gesamte minimale Anfrage. Die Antwort enthält das generierte Video als Base64 in output_video.data.
In Python installieren Sie das SDK mit pip install google-genai, dann:
import base64
from google import genai
client = genai.Client() # liest GEMINI_API_KEY aus der Umgebung
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 folgt der gleichen Struktur mit @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'));
}
Die Generierung braucht Zeit. Die Latenz skaliert mit Dauer, Auflösung und aktueller API-Auslastung, daher sollten Sie ein großzügiges Client-Timeout einstellen, bevor Sie annehmen, dass etwas kaputt ist.
Auflösung und Seitenverhältnis steuern
Alles zum Ausgabeformat steht in 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",
},
)
Die akzeptierten Werte:
| Feld | Werte | Standard |
|---|---|---|
type |
video |
video |
aspect_ratio |
16:9, 9:16 |
16:9 |
resolution |
360p, 720p, 1080p, 4k |
720p |
delivery |
inline base64, uri |
inline |
Entwurf in 360p. Es generiert bis zu 60% schneller als 720p und kostet nur ein Drittel, sodass Ihre fünfzehn verworfenen Prompt-Versuche so viel kosten wie früher fünf. Rendern Sie den, den Sie behalten möchten, in einer höheren Auflösung neu. 1080p und 4k sind Upscales der generierten Frames, keine nativen Renderings. Die Preisübersicht zeigt, was jede Stufe pro Sekunde tatsächlich kostet.
Die Parameter, die nicht existieren
Diese Liste ist wichtiger als die obige, denn sonst verschwenden Sie einen Nachmittag:
- Keine Systemanweisungen
- Keine
temperature - Kein
top_p - Keine Stoppsequenzen
- Kein Feld für negative Prompts
Wenn Sie etwas aus einer Aufnahme ausschließen müssen, schreiben Sie den Ausschluss direkt in den Prompt. Das Beispiel aus der Dokumentation macht genau das: „Verwenden Sie die Zeichnung nur als Anleitung für die Bewegung, zeigen Sie die Zeichnung nicht im endgültigen Video.“
Bildeingaben, Keyframes und Referenzen
Übergeben Sie eine Liste anstelle eines Strings, wenn Sie Medien einbeziehen möchten. Bild zu 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"},
],
)
Zwei Bilder werden zu einem ersten und einem letzten Frame, und das Modell generiert die Bewegung dazwischen:
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."},
],
)
Videoreferenzen funktionieren auf die gleiche Weise über die Files API, begrenzt auf drei Clips von jeweils drei Sekunden. Audio in diesen Clips wird ignoriert; das Modell liest sie für Bewegung und Erscheinung.
Mehrstufige Bearbeitung
Das unterscheidet Omni von einem einfachen Text-zu-Video-Endpunkt. Generieren Sie einmal, dann bearbeiten Sie konversationell, indem Sie die ID der vorherigen Interaktion übergeben:
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.",
)
Kein erneutes Hochladen, kein erneutes Beschreiben der Szene. Der gleiche Mechanismus treibt die Szenenerweiterung an, die im 40-Sekunden-Erweiterungsleitfaden behandelt wird.
Umgang mit Videos über 4 MB
Alles, was größer als 4 MB ist, wird als URI anstelle von inline Base64 zurückgegeben, und die Datei muss die Verarbeitung abgeschlossen haben, bevor Sie sie herunterladen können. Dies ist der Fehler, auf den die meisten Leute bei 1080p stoßen: Ihr Handler liest output_video.data, findet nichts und meldet einen stillen Fehler.
Fordern Sie die URI-Bereitstellung explizit an und fragen Sie ab (poll):
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("Generierung fehlgeschlagen.")
time.sleep(5)
video_bytes = client.files.download(file=video_output.uri)
with open("output.mp4", "wb") as f:
f.write(video_bytes)
Schreiben Sie Ihren Antwort-Handler so, dass er von Anfang an beide Formen akzeptiert. Die Auflösung bestimmt, welche Sie erhalten.
Die Anfrage in Apidog testen
Sobald der Aufruf funktioniert, verlagert sich das Problem. Sie haben nun einen teuren, langsamen, nicht-deterministischen Endpunkt in Ihrem kritischen Pfad, und Sie müssen wissen, wann sich sein Verhalten ändert. Ad-hoc-Curl-Befehle im Shell-Verlauf sagen Ihnen das nicht.
Richten Sie es einmal in Apidog ein:
- Erstellen Sie ein Projekt und eine Umgebung. Legen Sie
GEMINI_API_KEYundMODEL_IDin Umgebungsvariablen ab, damit der Schlüssel niemals in der gespeicherten Anfrage landet. - Fügen Sie die Anfrage hinzu. POST an
https://generativelanguage.googleapis.com/v1beta/interactions, JSON-Body mitmodelundinput. Referenzieren Sie die Variablen mit{{MODEL_ID}}. - Erhöhen Sie das Timeout. Die Videoerzeugung dauert viel länger als eine Textvervollständigung, und das standardmäßige Client-Timeout würde sie abbrechen.
- Fügen Sie Zusicherungen hinzu. Überprüfen Sie den Statuscode, stellen Sie sicher, dass
output_videoexistiert, und überprüfen Sie die Antwortform, die Sie bei Ihrer Auflösung erwarten. Dies ist die Zusicherung, die den Inline-versus-URI-Wechsel abfängt. - Duplizieren Sie für jeden Aufgabentyp. Eine gespeicherte Anfrage jeweils für Text-zu-Video, Bild-zu-Video und Erweiterung. Wenn Google Omni 1.2 veröffentlicht, führen Sie drei Anfragen aus und wissen in wenigen Minuten, was sich geändert hat.
Apidog generiert keine Videos und ist kein KI-Framework. Hier erstellen Sie die Anfrage, senden sie und halten die Antwort an einen von Ihnen festgelegten Standard. Laden Sie Apidog herunter, wenn Sie diese Kontrolle haben möchten, bevor Sie Ihre Ausgaben hochskalieren.
Häufige Fehler und Lösungen
- 404 am Endpunkt. Sie rufen
/v1beta/models/gemini-omni-1.1-flash:generateContentauf. Omni verwendet/v1beta/interactionsmit dem Modell im Body. - Leeres
output_video.data. Die Antwort kam als URI zurück, weil das Video 4MB überschritten hat. Lesen Sieoutput_video.uriund laden Sie es über die Files API herunter. - Modell nicht gefunden. Überprüfen Sie Ihre Konfiguration auf
gemini-omni-flash-preview. Dieser Endpunkt wird am 30. September 2026 eingestellt. - Bearbeitung eines hochgeladenen Videos schlägt fehl. Die Bearbeitung hochgeladener Videos ist im EWR, der Schweiz und dem Vereinigten Königreich nicht verfügbar. Modellgenerierte Videos funktionieren dort weiterhin.
- Erweiterungsanfrage abgelehnt. Eingabevideos sind auf 10 Sekunden begrenzt, die Erweiterung hängt nur am Ende an, und Sie können keinen Dialog hinzufügen, wenn Sie einen Upload erweitern.
FAQ
- Welchen Endpunkt verwendet Gemini Omni?
POST https://generativelanguage.googleapis.com/v1beta/interactions, mitgemini-omni-1.1-flashim Request Body. - Gibt es eine kostenlose Stufe für die Gemini Omni API? Nein. Jede Generierung wird abgerechnet. Die Textmodelle sind diejenigen mit einer kostenlosen AI Studio-Spur.
- Kann ich
temperatureoder einen negativen Prompt einstellen? Nein. Systemanweisungen,temperature,top_p, Stoppsequenzen und negative Prompts werden alle nicht unterstützt. Fügen Sie Ausschlüsse in den Prompt-Text ein. - Wie generiere ich vertikale Videos? Setzen Sie
aspect_ratioauf9:16inresponse_format. - Sind generierte Videos mit einem Wasserzeichen versehen? Ja. Alle Ausgaben tragen SynthID, unsichtbar für Zuschauer und programmatisch erkennbar.
- Wie vergleicht sich dies mit der Veo API? Anderer Endpunkt, andere Preisgestaltung, andere Stärken. Omni 1.1 Flash vs Veo 3.1 behandelt den Kompromiss, und der Veo 3.1 API-Leitfaden enthält die spezifischen Details dieser Integration.
Die gesamte Integration besteht aus zwei Pflichtfeldern plus einem Antwort-Handler, der beide Lieferformen bewältigt. Bringen Sie zuerst einen 360p-Aufruf zum Laufen, speichern Sie ihn mit Zusicherungen, und erhöhen Sie dann die Auflösung, sobald Sie der Implementierung vertrauen. Lesen Sie die offiziellen Omni-Dokumente für die Parameterliste, da sie sich weiterentwickelt.
