Zum Hauptinhalt springen
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:
ModellMulti-Quellen-Ref¹4KNatives Audio²Multi-Shot
kling/kling-v2-master
kling/kling-v2-1-master
kling/kling-v2-5-turbo
kling/kling-v2-6pro-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”.

Gängige Metadatenfelder

Diese drei gelten für jede Endpunkt-Variante:
FeldTypAnmerkungen
modestringstd (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_ratiostring16: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).
durationstringLä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):
FeldTypAnmerkungen
negative_promptstringDinge zu vermeiden. Max 2500 Zeichen.
cfg_scalefloatBereich [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):
StatusBedeutung
NOT_STARTAufgabenzeile erstellt, noch nicht versendet (vorübergehend, normalerweise unter 2s)
SUBMITTEDAn Kling-Upstream gesendet, wartet in deren Warteschlange
IN_PROGRESSKling rendert
SUCCESSFertig. data.result_url trägt das MP4
FAILUREFehlgeschlagen. 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.
FeldTypZweck
multi_shotboolAuf true setzen, um zu aktivieren. Top-Level-prompt und First-/End-Frame-Eingaben werden dann ignoriert.
shot_typestringcustomize (verwende multi_prompt wörtlich) oder intelligence (Kling segmentiert automatisch). Erforderlich, wenn multi_shot=true.
multi_promptarray[{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