Guia do modelo

API do Kling Motion Control: faça um personagem copiar um vídeo

O Kling Motion Control coloca o personagem de uma imagem no movimento de um vídeo real. Este guia cobre o que enviar, como funciona a cobrança por segundo e como chamar o Kling 3.0 e o 2.6 Motion Control por uma única API.

O que o controle de movimento faz

O Kling Motion Control recebe duas coisas: uma imagem de um personagem e um vídeo de alguém se movendo. Ele cria um novo clipe em que o personagem da imagem executa o movimento do vídeo, com o mesmo tempo, os mesmos gestos e a mesma linguagem corporal. É assim que se fazem trends de dança, vídeos de mascote e porta-vozes de produto que se movem como um ator de verdade, sem filmar o próprio personagem.

A Revana oferece duas versões:

Versões do Kling Motion Control comparadas
ModeloId do modeloResoluçãoPreço por segundoRotas
Kling 3.0 Motion Controlkling-3.0-motion-control720p, 1080p$0.13 em 720p, $0.17 em 1080pduas rotas
Kling 2.6 Motion Controlkling-2.6-motion-control720p, 1080p$0.07 em 720p, $0.12 em 1080pduas rotas

O Kling 3.0 é o modelo mais novo. O Kling 2.6 custa cerca da metade em 720p, então vale testá-lo primeiro com o seu material.

O que enviar

  • image_url: o personagem, de preferência de corpo inteiro, de frente para a câmera, sobre um fundo liso. É quem aparece no resultado.
  • video_url: o clipe de movimento. O melhor é uma única pessoa, bem visível, com câmera estável. O resultado segue a duração dele.
  • resolution: 720p ou 1080p. Envie em toda requisição.
  • prompt: opcional, para descrever o cenário ou detalhes que não estão na imagem.

Os dois arquivos precisam ser links que a API consiga buscar. Para enviar um arquivo do seu computador, faça o upload antes com POST /v1/uploads (clipes de até 50 MB) e use o link retornado; ele continua válido por 14 dias.

Como o controle de movimento é cobrado (outubro de 2026)

O preço é por segundo de vídeo, e a duração é definida pelo seu clipe de movimento, arredondada para cima até o próximo segundo inteiro. Um clipe de dança de 7.4 segundos é cobrado como 8 segundos.

Custo do Kling Motion Control por duração de clipe
ModeloResoluçãoClipe de 5 sClipe de 10 sClipe 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

Corte o clipe de movimento para a parte de que você precisa antes de enviar: cada segundo extra é cobrado. Defina max_cost_usd como o máximo que você espera pagar pela duração do seu clipe, e um job que custaria mais é recusado em vez de executado. Um job que falha não custa nada, e o crédito é pré-pago a partir de $10, sem assinatura; veja a página de preços.

Faça um clipe de controle de movimento

Envie POST /v1/generations com os dois links e consulte até o job ter succeeded ou failed. Com um clipe de movimento de 10 segundos em 720p, isso custa $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);
Resposta
{
  "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"
}

Como obter um resultado limpo

  • Combine o enquadramento. Um personagem de corpo inteiro com um clipe de dança de corpo inteiro funciona muito melhor do que um retrato de cabeça e ombros com um clipe de corpo inteiro.
  • Uma pessoa se movendo. Use um clipe com uma pessoa em movimento. Multidões e cortes confundem qual movimento copiar.
  • Câmera estável. Uma câmera fixa ou de movimento lento mantém o fundo estável.
  • Faça rascunhos em 720p. Verifique a transferência de movimento no Kling 2.6 em 720p e depois renderize o que ficou bom em 1080p no Kling 3.0.

Para os modelos de texto e imagem para vídeo do Kling, veja o guia da API do Kling 3.0. Os dois modelos de controle de movimento estão na página de modelos, com todos os campos na documentação. Obtenha uma chave de API para testá-los.

Perguntas frequentes

Quanto custa o Kling Motion Control?

Em outubro de 2026, o Kling 3.0 Motion Control custa $0.13 por segundo em 720p e $0.17 em 1080p. O Kling 2.6 Motion Control custa $0.07 e $0.12. A duração é definida pelo seu clipe de movimento.

O que o Kling Motion Control precisa?

Uma imagem do personagem em image_url, um clipe de movimento em video_url e uma resolução de 720p ou 1080p. O prompt é opcional.

Qual a duração de um vídeo do Kling Motion Control?

A mesma do clipe de movimento que você envia. Você é cobrado por segundo dele, arredondado para cima até um segundo inteiro.

Qual é a diferença entre o Kling 3.0 e o Kling 2.6 Motion Control?

O Kling 3.0 é o modelo mais novo. O Kling 2.6 custa menos por segundo. Os dois aceitam as mesmas entradas e oferecem 720p e 1080p.

Posso enviar meu próprio vídeo de movimento?

Sim. Faça o upload com POST /v1/uploads (vídeo de até 50 MB) e passe o link retornado em video_url.

Experimente o Kling Motion Control com uma só chave

Uma chave de API para os dois modelos de controle de movimento e todos os outros modelos de vídeo e imagem. Crédito pré-pago a partir de $10, cobrado apenas pelos clipes entregues.