OrcaRouter spricht Kling nativ für Videogenerierung. Du reichst eine
Aufgabe ein, fragst die Aufgaben-ID nach ihrem Status ab und holst
das gerenderte MP4 ab, sobald der Upstream fertig ist (typischerweise
30 - 90 Sekunden).
Dieses asynchrone Einreichen-dann-Abfragen-Muster ist einzigartig
für Video. Chat / Bilder / TTS verwenden alle synchrone
Request-Response; Kling-Video nicht.
Der Einreichungs-Endpunkt POST /v1/video/generations wird über
Video-Anbieter hinweg geteilt — die Form des Request-Body wird
durch dein model-Präfix ausgewählt. Diese Seite behandelt
model: kling/.... Für ByteDance-Seedance-Modelle verwende
model: byteplus/... und folge
Seedance Video. Der Abruf-Endpunkt
GET /v1/video/generations/{task_id} ist für beide identisch.
Modelle
Alle Modelle unterstützen Text-zu-Video und Bild-zu-Video.
Erweiterte Funktionen variieren:
| Modell | Multi-Quellen-Ref¹ | 4K | Natives Audio² | Multi-Shot |
|---|
kling/kling-v2-master | | | | |
kling/kling-v2-1-master | | | | |
kling/kling-v2-5-turbo | | | | |
kling/kling-v2-6 | | | pro-Modus | |
kling/kling-v3 | | ✓ | ✓ | ✓ |
kling/kling-video-o1 | ✓ (begrenzt) | | | |
kling/kling-v3-omni | ✓ (vollständig) | ✓ | ✓ | ✓ |
¹ Multi-Quellen-Referenz = die Metadatenfelder image_list /
video_list. Routet zum Omni-Video-Upstream-Endpunkt von Kling,
wenn vorhanden. kling/kling-video-o1 ist eine eingeschränkte
Teilmenge (nur 5s/10s, kein Multi-Shot, kein Audio); wähle
kling/kling-v3-omni für die vollständige Omni-Oberfläche.
² Natives Audio = Kling generiert automatisch einen Soundtrack
passend zum Video. Wird im Upstream extra abgerechnet. Schalte über
metadata.sound: "on" ein.
Der Einreichungs-Endpunkt ist für alle Modelle gleich —
POST /v1/video/generations. Was sich ändert, ist, welche
metadata-Felder der Upstream gemäß der obigen Tabelle honoriert.
Eine Aufgabe einreichen
Sende einen POST an /v1/video/generations mit model, prompt
und allen Upstream-spezifischen Parametern unter metadata:
curl https://api.orcarouter.ai/v1/video/generations \
-H "Authorization: Bearer sk-orca-..." \
-H "Content-Type: application/json" \
-d '{
"model": "kling/kling-v3-omni",
"prompt": "cat playing piano in a sunny room",
"metadata": {
"mode": "std",
"aspect_ratio": "16:9",
"duration": "5"
}
}'
Die Antwort trägt die Aufgaben-ID:
{
"id": "task_9q9oz6tjtgABYWC1QIqoz3sscgVz7ycw",
"task_id": "task_9q9oz6tjtgABYWC1QIqoz3sscgVz7ycw",
"object": "video",
"model": "kling/kling-v3-omni",
"status": "queued",
"progress": 0,
"created_at": 1777975188
}
POST gibt status: "queued" in Kleinbuchstaben zurück. GET gibt
einen umhüllten Umschlag mit Status in Großbuchstaben (SUBMITTED
/ IN_PROGRESS / SUCCESS / FAILURE) zurück — siehe unten
“Ergebnisse abfragen”.
Diese drei gelten für jede Endpunkt-Variante:
| Feld | Typ | Anmerkungen |
|---|
mode | string | std (720P) / pro (1080P) / 4k. 4k nur auf kling/kling-v3 und kling/kling-v3-omni. Standard ist std für Text-/Bild-zu-Video, pro für Omni-Video. |
aspect_ratio | string | 16:9 / 9:16 / 1:1. Auf Omni-Video erforderlich, es sei denn, du lieferst eine First-Frame-Referenz oder video_list (in diesen Fällen wird es aus der Eingabe abgeleitet). |
duration | string | Länge in Sekunden. Standard "5". kling/kling-v3-omni und kling/kling-v3 akzeptieren "3" bis "15". v2-Familie (v2-master, v2-1-master, v2-5-turbo, v2-6) und kling/kling-video-o1 akzeptieren "5" oder "10". Siehe Kling Capability Map für den autoritativen Bereich pro Modell. |
Diese zwei funktionieren nur auf Text-zu-Video und Bild-zu-Video
(nicht Omni-Video):
| Feld | Typ | Anmerkungen |
|---|
negative_prompt | string | Dinge zu vermeiden. Max 2500 Zeichen. |
cfg_scale | float | Bereich [0, 1], Standard 0.5. Höher = strengere Prompt-Treue. Nicht unterstützt auf v2.x-Modellen (kling-v2-master / v2-1-master / v2-5-turbo / v2-6). |
Ergebnisse abfragen
Verwende die zur Einreichungszeit zurückgegebene Aufgaben-ID:
curl https://api.orcarouter.ai/v1/video/generations/task_9q9oz6tjtgABYWC1QIqoz3sscgVz7ycw \
-H "Authorization: Bearer sk-orca-..."
Die Antwortform ist umhüllt:
{
"code": "success",
"message": "",
"data": {
"task_id": "task_9q9oz6tjtgABYWC1QIqoz3sscgVz7ycw",
"status": "SUCCESS",
"progress": "100%",
"result_url": "https://v16-kling-fdl.klingai.com/.../video.mp4?...",
"action": "omniVideo",
"submit_time": 1777975188,
"start_time": 1777975241,
"finish_time": 1777975277,
"fail_reason": ""
}
}
Statuswerte (Großbuchstaben, roher Aufgabenstatus):
| Status | Bedeutung |
|---|
NOT_START | Aufgabenzeile erstellt, noch nicht versendet (vorübergehend, normalerweise unter 2s) |
SUBMITTED | An Kling-Upstream gesendet, wartet in deren Warteschlange |
IN_PROGRESS | Kling rendert |
SUCCESS | Fertig. data.result_url trägt das MP4 |
FAILURE | Fehlgeschlagen. data.fail_reason hat den Grund |
Fortschritt kommt als Prozent-String ("30%", "100%") zurück,
nicht als Integer.
Frage alle 5 - 10 Sekunden ab. Ein typischer std-5-Sekunden-Clip
wird in 30 - 60 Sekunden abgeschlossen; 4K-, 15-Sekunden- und
Multi-Shot-Aufgaben dauern 2 - 5 Minuten.
data.result_url ist eine Kling-signierte URL (beachte die
ksTime / ksSecret-Query-Parameter). Lade herunter oder hoste
neu, wenn du lange Aufbewahrung benötigst — die Signatur hat einen
vom Upstream definierten Ablauf.
Endpunkt-Varianten
Alle drei Varianten teilen sich POST /v1/video/generations. Der
Endpunkt, den Kling tatsächlich bedient, wird dadurch bestimmt,
welche Felder du lieferst.
Text-zu-Video
Nur model + prompt (+ optionale Metadaten oben). Keine
Bildeingabe bedeutet Text-zu-Video:
curl https://api.orcarouter.ai/v1/video/generations \
-H "Authorization: Bearer sk-orca-..." \
-H "Content-Type: application/json" \
-d '{
"model": "kling/kling-v2-6",
"prompt": "ocean waves at sunset, cinematic",
"metadata": {"mode": "pro", "duration": "5"}
}'
Bild-zu-Video
Füge ein Top-Level-image (erstes Bild) und / oder
metadata.image_tail (letztes Bild) für First-/Last-Frame-i2v hinzu:
curl https://api.orcarouter.ai/v1/video/generations \
-H "Authorization: Bearer sk-orca-..." \
-H "Content-Type: application/json" \
-d '{
"model": "kling/kling-v2-master",
"prompt": "the cat starts dancing",
"image": "https://example.com/cat.png",
"metadata": {"mode": "std", "duration": "5"}
}'
Multi-Quellen-Referenz (Omni-Video)
image_list und video_list routen die Anfrage an den
Omni-Video-Endpunkt von Kling. Nur auf kling/kling-video-o1 und
kling/kling-v3-omni verfügbar.
image_list — Multi-Bild-Referenz:
{ "image_list": [{ "image_url": "...", "type": "first_frame" }] }
image_url (erforderlich): URL oder rohes Base64 (ohne
data:-Präfix).
type (optional): first_frame / end_frame. Lass weg, es sei
denn, das Bild ist als Frame-Anker gedacht. Nur-Ende wird nicht
unterstützt (immer mit einem First-Frame-Bild paaren).
video_list — Video-Referenz (max 1 Video, MP4/MOV, ≤200MB):
{ "video_list": [{ "video_url": "...", "refer_type": "base", "keep_original_sound": "yes" }] }
refer_type: base (Videobearbeitung — Eingabevideo wird
bearbeitet; Standard) oder feature (Stil-/Kompositionsreferenz —
nächsten/vorherigen Shot generieren).
keep_original_sound: yes / no.
- Auf
kling/kling-v3-omni wird Video-Referenz nur bei 3-10s
Dauer, std/pro-Modus (nicht 4K) unterstützt.
Wenn video_list gesetzt ist, muss metadata.sound "off" sein
— Kling lehnt die Kombination sonst ab.
Referenziere Bilder / Videos / Elemente innerhalb des Prompts mit
der <<<>>>-Syntax: <<<image_1>>>, <<<video_1>>>,
<<<element_1>>>. Nur Omni. Der Index entspricht der
Array-Reihenfolge (1-basiert).
curl https://api.orcarouter.ai/v1/video/generations \
-H "Authorization: Bearer sk-orca-..." \
-H "Content-Type: application/json" \
-d '{
"model": "kling/kling-v3-omni",
"prompt": "<<<image_1>>> waves at the camera, then walks toward the ocean",
"metadata": {
"image_list": [{"image_url": "https://example.com/person.jpg"}],
"mode": "pro",
"aspect_ratio": "16:9",
"duration": "5",
"sound": "on"
}
}'
Erweiterte Funktionen
Diese Funktionen arbeiten über die Text-zu-Video-,
Bild-zu-Video- und Omni-Video-Endpunkte — die Modellunterstützung
variiert. Übergib sie über metadata.
Multi-Shot
Generiere ein Video, das aus mehreren sequenziellen Shots besteht,
jeder mit eigenem Prompt und eigener Dauer. Verfügbar auf
kling/kling-v3 und kling/kling-v3-omni.
| Feld | Typ | Zweck |
|---|
multi_shot | bool | Auf true setzen, um zu aktivieren. Top-Level-prompt und First-/End-Frame-Eingaben werden dann ignoriert. |
shot_type | string | customize (verwende multi_prompt wörtlich) oder intelligence (Kling segmentiert automatisch). Erforderlich, wenn multi_shot=true. |
multi_prompt | array | [{index, prompt, duration}]. 1 - 6 Storyboards. Die duration jedes Shots ≥ 1s; Summe muss der Gesamt-duration der Aufgabe entsprechen. Jeder prompt ≤ 512 Zeichen. |
Natives Audio
Kling generiert automatisch einen Soundtrack passend zum Video.
Wird im Upstream extra abgerechnet. Schalte über
metadata.sound: "on" (Standard "off") ein.
Modellunterstützung:
kling/kling-v3 und kling/kling-v3-omni: beliebiger Modus
(std / pro / 4K)
kling/kling-v2-6: nur pro-Modus
- Alle anderen Modelle: nicht unterstützt
Wasserzeichen
Übergib metadata.watermark_info: {enabled: true}, um Klings
Wasserzeichen auf das gerenderte Video zu drucken. Standard ist
kein Wasserzeichen.
Abrechnung
Kling-Video wird pro Aufgabe abgerechnet. OrcaRouter berechnet
genau das, was Kling berechnet — die Upstream-
final_unit_deduction wird zur Wallet-Belastung, ohne Aufschlag.
Die Endkosten entsprechen dem veröffentlichten Tarifkartendaten von
Kling.
Ein kleiner Pre-Consume-Hold wird zur Einreichungszeit reserviert,
um die plausibelsten Höchstkosten für deine Anfrage zu decken (z.
B. 4K + Audio); die Differenz wird zurückerstattet, sobald die
Aufgabe erfolgreich ist.
Siehe deine Wallet-Historie in der Konsole für die tatsächlichen
Ausgaben pro Aufgabe.
Die Kling-SDK direkt verwenden
Wenn du bereits Code gegen die offizielle SDK von Kling geschrieben
hast, spricht OrcaRouter auch das native Wire-Format von Kling auf
/kling/v1/videos/.... Body-Felder bleiben flach (model_name,
mode, usw.) — nur die Basis-URL, der Authorization-Header und
der model_name-Wert ändern sich:
curl https://api.orcarouter.ai/kling/v1/videos/omni-video \
-H "Authorization: Bearer sk-orca-..." \
-H "Content-Type: application/json" \
-d '{
"model_name": "kling/kling-v3-omni",
"prompt": "cat playing piano",
"mode": "pro",
"aspect_ratio": "16:9",
"duration": "5",
"sound": "on"
}'
model_name muss die OrcaRouter-seitige Modellidentität verwenden
(derselbe Name, den du auf /v1/video/generations verwenden
würdest), nicht den reinen Modellnamen von Kling. OrcaRouter löst
ihn über das model_mapping des Kanals auf, bevor er an Kling
weitergeleitet wird.
Der entsprechende Abrufpfad ist
GET /kling/v1/videos/omni-video/{task_id} (oder text2video,
image2video).
Wähle das Wire-Format, das zu deinem bestehenden Code passt. Beide
rechnen identisch ab.
Siehe auch