Skip to main content
One API, every provider

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

ModelEndpointPrice
Kling 3.0 Motion Controlkuaishou/kling-video/v3/motion-control$0.168 per second of video
Wan 2.2 Animate Movewan-video/wan-animate/move$0.15 per second of video
Wan VACE Video Editwan-video/wan-vace/video-edit$0.1 per second of video
OmniHuman 1.5bytedance/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/mcp

Frequently 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.