Skip to main content
kuaishou avatar

Kling 2.1 Master Image-to-Video API

kuaishou/kling-video/v2.1-master/image-to-video

Animate a still photo into a short, cinematic video with fluid, film-grade motion driven by a text prompt at the premium master tier.

0.28 per second of output video

Model Input

Input

Text description of the motion/action to animate in the video.

The source frame the video animates from. Use a JPEG image (min 300x300px, aspect ratio roughly 0.4-2.5).

Length of the generated video in seconds.

Additional Settings

Customize your input with more control.

Describe content to avoid in the generated video.

Min: 0 - Max: 1

How strongly the video follows the prompt. Higher values increase prompt adherence; lower values allow more creative motion.

You need to be logged in to run this model and view results.
Log in

Model Output

Output

Loading
Generated in 257.522 seconds
Logs (1 lines)

Model Example Requests

Examples

Example output 1Example output 2Example output 3

Kling 2.1 Master Image-to-Video API

Kling 2.1 Master Image-to-Video is a image-to-video AI model by kuaishou. On ModelRunner it runs through a REST API or via MCP from any AI assistant, at $0.28 per second of video.

POST https://queue.modelrunner.run/kuaishou/kling-video/v2.1-master/image-to-video

cURL

# Submit a request to the queue
curl -X POST https://queue.modelrunner.run/kuaishou/kling-video/v2.1-master/image-to-video \
  -H "Authorization: Key $MRUN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "input": {
      "prompt": "The vintage steam locomotive rolls forward across the stone viaduct, billowing white steam trailing behind as autumn …",
      "duration": "5",
      "cfg_scale": 0.5,
      "image_url": "https://media.modelrunner.ai/ixUeIjnJMKCdd3ax7c7Ew.jpeg",
      "negative_prompt": "blur, distort, and low quality"
    }
  }'
# → { "request_id": "...", "status_url": "...", "response_url": "..." }

# Poll status_url until "COMPLETED", then fetch the result
curl "https://queue.modelrunner.run/kuaishou/kling-video/v2.1-master/image-to-video/requests/$REQUEST_ID/status" \
  -H "Authorization: Key $MRUN_API_KEY"
curl "https://queue.modelrunner.run/kuaishou/kling-video/v2.1-master/image-to-video/requests/$REQUEST_ID" \
  -H "Authorization: Key $MRUN_API_KEY"

JavaScript

import { modelrunner } from "@modelrunner/client";

const result = await modelrunner.subscribe("kuaishou/kling-video/v2.1-master/image-to-video", {
  input: {
    "prompt": "The vintage steam locomotive rolls forward across the stone viaduct, billowing white steam trailing behind as autumn …",
    "duration": "5",
    "cfg_scale": 0.5,
    "image_url": "https://media.modelrunner.ai/ixUeIjnJMKCdd3ax7c7Ew.jpeg",
    "negative_prompt": "blur, distort, and low quality"
  },
});
console.log(result);

Python

import os
import requests

headers = {"Authorization": f"Key {os.environ['MRUN_API_KEY']}"}

submitted = requests.post(
    "https://queue.modelrunner.run/kuaishou/kling-video/v2.1-master/image-to-video",
    headers=headers,
    json={"input": {
      "prompt": "The vintage steam locomotive rolls forward across the stone viaduct, billowing white steam trailing behind as autumn …",
      "duration": "5",
      "cfg_scale": 0.5,
      "image_url": "https://media.modelrunner.ai/ixUeIjnJMKCdd3ax7c7Ew.jpeg",
      "negative_prompt": "blur, distort, and low quality"
    }},
).json()

# Poll submitted["status_url"] until "COMPLETED", then:
result = requests.get(submitted["response_url"], headers=headers).json()

Input parameters

NameTypeRequiredDescription
promptstringyesText description of the motion/action to animate in the video.
image_urlstring (uri)yesThe source frame the video animates from. Use a JPEG image (min 300x300px, aspect ratio roughly 0.4-2.5).
durationenumnoLength of the generated video in seconds. Default: "5".
negative_promptstringnoDescribe content to avoid in the generated video. Default: "blur, distort, and low quality".
cfg_scalenumbernoHow strongly the video follows the prompt. Higher values increase prompt adherence; lower values allow more creative motion. Default: 0.5.

Machine-readable: OpenAPI schema · llms.txt

Use Kling 2.1 Master Image-to-Video from Claude & Cursor (MCP)

Point Claude Code, Claude Desktop, Cursor, or any MCP client at the ModelRunner MCP server and Kling 2.1 Master Image-to-Video becomes a tool your assistant can call directly — it authorizes via OAuth (no API key in config) and runs this model with the run_model tool using the endpoint kuaishou/kling-video/v2.1-master/image-to-video.

MCP client config (Claude Desktop, Cursor)

{
  "mcpServers": {
    "modelrunner": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.modelrunner.run/mcp"]
    }
  }
}

Claude Code

claude mcp add --transport http modelrunner https://mcp.modelrunner.run/mcp

Then ask your assistant, for example: “Run kuaishou/kling-video/v2.1-master/image-to-video on ModelRunner to generate video”. MCP setup guide.

Model Details

Model Details

Kling 2.1 Master Image-to-Video is the premium master tier of the Kling video family, bringing a single still image to life: give it a start frame and a short prompt describing the motion, and it animates the scene into a fluid, cinematic clip with the highest motion quality and cinematic fidelity in the lineup. It keeps the subject and composition of your source photo intact while adding lifelike, physically coherent movement and camera motion, so the result reads as a polished, film-grade shot rather than a warped morph. Framing is inherited from the source image, so the output matches the shape of what you upload. Choose a 5-second or 10-second clip.

## Best for - Animating an existing photo, illustration, or product shot into a moving clip when motion quality and cinematic fidelity matter most - Adding believable camera movement and lifelike motion to a single hero image or establishing frame - Turning a static render or concept image into premium, film-grade b-roll - Social-ready clips (vertical, square, or landscape) that keep the exact framing of your source image

## Choose another model when - You want faster or cheaper generations and can trade some fidelity — use the Kling turbo image-to-video tier - You have no source image and want to generate motion from a text prompt alone — use a text-to-video model - You need a single still image rather than motion — use a text-to-image model - You need clips longer than 10 seconds or fine frame-by-frame timeline control — use a dedicated long-form video tool

## Tips - Use a JPEG start image; other formats can be rejected. Aim for a clear subject, at least 300x300px, and an aspect ratio between roughly 0.4 and 2.5 - Describe the motion you want, not the scene that is already visible: concrete motion verbs ("slowly pushes in", "drifts forward", "camera pans left") translate well to on-screen movement - Use `negative_prompt` to suppress recurring artifacts such as blur, warping, or low-quality texture - Raise `cfg_scale` toward 1 for tighter prompt adherence, lower it toward 0 for looser, more creative motion (default 0.5 is a balanced starting point)

To run via the ModelRunner JavaScript client: ```js import { modelrunner } from "@modelrunner/client";

const result = await modelrunner.subscribe("kuaishou/kling-video/v2.1-master/image-to-video", { input: { prompt: "The red hot-air balloon drifts slowly forward over the misty valley as dawn light brightens, gentle cinematic camera push-in", image_url: "https://media.modelrunner.ai/nQkwhoo3UDh0NWXS9FtKC.jpeg", duration: "5", }, }); ```