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èle | Réf. multi-source¹ | 4K | Audio natif² | Multi-plan |
|---|
kling/kling-v2-master | | | | |
kling/kling-v2-1-master | | | | |
kling/kling-v2-5-turbo | | | | |
kling/kling-v2-6 | | | mode 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 :
| Champ | Type | Notes |
|---|
mode | string | std (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_ratio | string | 16: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). |
duration | string | Longueur 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) :
| Champ | Type | Notes |
|---|
negative_prompt | string | Choses à éviter. Max 2500 caractères. |
cfg_scale | float | Plage [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) :
| Statut | Signification |
|---|
NOT_START | Ligne de tâche créée, pas encore dispatchée (transitoire, généralement moins de 2s) |
SUBMITTED | Envoyé à l’amont Kling, en attente dans leur file |
IN_PROGRESS | Kling effectue le rendu |
SUCCESS | Terminé. 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.
| Champ | Type | Objectif |
|---|
multi_shot | bool | Définir à true pour activer. Le prompt de niveau supérieur et les entrées première/dernière image sont alors ignorés. |
shot_type | string | customize (utiliser multi_prompt littéralement) ou intelligence (Kling auto-segmente). Requis quand multi_shot=true. |
multi_prompt | array | [{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