Kling 3.0 API: Request-Code für Text zu Video und echte Clips
Eine Text-zu-Video-Aufgabe ist ein einzelner POST mit dem Modell kling-3.0. Hier stehen der Request-Code, die Felder und zwei 5-Sekunden-Clips, die wir am 29. Oktober 2026 erstellt und gemessen haben.
Auf dieser Seite
- Was ein Kling-3.0-Request braucht
- Der Request-Code
- Zwei Clips, die wir erstellt haben
- Papierboot
- Teekanne
- Was die Dateien gemessen haben
- Was die Einzelbilder zeigen
- Fehler und Grenzen
- FAQ
- Welche Dauern akzeptiert kling-3.0?
- Worin unterscheiden sich std und pro?
- Haben die Clips Ton?
- Kann ich einen Clip aus einem Bild starten?
- Wie lange dauert die Erzeugung eines Clips?
Eine Text-zu-Video-Aufgabe für Kling 3.0 ist ein einzelner POST an https://api.omniakey.com/v1/media/tasks mit der Modell-ID kling-3.0, der Operation text_to_video und zwei Pflichtparametern: duration (5, 10 oder 15 Sekunden) und mode (std oder pro). Die Antwort enthält eine Task-ID; fragen Sie sie ab, bis sie erfolgreich ist, und laden Sie dann die MP4-Datei herunter. Am 29. Oktober 2026 haben wir zwei 5-Sekunden-Clips im Standardmodus mit 1280×720 erstellt und die Dateien sowie die Einzelbilder gemessen.
Was ein Kling-3.0-Request braucht
Im Body stehen sieben Felder. Zwei davon, duration und mode, sind bei Kling Pflicht und bestimmen Cliplänge und Qualitätsstufe.
| Feld | Was senden |
|---|---|
model | kling-3.0 |
type | video |
operation | text_to_video |
input.prompt | Szene, Aktion und Kamera in einem String |
parameters.duration | 5, 10 oder 15, in ganzen Sekunden |
parameters.mode | std oder pro |
parameters.aspect_ratio | 16:9, 9:16 oder 1:1 |
Das eigene Beispiel der Modellseite sendet duration 6 und ein Feld resolution mit 720p, und beides ist hier ungültig: Die Seite akzeptiert nur 5, 10 oder 15 Sekunden und schreibt, dass es kein separates Feld resolution gibt (Modellseite, geprüft am 29. Oktober 2026). Ihre FAQ ordnet die Standardausgabe 720P und pro 1080P zu.
Audio ist standardmäßig dabei, und die Seite listet keinen Schalter dafür (geprüft am 29. Oktober 2026). Das Seitenverhältnis gilt für Text zu Video; Image to Video übernimmt seine Form vom ersten Einzelbild und lehnt ein explizites Verhältnis ab. Diese beiden Läufe nutzten std bei 5 Sekunden und 16:9, während pro, 10 s und 15 s, 9:16 und 1:1, Image to Video und ein letztes Einzelbild außerhalb lagen.
Die Formulierung des Prompts bestimmt Szene, Aktion und Kamera. Der Kling-3.0-Prompt-Leitfaden erklärt die Teile eines Prompts und die Kamerasprache.
Der Request-Code
Eine einzige Python-Datei sendet den Body, fragt die Aufgabe ab und lädt die MP4-Datei herunter. Sie liest den Schlüssel aus OMNIAKEY_API_KEY, setzt einen zufälligen Idempotency-Key auf die Erstellungsanfrage und wartet zwischen den Abfragen 5 Sekunden, bis zu 180 Versuche. Der Body trägt dieselben Felder und Werte wie die beiden Clips im nächsten Abschnitt: Modell kling-3.0, type video, operation text_to_video, duration 5, mode std, Seitenverhältnis 16:9.
import json
import os
import time
import urllib.error
import urllib.request
import uuid
API = "https://api.omniakey.com/v1/media/tasks"
KEY = os.environ["OMNIAKEY_API_KEY"]
def request(method, url, body=None, extra_headers=None):
headers = {"Authorization": f"Bearer {KEY}", "User-Agent": "omniakey-example/1"}
data = None
if body is not None:
headers["Content-Type"] = "application/json"
data = json.dumps(body).encode()
headers.update(extra_headers or {})
req = urllib.request.Request(url, data=data, headers=headers, method=method)
with urllib.request.urlopen(req, timeout=120) as resp:
return json.load(resp)
def poll(url, attempts=5):
for attempt in range(attempts):
try:
return request("GET", url)
except urllib.error.HTTPError as err:
if err.code < 500 or attempt == attempts - 1:
raise
except urllib.error.URLError:
if attempt == attempts - 1:
raise
time.sleep(5 * (attempt + 1))
def text_to_video(prompt, out_path, duration=5, mode="std", aspect_ratio="16:9"):
body = {
"model": "kling-3.0",
"type": "video",
"operation": "text_to_video",
"input": {"prompt": prompt},
"parameters": {"duration": duration, "mode": mode, "aspect_ratio": aspect_ratio},
}
task = request("POST", API, body, {"Idempotency-Key": str(uuid.uuid4())})["id"]
print("task", task, flush=True)
for _ in range(180):
time.sleep(5)
state = poll(f"{API}/{task}")
if state["status"] not in ("queued", "processing"):
break
if state["status"] != "succeeded":
raise RuntimeError(state.get("error") or state["status"])
asset_url = state["assets"][0]["url"] # signierter Link: kurzlebig, deshalb sofort herunterladen
req = urllib.request.Request(asset_url, headers={"User-Agent": "omniakey-example/1"})
with urllib.request.urlopen(req, timeout=300) as resp, open(out_path, "wb") as f:
f.write(resp.read())
return task
if __name__ == "__main__":
task = text_to_video(
"A paper boat drifts slowly down a rain-soaked street at dusk. Warm streetlights reflect on "
"the wet cobblestones. The camera follows the boat at a steady pace. No people, no text.",
"paper-boat.mp4",
)
print("done", task)
Jede Abfrage ist ein GET auf den Task-Pfad, und die Schleife folgt dem status statt progress.percent, das während des Renderings bei 0 bleiben kann. Sobald der Status nicht mehr queued oder processing ist, endet der Code: succeeded führt zum Download von assets[0].url, jeder andere Status wirft die Fehlermeldung der Aufgabe. Der Download erfolgt sofort, weil dieser Asset-Link abläuft; fragen Sie die Aufgabe erneut ab, wenn er abgelaufen ist. Eine Abfrage, die auf eine abgebrochene Verbindung oder einen Serverfehler (5xx) trifft, wird bis zu fünfmal wiederholt, mit jeweils längerer Pause.
Wir haben diese Datei am 29. Oktober 2026 noch einmal mit denselben Einstellungen ausgeführt. Der erste Versuch verlor während des Pollings die Verbindung, deshalb wiederholt das Polling jetzt. Der zweite Lauf lieferte die Aufgabe task_PNB1kPopriUyfcHsXhVWY2hBOEoSUIqM, und ihre MP4-Datei maß 5.04 Sekunden bei 1280×720 mit einer Stereo-AAC-Spur. Von der Erstellung bis zum Download dauerte es 807 Sekunden, gegenüber 82.2 und 110.7 Sekunden für die beiden Clips unten, also planen Sie lange Wartezeiten ein.
Zwei Clips, die wir erstellt haben
Beide Anfragen gingen am 29. Oktober 2026 mit dem oben genannten Body raus. Die Paper-Boat-Aufgabe ist task_cbOtsBxO75cml3nOmVUu9YG3PkYXW2ja, die Teapot-Aufgabe ist task_M2Ub1EoCaCUa1FjOZDdWDOuEOS9nRjnt. Jeder Prompt wurde genau so gesendet, wie er geschrieben ist.
Papierboot
A paper boat drifts slowly down a rain-soaked street at dusk. Warm streetlights reflect on the wet cobblestones. The camera follows the boat at a steady pace. No people, no text.

Teekanne
A ceramic teapot sits on a wooden table by a window. Steam rises in slow curls. Soft morning light moves across the table. The camera pushes in slowly. No people, no text.

Was die Dateien gemessen haben
Ein Clip-Tool hat jeden Download am 29. Oktober 2026 gemessen.
- Papierboot — Größe: 1280×720; Bildrate: 24.0 fps; Dauer: 5.04 s; Audio: AAC, 2 Kanäle, 44.1 kHz; Mittlerer Pegel: −50.9 dB; Maximalpegel: −34.0 dB; Schnitte: keine
- Teekanne — Größe: 1280×720; Bildrate: 24.0 fps; Dauer: 5.04 s; Audio: AAC, 2 Kanäle, 44.1 kHz; Mittlerer Pegel: −54.3 dB; Maximalpegel: −35.9 dB; Schnitte: keine
- Clip aus dem Code-Lauf — Größe: 1280×720; Bildrate: 24.0 fps; Dauer: 5.04 s; Audio: AAC, 2 Kanäle, 44.1 kHz; Mittlerer Pegel: −48.4 dB; Maximalpegel: −20.0 dB; Schnitte: keine
Die ersten beiden Clips sind sehr leise: mittlere Pegel von −50.9 dB und −54.3 dB, mit Spitzen bei −34.0 dB und −35.9 dB. Der Clip aus dem Code-Lauf ist lauter, mit einem Mittelwert von −48.4 dB und einer Spitze von −20.0 dB. Gemessen wurde nur der Pegel; der Inhalt der Spuren lag außerhalb der Messung. Der Szenenwechsel-Detektor fand in keinem der drei einen starken oder schwachen Schnitt, sodass jeder Clip als eine Einstellung läuft.
Was die Einzelbilder zeigen
Beide Clips folgen dem Prompt, und die Teekanne fügt eine kleine eigene Bewegung hinzu.
Im Papierboot-Clip bleibt das Boot über die ganzen 5.04 Sekunden nahe der Bildmitte, während die nasse Straße dahinter vorbeizieht, sodass die Einstellung als mitfahrende Kamera wirkt. Die warmen Laternenreflexe bleiben bis zum letzten Einzelbild auf dem Pflaster (Einzelbilder geprüft am 29. Oktober 2026). Kein Schnitt unterbricht die Fahrt.
Im Teekannen-Clip steigt der Dampf in langsamen Kringeln auf und verblasst, und das Morgenlicht wandert über den Holztisch. Die Teekanne endet größer und weiter unten rechts als zu Beginn, was als Push-in mit etwas seitlichem Drift wirkt; der Prompt verlangte einen langsamen Push-in, und der Drift ist etwas, das der Prompt nicht verlangte (Einzelbilder geprüft am 29. Oktober 2026).

Fehler und Grenzen
Eine Dauer außerhalb von 5, 10 und 15 liefert HTTP 400 model_price_error, und es wird kein Job erstellt (Video-API-Dokumentation, geprüft am 29. Oktober 2026). Senden Sie ganze Sekunden aus den drei erlaubten Werten.
Eine Erstellungsanfrage ohne Idempotency-Key liefert 400 missing_idempotency_key; der Schlüssel kann bis zu 255 Zeichen lang sein. Derselbe Schlüssel mit demselben Body liefert die vorhandene Aufgabe mit HTTP 200 und es wird nichts Neues berechnet, während ein geänderter Body unter diesem Schlüssel 409 idempotency_key_reused liefert (Medien-API-Übersicht, geprüft am 29. Oktober 2026).
Am 29. Oktober 2026 lieferte ein POST mit dem Standard-User-Agent von Pythons urllib HTTP 403 mit dem Body error code: 1010 von Cloudflare, und unser eigener User-Agent-Header erreichte die API. Setzen Sie einen User-Agent in der Erstellungsanfrage und beim Download.
Ausgabelinks sind kurzlebig: Fragen Sie die Aufgabe erneut ab, um eine frische assets[].url zu bekommen, statt eine zu speichern (Video-API-Dokumentation, geprüft am 29. Oktober 2026). Task-Datensätze werden 24 Stunden nach der Erstellung aufbewahrt (Medien-API-Übersicht, geprüft am 29. Oktober 2026).
Kling 3.0 wird pro Generierung abgerechnet, nicht pro Sekunde (Video-API-Dokumentation, geprüft am 29. Oktober 2026). Aktuelle Preise finden Sie unter OmniaKey-Preise.
FAQ
Welche Dauern akzeptiert kling-3.0?
5, 10 und 15 Sekunden. Jeder andere Wert liefert HTTP 400 model_price_error und erstellt keinen Job (Video-API-Dokumentation, geprüft am 29. Oktober 2026).
Worin unterscheiden sich std und pro?
Die Modellseite nennt sie Standard und Pro und ordnet die Standardausgabe 720P und pro 1080P zu (geprüft am 29. Oktober 2026). Wir haben nur std ausgeführt, daher haben wir keinen gemessenen Unterschied zwischen beiden.
Haben die Clips Ton?
Jeder Clip trägt eine AAC-Spur mit zwei Kanälen bei 44.1 kHz. Die ersten beiden sind sehr leise, mit mittleren Pegeln von −50.9 dB und −54.3 dB; der Clip aus dem Code-Lauf ist lauter, mit einem Mittelwert von −48.4 dB und einer Spitze von −20.0 dB. Wir haben nur den Pegel gemessen und den Inhalt nicht bestimmt.
Kann ich einen Clip aus einem Bild starten?
Die Modellseite listet Image to Video mit einem ersten Einzelbild und einem optionalen letzten Einzelbild (geprüft am 29. Oktober 2026). Das erste Einzelbild legt das Seitenverhältnis fest, und ein explizites Seitenverhältnis wird bei dieser Operation abgelehnt.
Wie lange dauert die Erzeugung eines Clips?
In unseren beiden Läufen am 29. Oktober 2026 war das Papierboot in 110.7 Sekunden fertig und die Teekanne in 82.2 Sekunden. Beide waren 5-Sekunden-std-Clips in 16:9.
Beginnen Sie auf der Kling-3.0-Modellseite und senden Sie denselben Body mit Ihrem eigenen Prompt.
Modelle in diesem Artikel
Verwandte Artikel
Kling 3.0 Prompt-Guide: Aufbau, Beispiele und echte Clips
Vier Prompts, vier echte Clips: wo die Schnitte lagen, welcher Dialog ankam und wo sich die Kamera nicht bewegt hat.
Kling 3.0 vs Seedance 2.5
Beide Modelle laufen auf OmniaKey und können dieselbe Einstellung bedienen. Der Unterschied liegt im Abrechnungsvertrag. Eines rechnet pro Generierung nach einer Matrix aus mode und duration ab, das andere pro Ausgabesekunde mal Auflösung, und nur eines akzeptiert eine referenzgesteuerte Einstellung.
HappyHorse 1.1 vs Kling 3.0: Test mit gleichem Prompt und Preis
Dieselben drei Prompts: HappyHorse 1.1 gewann die volle Szene und den Parfüm-Orbit, Kling 3.0 landete den Stunt.

