Skip to main content
kuaishou avatar

Kling 2.5 Turbo Pro Image-to-Video API

kuaishou/kling-video/v2.5-turbo/image-to-video

Animate a still image into a short, cinematic video clip with fluid, natural motion guided by a text prompt.

0.07 per second of output video

Model Input

Input

Text description of the motion to animate into the image.

URL of the image to animate into a video.

Length of the generated video in seconds.

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.

Optional URL of an image to use as the final frame of the video.

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

Model Output

Output

Loading
Generated in 78.806 seconds
Logs (1 lines)

Model Example Requests

Examples

Example output 1Example output 2Example output 3Example output 4

Kling 2.5 Turbo Pro Image-to-Video API

Kling 2.5 Turbo Pro 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.07 per second of video.

POST https://queue.modelrunner.run/kuaishou/kling-video/v2.5-turbo/image-to-video

cURL

# Submit a request to the queue. Input fields go at the top level of the
# body. The optional reserved "metadata" object holds your own flat string
# tags — stored on the request, never sent to the model; filter later with
# GET https://queue.modelrunner.run/requests?metadata=<url-encoded JSON>.
curl -X POST https://queue.modelrunner.run/kuaishou/kling-video/v2.5-turbo/image-to-video \
  -H "Authorization: Key $MRUN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "Autumn leaves swirl off a towering oak tree in a gust of wind, spiraling upward in a cascade of gold and crimson as t…",
    "duration": "5",
    "cfg_scale": 0.5,
    "image_url": "https://media.modelrunner.ai/a50ZZtkEMuPgLdAYMrYpF.jpeg",
    "negative_prompt": "blur, distort, and low quality",
    "metadata": {
      "project": "my-project"
    }
  }'
# → { "request_id": "...", "status_url": "...", "response_url": "..." }

# Poll status_url until "COMPLETED", then fetch the result
curl "https://queue.modelrunner.run/kuaishou/kling-video/v2.5-turbo/image-to-video/requests/$REQUEST_ID/status" \
  -H "Authorization: Key $MRUN_API_KEY"
curl "https://queue.modelrunner.run/kuaishou/kling-video/v2.5-turbo/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.5-turbo/image-to-video", {
  input: {
    "prompt": "Autumn leaves swirl off a towering oak tree in a gust of wind, spiraling upward in a cascade of gold and crimson as t…",
    "duration": "5",
    "cfg_scale": 0.5,
    "image_url": "https://media.modelrunner.ai/a50ZZtkEMuPgLdAYMrYpF.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.5-turbo/image-to-video",
    headers=headers,
    json={
      "prompt": "Autumn leaves swirl off a towering oak tree in a gust of wind, spiraling upward in a cascade of gold and crimson as t…",
      "duration": "5",
      "cfg_scale": 0.5,
      "image_url": "https://media.modelrunner.ai/a50ZZtkEMuPgLdAYMrYpF.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 to animate into the image.
image_urlstring (uri)yesURL of the image to animate into a video.
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.
tail_image_urlstringnoOptional URL of an image to use as the final frame of the video.

Machine-readable: OpenAPI schema · llms.txt

Use Kling 2.5 Turbo Pro 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.5 Turbo Pro 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.5-turbo/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.5-turbo/image-to-video on ModelRunner to generate video”. MCP setup guide.

Model Details

Model Details

Kling 2.5 Turbo Pro animates a still image into a short, cinematic clip with fluid, natural motion guided by a text prompt. Provide a starting image and describe the motion you want — the model brings the subject and scene to life while keeping the framing of your input. Choose a 5-second or 10-second clip, and optionally supply an end-frame image to steer how the shot resolves. The output video keeps the frame size of your input image, so there is no separate aspect-ratio control.

## Best for - Animating a product shot, portrait, or illustration into a short hero clip - Adding believable camera and subject motion to a single still you already have - Turning a key still and an end-frame into a controlled, directed transition - Quick social-ready motion (vertical, square, or landscape — inherited from your image) without re-rendering the scene

## Choose another model when - You have no starting image and want to generate motion from a 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 frame-by-frame timeline control — use a dedicated long-form video tool

## Tips - Describe the motion, not just the scene: concrete verbs ("slowly pushes in", "hair drifts in the breeze") translate into on-screen movement - Use a clean, well-lit, high-resolution `image_url`; the output adopts its dimensions and framing - Supply `tail_image_url` to direct how the clip ends — useful for a deliberate start-to-finish transition - 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.5-turbo/image-to-video", { input: { prompt: "The cat sits still as a gentle breeze ruffles its fur", image_url: "https://media.modelrunner.ai/example-cat.jpg", duration: "5", }, }); ```