API Kling Motion Control : faire copier une vidéo par un personnage
Kling Motion Control place le personnage d'une image dans le mouvement d'une vraie vidéo. Ce guide explique quoi envoyer, comment fonctionne la facturation à la seconde et comment appeler Kling 3.0 et 2.6 Motion Control via une seule API.
Ce que fait le contrôle du mouvement
Kling Motion Control prend deux éléments : l'image d'un personnage et la vidéo d'une personne en mouvement. Il produit un nouveau clip dans lequel le personnage de l'image exécute le mouvement de la vidéo, avec le même rythme, les mêmes gestes et le même langage corporel. C'est ce qui permet de réaliser des tendances de danse, des vidéos de mascottes et des porte-parole de produits qui bougent comme un vrai acteur, sans filmer le personnage lui-même.
Revana propose deux versions :
| Modèle | Identifiant du modèle | Résolution | Prix par seconde | Routes |
|---|---|---|---|---|
| Kling 3.0 Motion Control | kling-3.0-motion-control | 720p, 1080p | $0.13 en 720p, $0.17 en 1080p | deux routes |
| Kling 2.6 Motion Control | kling-2.6-motion-control | 720p, 1080p | $0.07 en 720p, $0.12 en 1080p | deux routes |
Kling 3.0 est le modèle le plus récent. Kling 2.6 coûte environ moitié moins en 720p : il vaut donc la peine d'être testé d'abord sur vos images.
Quoi envoyer
image_url: le personnage, idéalement en pied, face à la caméra, sur un fond uni. C'est lui qui apparaît dans le résultat.video_url: le clip de mouvement. Une seule personne, bien visible, avec une caméra stable, donne les meilleurs résultats. Le résultat suit sa durée.resolution:720pou1080p. Envoyez-le à chaque fois.prompt: facultatif, pour décrire le décor ou des détails absents de l'image.
Les deux fichiers doivent être des liens que l'API peut récupérer. Pour envoyer un fichier depuis votre ordinateur, téléversez-le d'abord avec POST /v1/uploads (clips jusqu'à 50 Mo) et utilisez le lien renvoyé ; il reste valable 14 jours.
Comment le contrôle du mouvement est facturé (octobre 2026)
Le prix est à la seconde de vidéo, et la durée est définie par votre clip de mouvement, arrondie à la seconde entière supérieure. Un clip de danse de 7,4 secondes est facturé comme 8 secondes.
| Modèle | Résolution | Clip de 5 s | Clip de 10 s | Clip de 15 s |
|---|---|---|---|---|
| Kling 3.0 Motion Control | 720p | $0.65 | $1.30 | $1.95 |
| Kling 3.0 Motion Control | 1080p | $0.85 | $1.70 | $2.55 |
| Kling 2.6 Motion Control | 720p | $0.35 | $0.70 | $1.05 |
| Kling 2.6 Motion Control | 1080p | $0.60 | $1.20 | $1.80 |
Découpez le clip de mouvement pour ne garder que la partie dont vous avez besoin avant de l'envoyer : chaque seconde supplémentaire est facturée. Définissez max_cost_usd sur le maximum que vous comptez payer pour la durée de votre clip, et une tâche qui coûterait plus cher est refusée au lieu d'être exécutée. Une tâche en échec ne coûte rien, et le crédit est prépayé à partir de $10 sans abonnement ; voir la page des tarifs.
Créer un clip avec contrôle du mouvement
Envoyez POST /v1/generations avec les deux liens, puis interrogez jusqu'à ce que la tâche soit succeeded ou failed. Avec un clip de mouvement de 10 secondes en 720p, cela coûte $1.30.
export REVANA_API_KEY="sr_live_..."
# 1. Submit the job (returns 202 with the generation id)
curl https://api.revana.si/v1/generations \
-H "Authorization: Bearer $REVANA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "kling-3.0-motion-control",
"input": {
"prompt": "The mascot dances on a sunny rooftop, city skyline behind.",
"image_url": "https://example.com/mascot-full-body.png",
"video_url": "https://example.com/dance-10s.mp4",
"resolution": "720p"
},
"max_cost_usd": 1.6
}'
# 2. Poll with the id from step 1 until status is "succeeded" or "failed"
curl https://api.revana.si/v1/generations/gen_01JC2V8K5T \
-H "Authorization: Bearer $REVANA_API_KEY"import os
import time
import requests
API = "https://api.revana.si/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['REVANA_API_KEY']}"}
resp = requests.post(f"{API}/generations", headers=HEADERS, json={
"model": "kling-3.0-motion-control",
"input": {
"prompt": "The mascot dances on a sunny rooftop, city skyline behind.",
"image_url": "https://example.com/mascot-full-body.png",
"video_url": "https://example.com/dance-10s.mp4",
"resolution": "720p",
},
"max_cost_usd": 1.6,
})
resp.raise_for_status()
job = resp.json()
while job["status"] in ("queued", "running"):
time.sleep(5)
job = requests.get(f"{API}/generations/{job['id']}", headers=HEADERS).json()
if job["status"] == "succeeded":
print(job["output"]["urls"], job["cost_usd"])
else:
print("Failed:", job["error"])// Node 18 or later. Save as generate.mjs and run: node generate.mjs
const API = "https://api.revana.si/v1";
const headers = {
Authorization: `Bearer ${process.env.REVANA_API_KEY}`,
"Content-Type": "application/json",
};
const res = await fetch(`${API}/generations`, {
method: "POST",
headers,
body: JSON.stringify({
model: "kling-3.0-motion-control",
input: {
prompt: "The mascot dances on a sunny rooftop, city skyline behind.",
image_url: "https://example.com/mascot-full-body.png",
video_url: "https://example.com/dance-10s.mp4",
resolution: "720p",
},
max_cost_usd: 1.6,
}),
});
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
let job = await res.json();
while (job.status === "queued" || job.status === "running") {
await new Promise((r) => setTimeout(r, 5000));
job = await (await fetch(`${API}/generations/${job.id}`, { headers })).json();
}
if (job.status === "succeeded") console.log(job.output.urls, job.cost_usd);
else console.error("Failed:", job.error);{
"id": "gen_01JC2V8K5T",
"model": "kling-3.0-motion-control",
"status": "succeeded",
"output": {
"urls": [
"https://cdn.revana.si/g/gen_01JC2V8K5T/0.mp4"
],
"duration_s": 10
},
"cost_usd": 1.3,
"attempts": 1,
"error": null,
"created_at": "2026-10-28T10:14:02Z",
"completed_at": "2026-10-28T10:15:31Z"
}Obtenir un résultat propre
- Accordez les cadrages. Un personnage en pied avec un clip de danse en pied fonctionne bien mieux qu'un portrait tête et épaules avec un clip en pied.
- Une seule personne qui bouge. Utilisez un clip où une seule personne bouge. Les foules et les coupes brouillent le mouvement à copier.
- Caméra stable. Une caméra fixe ou à déplacement lent garde l'arrière-plan stable.
- Faites des brouillons en 720p. Vérifiez le transfert du mouvement sur Kling 2.6 en 720p, puis rendez la version retenue en 1080p sur Kling 3.0.
Pour les modèles de texte vers vidéo et d'image vers vidéo de Kling, voir le guide de l'API Kling 3.0. Les deux modèles de contrôle du mouvement sont sur la page des modèles, avec chaque champ dans la documentation. Obtenez une clé API pour les essayer.
Questions fréquentes
Combien coûte Kling Motion Control ?
En octobre 2026, Kling 3.0 Motion Control coûte $0.13 la seconde en 720p et $0.17 en 1080p. Kling 2.6 Motion Control coûte $0.07 et $0.12. La durée est définie par votre clip de mouvement.
De quoi Kling Motion Control a-t-il besoin ?
Une image de personnage dans image_url, un clip de mouvement dans video_url et une résolution de 720p ou 1080p. Un prompt est facultatif.
Quelle est la durée d'une vidéo Kling Motion Control ?
Celle du clip de mouvement que vous envoyez. Vous êtes facturé à la seconde, arrondie à la seconde entière supérieure.
Quelle est la différence entre Kling 3.0 et Kling 2.6 Motion Control ?
Kling 3.0 est le modèle le plus récent. Kling 2.6 coûte moins cher par seconde. Les deux acceptent les mêmes entrées et proposent le 720p et le 1080p.
Puis-je téléverser ma propre vidéo de mouvement ?
Oui. Téléversez-la avec POST /v1/uploads (vidéo jusqu'à 50 Mo) et passez le lien renvoyé dans video_url.
Essayez Kling Motion Control avec une seule clé
Une seule clé API pour les deux modèles de contrôle du mouvement et tous les autres modèles de vidéo et d'image. Crédit prépayé à partir de $10, facturé uniquement pour les clips livrés.