Kuaishou
Kling 2.5
kling-2.5-turbo/image-to-video
An image-to-video model launched by Kuaishou, standing out for its smooth motion and character consistency, with support for negative prompts and CFG adjustment, making it suitable for generating short clips with highly dynamic camera work
Try kling-2.5-turbo/image-to-video
Input
Showcases
View all showcasesOutput
videoPricing
kling-2.5-turbo/image-to-video per second
| Unit Price | $0.060 |
|---|
Positioning Overview
kling-2.5-turbo/image-to-video is a model for image-to-video tasks: it takes one or two images as the first frame and an optional last frame, combines them with a text prompt, and generates a short 5-second or 10-second video. It supports negative prompts and a prompt-adherence strength adjustment from 0 to 1, and the aspect ratio can be selected based on single-image or dual-image mode. It is suited to developers who need to turn static images into dynamic clips and want to control the visual content through parameters.
Core Highlights
- Driven by first and last frame images — you can pass one first-frame image or also add a last-frame image, so the video starts from a specified image and transitions to a specified ending image.
- Adjustable prompt adherence strength — cfg_scale adjusts between 0 and 1 how closely the video follows the text description, making it easy to trade off between creative freedom and strict reproduction.
- Negative prompts exclude interference — supports negative prompts of up to 2496 characters, used to suppress content you do not want to appear in the frame.
Capability Details
First-frame and optional last-frame input: image_urls accepts 1 to 2 image URLs, supports jpeg/png/webp, with a maximum of 10MB per image; when two images are passed, the video is generated as a transition from the first frame to the last frame.
Duration and aspect ratio selection: duration can be 5 or 10 seconds; in single-image mode the aspect ratio supports 16:9, 9:16, 1:1, 4:3, 3:4, and 21:9, while dual-image mode is limited to 16:9, 9:16, and 1:1.
Prompt and negative prompt: prompt is required and up to 2500 characters, used to describe subject motion, environmental changes, and camera movement; negative_prompt is up to 2496 characters, used to exclude unwanted content.
Adherence adjustment: cfg_scale ranges from 0 to 1; the higher the value, the more closely the video follows the text description, so you can adjust how well the generated result matches the shot requirements.
Use Cases
- Ad and product short-video creators: a single product image + motion description — turn a static product image into a short clip with camera movement, for dynamic display assets in brand or e-commerce videos.
- Film and TV previsualization: concept images + specified first and last frames — use two concept images to lock the start and end frames, and generate a transition clip as a storyboard or concept preview.
- Social media content operations: a vertical image + a short prompt — convert an image into a 5-second or 10-second vertical short video at 9:16, ready for direct publishing on social platforms.
Limitations and Selection Advice
A single generation is capped at 10 seconds, so it is not suitable for directly producing long videos; dual-image mode only supports 16:9, 9:16, and 1:1, while single-image mode may follow the original image's ratio during fallback processing and cannot guarantee an exact match to the requested size. WebP images are not converted automatically, and some fallback processing accepts only jpeg/png. Generation quality depends heavily on prompt writing and cfg_scale tuning. If you need to generate video directly from text, choose a text-to-video model from the same family.
What's new
View changelog →- New model Added kling-2.5-turbo/text-to-video docs
- New model New video model docs
Create a generation task
https://api.hiapi.ai/v1/tasks Headers
AuthorizationstringRequiredAccount API key. Required on every request. Example: Bearer YOUR_HIAPI_API_KEY. Get your API key
Content-TypestringOptionalThe request body is always parsed as JSON; when sent, only application/json (optionally with charset) is accepted — any other value returns 415. Example: application/json.
Idempotency-KeystringOptionalIdempotency key, up to 255 bytes. Retries with the same key from the same account create the task only once; replays return the original taskId.
On network timeouts or client retries, the same key creates the task only once — no double charges (scope: the API key's account). Use a business-unique identifier as the key (e.g. "order-42"); replays return the original taskId, and keys expire 24 hours after the first request. See the Unified Async API overview for the full scenario matrix.
Body
modelstringRequiredCurrent fixed value: kling-2.5-turbo/image-to-video
routestringOptionalCurrent fixed value: default
inputobjectRequired
Business parameters for kling-2.5-turbo/image-to-video and route default — see the parameter table below.
promptstringRequiredminLength 1maxLength 2500Text prompt describing the subject's motion, environmental changes, and camera movement, which determines the direction of the generated video content.
durationintegerOptionalDefault: 5min 5max 10Select the number of seconds for the generated video as an integer, default 5.
510cfg_scalenumberOptionalmin 0max 1Adjust how closely the video follows the text description; takes a numeric value, and the higher the value, the more closely it adheres to the prompt.
image_urlsarrayRequiredminItems 1maxItems 2Array of image URLs for the first frame and an optional last frame, supporting jpeg/png/webp, max 10MB each; some fallback processing accepts only jpeg/png, WebP is not automatically converted, and with two images only 16:9, 9:16, or 1:1 is supported.
Array [ string ]
aspect_ratiostringOptionalDefault: "16:9"Video aspect ratio, default 16:9; with a single image, fallback processing may follow the original image's ratio, and an exact match to the requested dimensions is not guaranteed; when image_urls is provided, only 16:9, 9:16, or 1:1 is supported.
16:99:161:14:33:421:9negative_promptstringOptionalmaxLength 2496Content you do not want to appear in the video, as a string, up to 2496 characters.
callbackobjectOptional
Terminal-state notification config. When omitted, no callback is delivered — poll the task yourself. See the callback note below.
Provide callback.url when creating a task and HiAPI POSTs to your service once the task reaches a terminal state — no polling needed. The callback payload mirrors the task detail structure; signature verification, delivery retries and idempotency are documented on the Unified Async API overview page.
urlstringRequiredRequired when callback is present. A POST is sent to this URL once the task reaches a terminal state; must be a valid http(s) URL.
whenstringOptionalDefault: "final"Only final is supported today — notified on both success and fail.
finalstoragestringOptionalDefault: "temp"Artifact storage tier: temp (default, retained about 7 days) or persistent (long-term, billed by size). Insufficient balance or exceeding the storage cap silently downgrades to temp; the effective tier is shown in the task detail response.
temppersistentRequest examples
# Submit an async task; returns a taskId immediately (no waiting for generation)
curl -X POST "https://api.hiapi.ai/v1/tasks" \
-H "Authorization: Bearer $HIAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "kling-2.5-turbo/image-to-video",
"input": {
"prompt": "…",
"duration": 5,
"image_urls": "…",
"aspect_ratio": "16:9"
}
}' const res = await fetch("https://api.hiapi.ai/v1/tasks", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.HIAPI_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "kling-2.5-turbo/image-to-video",
input: {
"prompt": "…",
"duration": 5,
"image_urls": "…",
"aspect_ratio": "16:9"
}
}),
});
const task = await res.json();
// { code: 200, message: "success", data: { taskId } } import os, requests
res = requests.post(
"https://api.hiapi.ai/v1/tasks",
headers={"Authorization": f"Bearer {os.environ['HIAPI_API_KEY']}"},
json={
"model": "kling-2.5-turbo/image-to-video",
"input": {
"prompt": "…",
"duration": 5,
"image_urls": "…",
"aspect_ratio": "16:9"
}
},
)
print(res.json()) # { code, message, data: { taskId } } 200 OK
{
"code": 200,
"message": "success",
"data": {
"taskId": "tk-hiapi-01HZTQ8BX2N3GM3YFK4Z9D7VQR"
}
} 400 Bad Request
{
"code": 400,
"message": "invalid request",
"data": null,
"error_code": "INVALID_REQUEST"
} Get task detail
https://api.hiapi.ai/v1/tasks/:id Response fields
taskIdstringRequiredTask ID, always prefixed with tk-hiapi-.
modelstringRequiredResolved full model name. Tasks submitted with the route parameter return base@route (e.g. gpt-image-2/text-to-image@ext); otherwise identical to the name passed at creation.
routestringOptionalPresent only when the task was submitted with an explicit route parameter; echoes the submitted value.
statusstringRequiredTask status.
queued Queued, not started yet.
handling Being processed.
archiving Processing finished, artifacts being prepared.
success Terminal: completed, artifacts available (output returned).
fail Terminal: failed (error returned).
After submission, check status: success and fail are terminal, everything else is non-terminal. Poll every 1–3 seconds until terminal. On success, download artifacts from output[].url and transfer them before expireAt; pass storage: "persistent" at creation time when long-term retention is needed.
creatednumberRequiredTask creation time (Unix seconds).
completednumberRequiredUnix seconds when the task reached a terminal state; fixed to 0 while not terminal.
outputarrayOptional
Present only when status == success. Artifact list — always an array; a single task may return multiple types at once (e.g. video + first_frame).
Array [ object ]
Array items
urlstringRequiredArtifact URL, directly downloadable.
typestringRequiredCurrent possible values: video, image, audio, first_frame, last_frame, thumbnail; more may be added later.
expireAtnumberRequiredUnix seconds until which the artifact remains accessible; download or transfer before it expires.
errorobjectOptional
Present only when status == fail.
codestringRequiredBusiness error code.
messagestringRequiredError description.
Response examples
Success
{
"code": 200,
"message": "success",
"data": {
"taskId": "tk-hiapi-01HZTQ8BX2N3GM3YFK4Z9D7VQR",
"model": "happyhorse-1-0",
"status": "success",
"created": 1777282033,
"completed": 1777282099,
"output": [
{
"url": "https://cdn.hiapi.ai/tasks/.../video.mp4",
"type": "video",
"expireAt": 1777886899
}
]
}
} Processing (non-terminal)
{
"code": 200,
"message": "success",
"data": {
"taskId": "tk-hiapi-...",
"model": "happyhorse-1-0",
"status": "archiving",
"created": 1777282033,
"completed": 0
}
} Failed
{
"code": 200,
"message": "success",
"data": {
"taskId": "tk-hiapi-...",
"model": "happyhorse-1-0",
"status": "fail",
"created": 1777282033,
"completed": 1777282099,
"error": {
"code": "TASK_FAILED",
"message": "task failed"
}
}
} Articles
View all articles →Related Models
View all models →Same Type
-
Gemini Omni Google -- -
HeyGen Avatar IV HeyGen $0.150 /second -
Grok Imagine 1.5 Lite xAI $0.029 /second -
FLUX 3 Max Black Forest Labs $0.061 /second -
Seedance 2.5 ByteDance $0.121 /second -
Vidu Q3 Vidu $0.149 /second -
Runway Gen 4.5 Runway $0.172 /second -
Creatify Boreal Creatify $0.015 /second -
HeyGen Avatar V HeyGen $0.150 /second -
Vidu Q4 Preview Vidu $0.051 /second -
Ray 3.2 Luma $0.214 /video -
FLUX 3 Video Black Forest Labs $0.090 /second




