Passer au contenu principal
OrcaRouter parle Kling nativement pour la génération vidéo. Vous soumettez une tâche, interrogez l’ID de tâche pour son statut, et récupérez le MP4 rendu une fois l’amont terminé (généralement 30 - 90 secondes). Ce motif asynchrone soumettre-puis-interroger est unique à la vidéo. Chat / images / TTS utilisent tous une requête-réponse synchrone ; la vidéo Kling non.
L’endpoint de soumission POST /v1/video/generations est partagé entre fournisseurs vidéo — la forme du corps de requête est sélectionnée par votre préfixe model. Cette page couvre model: kling/.... Pour les modèles ByteDance Seedance, utilisez model: byteplus/... et suivez Seedance Vidéo. L’endpoint de récupération GET /v1/video/generations/{task_id} est identique pour les deux.

Modèles

Tous les modèles prennent en charge texte-vers-vidéo et image-vers-vidéo. Les fonctionnalités avancées varient :
ModèleRéf. multi-source¹4KAudio natif²Multi-plan
kling/kling-v2-master
kling/kling-v2-1-master
kling/kling-v2-5-turbo
kling/kling-v2-6mode pro
kling/kling-v3
kling/kling-video-o1✓ (limité)
kling/kling-v3-omni✓ (complet)
¹ Référence multi-source = les champs de métadonnées image_list / video_list. Route vers l’endpoint amont Omni-Video de Kling quand présent. kling/kling-video-o1 est un sous-ensemble contraint (5s/10s uniquement, pas de multi-plan, pas d’audio) ; choisissez kling/kling-v3-omni pour la surface Omni complète. ² Audio natif = Kling génère automatiquement une bande sonore correspondant à la vidéo. Facturé en plus en amont. Activez via metadata.sound: "on". L’endpoint de soumission est le même pour tous les modèles — POST /v1/video/generations. Ce qui change est quels champs metadata l’amont honore selon le tableau ci-dessus.

Soumettre une tâche

Envoyez un POST à /v1/video/generations avec model, prompt et tous paramètres spécifiques à l’amont sous 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"
    }
  }'
La réponse porte l’ID de tâche :
{
  "id": "task_9q9oz6tjtgABYWC1QIqoz3sscgVz7ycw",
  "task_id": "task_9q9oz6tjtgABYWC1QIqoz3sscgVz7ycw",
  "object": "video",
  "model": "kling/kling-v3-omni",
  "status": "queued",
  "progress": 0,
  "created_at": 1777975188
}
POST retourne status: "queued" en minuscules. GET retourne une enveloppe enveloppée avec statut en majuscules (SUBMITTED / IN_PROGRESS / SUCCESS / FAILURE) — voir “Interroger les résultats” ci-dessous.

Champs de métadonnées communs

Ces trois s’appliquent à chaque variante d’endpoint :
ChampTypeNotes
modestringstd (720P) / pro (1080P) / 4k. 4k uniquement sur kling/kling-v3 et kling/kling-v3-omni. Le défaut est std pour texte/image-vers-vidéo, pro pour Omni-Video.
aspect_ratiostring16:9 / 9:16 / 1:1. Requis sur Omni-Video sauf si vous fournissez une référence de première image ou video_list (dans ces cas il est inféré de l’entrée).
durationstringLongueur en secondes. Défaut "5". kling/kling-v3-omni et kling/kling-v3 acceptent "3" à "15". La famille v2 (v2-master, v2-1-master, v2-5-turbo, v2-6) et kling/kling-video-o1 acceptent "5" ou "10". Voir Carte des capacités Kling pour la plage par modèle.
Ces deux fonctionnent sur texte-vers-vidéo et image-vers-vidéo uniquement (pas Omni-Video) :
ChampTypeNotes
negative_promptstringChoses à éviter. Max 2500 caractères.
cfg_scalefloatPlage [0, 1], défaut 0.5. Plus élevé = adhésion plus stricte au prompt. Non pris en charge sur les modèles v2.x (kling-v2-master / v2-1-master / v2-5-turbo / v2-6).

Interroger les résultats

Utilisez l’ID de tâche retourné au moment de la soumission :
curl https://api.orcarouter.ai/v1/video/generations/task_9q9oz6tjtgABYWC1QIqoz3sscgVz7ycw \
  -H "Authorization: Bearer sk-orca-..."
La forme de réponse est enveloppée :
{
  "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": ""
  }
}
Valeurs de statut (majuscules, état brut de la tâche) :
StatutSignification
NOT_STARTLigne de tâche créée, pas encore dispatchée (transitoire, généralement moins de 2s)
SUBMITTEDEnvoyé à l’amont Kling, en attente dans leur file
IN_PROGRESSKling effectue le rendu
SUCCESSTerminé. data.result_url porte le MP4
FAILUREÉchoué. data.fail_reason a la raison
La progression revient comme une chaîne de pourcentage ("30%", "100%"), pas un entier. Interrogez toutes les 5 - 10 secondes. Un clip std typique de 5 secondes se termine en 30 - 60 secondes ; les tâches 4K, 15 secondes et multi-plan prennent 2 - 5 minutes. data.result_url est une URL signée par Kling (notez les paramètres de requête ksTime / ksSecret). Téléchargez ou re-hébergez rapidement si vous avez besoin d’une rétention longue — la signature a une expiration définie en amont.

Variantes d’endpoint

Les trois variantes partagent POST /v1/video/generations. L’endpoint que Kling sert réellement est déterminé par les champs que vous fournissez.

Texte-vers-vidéo

Juste model + prompt (+ métadonnées optionnelles ci-dessus). Pas d’entrée image signifie texte-vers-vidéo :
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"}
  }'

Image-vers-vidéo

Ajoutez un image de niveau supérieur (première image) et / ou metadata.image_tail (dernière image) pour i2v première / dernière image :
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"}
  }'

Référence multi-source (Omni-Video)

image_list et video_list routent la requête vers l’endpoint Omni-Video de Kling. Disponible uniquement sur kling/kling-video-o1 et kling/kling-v3-omni. image_list — référence multi-image :
{ "image_list": [{ "image_url": "...", "type": "first_frame" }] }
  • image_url (requis) : URL ou base64 brut (sans préfixe data:).
  • type (optionnel) : first_frame / end_frame. Omettez sauf si l’image est destinée à ancrer une image. End seul n’est pas pris en charge (toujours associé avec une image de première image).
video_list — référence vidéo (max 1 vidéo, MP4/MOV, ≤200MB) :
{ "video_list": [{ "video_url": "...", "refer_type": "base", "keep_original_sound": "yes" }] }
  • refer_type : base (édition vidéo — la vidéo d’entrée est éditée ; défaut) ou feature (référence de style/composition — générer le plan suivant/précédent).
  • keep_original_sound : yes / no.
  • Sur kling/kling-v3-omni, la référence vidéo est prise en charge uniquement à 3-10s durée, mode std/pro (pas 4K).
Quand video_list est défini, metadata.sound doit être "off" — Kling rejette la combinaison sinon.
Référencez les images / vidéos / éléments dans le prompt avec la syntaxe <<<>>> : <<<image_1>>>, <<<video_1>>>, <<<element_1>>>. Omni uniquement. L’index correspond à l’ordre du tableau (base 1).
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"
    }
  }'

Fonctionnalités avancées

Ces fonctionnalités fonctionnent sur les endpoints texte-vers-vidéo, image-vers-vidéo et Omni-Video — le support modèle varie. Passez-les via metadata.

Multi-plan

Générez une vidéo composée de plusieurs plans séquentiels, chacun avec son propre prompt et durée. Disponible sur kling/kling-v3 et kling/kling-v3-omni.
ChampTypeObjectif
multi_shotboolDéfinir à true pour activer. Le prompt de niveau supérieur et les entrées première/dernière image sont alors ignorés.
shot_typestringcustomize (utiliser multi_prompt littéralement) ou intelligence (Kling auto-segmente). Requis quand multi_shot=true.
multi_promptarray[{index, prompt, duration}]. 1 - 6 storyboards. La duration de chaque plan ≥ 1s ; la somme doit égaler la duration totale de la tâche. Chaque prompt ≤ 512 caractères.

Audio natif

Kling génère automatiquement une bande sonore correspondant à la vidéo. Facturé en plus en amont. Activez via metadata.sound: "on" (défaut "off"). Support modèle :
  • kling/kling-v3 et kling/kling-v3-omni : tout mode (std / pro / 4K)
  • kling/kling-v2-6 : mode pro uniquement
  • Tous les autres modèles : non pris en charge

Filigrane

Passez metadata.watermark_info: {enabled: true} pour imprimer le filigrane de Kling sur la vidéo rendue. Le défaut est pas de filigrane.

Facturation

La vidéo Kling est facturée par tâche. OrcaRouter facture exactement ce que Kling facture — le final_unit_deduction amont devient le débit du portefeuille, sans marge. Le coût final correspond au tarif publié de Kling. Une petite réservation de pré-consommation est réservée au moment de la soumission pour couvrir le coût le plus plausible pour votre requête (par ex. 4K + audio) ; la différence est remboursée dès que la tâche réussit. Voir l’historique du portefeuille dans la console pour la dépense réelle par tâche.

Utiliser le SDK Kling directement

Si vous avez déjà du code écrit contre le SDK officiel Kling, OrcaRouter parle aussi le format wire natif de Kling sur /kling/v1/videos/.... Les champs du corps restent plats (model_name, mode, etc.) — seuls la base URL, l’en-tête Authorization et la valeur model_name changent :
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 doit utiliser l’identité de modèle côté OrcaRouter (le même nom que vous utiliseriez sur /v1/video/generations), pas le nom de modèle brut de Kling. OrcaRouter le résout via le model_mapping du canal avant de transmettre à Kling.
Le chemin de récupération correspondant est GET /kling/v1/videos/omni-video/{task_id} (ou text2video, image2video). Choisissez le format wire qui correspond à votre code existant. Les deux facturent identiquement.

Voir aussi