Guía del modelo

API de Kling Motion Control: haz que un personaje copie un vídeo

Kling Motion Control lleva al personaje de una imagen al movimiento de un vídeo real. Esta guía cubre qué enviar, cómo funciona la facturación por segundo y cómo llamar a Kling 3.0 y 2.6 Motion Control con una sola API.

Qué hace Motion Control

Kling Motion Control toma dos cosas: una imagen de un personaje y un vídeo de alguien moviéndose. Crea un clip nuevo en el que el personaje de la imagen realiza el movimiento del vídeo, con los mismos tiempos, gestos y lenguaje corporal. Es como se hacen las tendencias de baile, los vídeos de mascotas y los portavoces de producto que se mueven como un actor real sin grabar al propio personaje.

Revana ofrece dos versiones:

Versiones de Kling Motion Control comparadas
ModeloId del modeloResoluciónPrecio por segundoRutas
Kling 3.0 Motion Controlkling-3.0-motion-control720p, 1080p$0.13 en 720p, $0.17 en 1080pdos rutas
Kling 2.6 Motion Controlkling-2.6-motion-control720p, 1080p$0.07 en 720p, $0.12 en 1080pdos rutas

Kling 3.0 es el modelo más reciente. Kling 2.6 cuesta aproximadamente la mitad en 720p, así que vale la pena probarlo primero con tu material.

Qué enviar

  • image_url: el personaje, idealmente de cuerpo entero, mirando a cámara, sobre un fondo liso. Es quien aparece en el resultado.
  • video_url: el clip de movimiento. Lo que mejor funciona es una sola persona, bien visible, con la cámara estable. El resultado sigue su duración.
  • resolution: 720p o 1080p. Envíalo siempre.
  • prompt: opcional, para describir el entorno o detalles que no están en la imagen.

Ambos archivos deben ser enlaces que la API pueda descargar. Para enviar un archivo de tu ordenador, súbelo primero con POST /v1/uploads (clips de hasta 50 MB) y usa el enlace que devuelve; sigue siendo válido durante 14 días.

Cómo se factura Motion Control (octubre de 2026)

El precio es por segundo de vídeo, y la duración la define tu clip de movimiento, redondeada hacia arriba al siguiente segundo completo. Un clip de baile de 7.4 segundos se factura como 8 segundos.

Coste de Kling Motion Control según la duración del clip
ModeloResoluciónClip de 5 sClip de 10 sClip de 15 s
Kling 3.0 Motion Control720p$0.65$1.30$1.95
Kling 3.0 Motion Control1080p$0.85$1.70$2.55
Kling 2.6 Motion Control720p$0.35$0.70$1.05
Kling 2.6 Motion Control1080p$0.60$1.20$1.80

Recorta el clip de movimiento a la parte que necesitas antes de enviarlo: cada segundo extra se factura. Establece max_cost_usd en lo máximo que esperas pagar para la duración de tu clip, y un trabajo que costaría más se rechaza en lugar de ejecutarse. Un trabajo fallido no cuesta nada, y el crédito es prepago desde $10 sin suscripción; consulta la página de precios.

Crea un clip con Motion Control

Envía POST /v1/generations con ambos enlaces y consulta el estado periódicamente hasta que el trabajo tenga succeeded o failed. Con un clip de movimiento de 10 segundos en 720p, esto cuesta $1.30.

cURL
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"
Python
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.js
// 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);
Respuesta
{
  "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"
}

Cómo conseguir un resultado limpio

  • Ajusta el encuadre. Un personaje de cuerpo entero con un clip de baile de cuerpo entero funciona mucho mejor que un retrato de cabeza y hombros con un clip de cuerpo entero.
  • Una sola persona en movimiento. Usa un clip con una persona moviéndose. Las multitudes y los cortes confunden qué movimiento copiar.
  • Cámara estable. Una cámara fija o que se mueve despacio mantiene el fondo estable.
  • Haz borradores en 720p. Comprueba la transferencia de movimiento en Kling 2.6 a 720p y renderiza la versión definitiva en 1080p con Kling 3.0.

Para los modelos de texto a vídeo e imagen a vídeo de Kling, consulta la guía de la API de Kling 3.0. Ambos modelos de Motion Control están en la página de modelos, con todos los campos en la documentación. Obtén una clave de API para probarlos.

Preguntas frecuentes

¿Cuánto cuesta Kling Motion Control?

En octubre de 2026, Kling 3.0 Motion Control cuesta $0.13 por segundo en 720p y $0.17 en 1080p. Kling 2.6 Motion Control cuesta $0.07 y $0.12. La duración la define tu clip de movimiento.

¿Qué necesita Kling Motion Control?

Una imagen del personaje en image_url, un clip de movimiento en video_url y una resolución de 720p o 1080p. El prompt es opcional.

¿Cuánto dura un vídeo de Kling Motion Control?

Lo mismo que el clip de movimiento que envíes. Se factura por segundo, redondeado hacia arriba al segundo completo.

¿Cuál es la diferencia entre Kling 3.0 y Kling 2.6 Motion Control?

Kling 3.0 es el modelo más reciente. Kling 2.6 cuesta menos por segundo. Ambos aceptan las mismas entradas y ofrecen 720p y 1080p.

¿Puedo subir mi propio vídeo de movimiento?

Sí. Súbelo con POST /v1/uploads (vídeo de hasta 50 MB) y pasa el enlace devuelto en video_url.

Prueba Kling Motion Control con una sola clave

Una clave de API para ambos modelos de Motion Control y todos los demás modelos de vídeo e imagen. Crédito prepago desde $10, cobrado solo por los clips que se entregan.