Motion Control API
Transfer a performance onto a character: give these models a character image and a driving video, and the movement — often the facial expression too — is copied onto your subject. Priced per second of output, so a short clip costs cents, and the same request shape works across every model here.
4 motion control models available right now — every one runnable in a free playground, through the REST API and JavaScript SDK, or from an AI assistant via MCP.
Motion Control models & pricing
| Model | Endpoint | Price |
|---|---|---|
| Kling 3.0 Motion Control | kuaishou/kling-video/v3/motion-control | $0.168 per second of video |
| Wan 2.2 Animate Move | wan-video/wan-animate/move | $0.15 per second of video |
| Wan VACE Video Edit | wan-video/wan-vace/video-edit | $0.1 per second of video |
| OmniHuman 1.5 | bytedance/omnihuman/v1.5 | $0.16 per second of video |
Full catalog on the models page; live per-configuration costs on the pricing page.
Call a motion control model in one request
Every model shares the same request lifecycle: submit to the queue, poll the status URL, fetch the result. Swap the endpoint to switch models — nothing else changes.
cURL
curl -X POST https://queue.modelrunner.run/kuaishou/kling-video/v3/motion-control \
-H "Authorization: Key $MRUN_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "input": { "prompt": "..." } }'
# → { "request_id": "...", "status_url": "...", "response_url": "..." }Use motion control models from Claude & Cursor
Connect the ModelRunner MCP server once and your AI assistant can run every motion control model in this table as a tool — authorized via OAuth, results returned as hosted URLs in the conversation.
Claude Code
claude mcp add --transport http modelrunner https://mcp.modelrunner.run/mcpFrequently asked questions
How much does a motion control API cost?
Motion control models are priced per second of generated video, with the exact per-model rate shown in the table above — the open-weights options cost a fraction of the premium tiers, and some are resolution-tiered so a lower resolution is cheaper per second. Output length follows your driving clip, so a 6-second reference produces roughly 6 seconds of video. There is no subscription and no minimum fee: you pay per generation from prepaid credits.
What do I need to supply for motion transfer?
Two inputs: a character image (the subject to animate) and a driving video (the motion to copy). Both are passed as URLs — upload local files through the Storage API, or the JavaScript SDK’s storage.upload() helper, and pass the returned media URL. Some models accept an optional text prompt for extra steering; others need none at all, taking the entire performance from the video.
What is the difference between motion control and image-to-video?
An image-to-video model invents motion from a text prompt, so you describe what should happen and accept what you get. A motion control (or motion transfer) model copies motion from a reference video you supply, so the timing, gesture, and often the facial expression are exactly the performance you filmed — the control comes from footage rather than wording.
How do I call a motion control model via the API?
Every model shares the same request shape: POST https://queue.modelrunner.run/<owner>/<alias> with an Authorization: Key header and an {"input": {...}} body, then poll the returned status_url and fetch the result from response_url. The JavaScript SDK (@modelrunner/client) wraps this in a single subscribe() call. Each model page shows copy-paste cURL, JavaScript, and Python examples with that model's real inputs.
Can I run motion control models from Claude or Cursor?
Yes. Connect the ModelRunner MCP server (https://mcp.modelrunner.run/mcp) once and every motion control model in the catalog becomes a tool your AI assistant can call with the run_model tool — authorized via OAuth, no API key pasted into config.
