Kuaishou
Kling 3.0
kling-3.0-omni/image-to-video
A unified multimodal video generation series supporting text-to-video, image-to-video, reference-to-video, and in-video editing, with native lip sync and multilingual audio
Try kling-3.0-omni/image-to-video
Input
Showcases
View all showcasesOutput
videoPricing
kling-3.0-omni/image-to-video per second
Positioning Overview
kling-3.0-omni/image-to-video is the Omni version for image-to-video in the kling-3.0 series, invoked through the unified HiAPI.ai interface. Developers input one or more frame images together with a text prompt to generate videos of 3–15 seconds at 720p to 4k, with optional native audio, intelligent multi-shot, and reusable subjects. It suits developers who need to quickly turn static images into dynamic videos for scenarios such as e-commerce showcases, social media clips, and storyboard previews, while requiring element consistency and controllable duration and image quality.
Core Highlights
- First/last frame dual-image control — supports 1 image as the first frame, or 2 images specifying the first and last frames respectively, giving the generation process a clear start and end point.
- Reusable subjects maintain consistency — define up to 3 subjects, each described with 2–4 images and referenced in the prompt as @name, reducing subject drift across shots.
- Optional native audio output — when audio is enabled, the video and synchronized sound are generated together, eliminating the separate post-production step of voiceover and audio-video alignment.
- Adjustable duration and resolution — output duration covers 3–15 seconds, and resolution can be set to 720p, 1080p, or 4k, fitting different stages from preview to final cut.
Capability Description
First-frame and first/last-frame driving: input 1 image to generate a video starting from that image, or input 2 images to control the first and last frames; the output aspect ratio follows the first frame, making it easy to match the composition of existing assets.
Subject reference and consistency: define up to 3 named subjects via elements, each with 2–4 reference images and a short description, and mention them in the prompt using @name to help keep subject appearance stable across multiple shots.
Native audio generation: when the audio parameter is enabled, video generation simultaneously produces synchronized sound, suitable for final cuts that need dialogue or ambient sound and reducing audio-video compositing steps.
Intelligent multi-shot planning: when prefer_multi_shots is enabled, the model automatically splits the prompt into multiple shots, obtaining a short film with shot transitions in a single call rather than a single continuous scene.
Use Cases
- E-commerce product images to showcase videos — use the product main image as the first frame to generate a short video with camera movement for product detail pages or feed advertising assets.
- Social media static posters to dynamic clips — input the design draft's first and last frames to produce vertical or horizontal dynamic videos for direct publishing on social platforms.
- Storyboard first/last-frame previews — pair key frames of film or animation storyboards as first and last frames to generate transition shots for confirming pacing and camera movement in pre-production.
- Multi-shot character clips — use elements to lock a character's appearance and enable multi-shot mode to batch-generate short narrative videos with consistent characters for ads or serial content.
Limitations and Selection Advice
A single generation is capped at 15 seconds; longer narratives require segmented generation and stitching. The output aspect ratio is determined by the first frame, so asset proportions need to be unified in advance. Subject references are limited to 3, and each subject requires 2–4 images of the same subject, resulting in relatively high input preparation cost. Native audio and intelligent multi-shot are optional switches, and enabling them makes the prompt description quality more critical. If only text-driven generation is needed, choose the text-to-video route in the same series; if local replacement based on an existing video is required, that falls outside the scope of this image-to-video route.
What's new
View changelog →- New model New models: Kling 3.0 Omni (可灵 O3) via POST /v1/tasks
Frequently asked questions
View all FAQs →-
Does Kling 3.0 Image-to-Video require an input image?
Yes. kling-3.0/image-to-video is an image-to-video route. The image establishes the subject and opening composition; the prompt directs motion, camera, and environmental change.
-
Which durations and resolutions does Kling 3.0 Image-to-Video support?
The current HiAPI contract supports 3–15s at 720p or 1080p or 4K. Check the page controls and API docs for the current options.
-
How is Kling 3.0 Image-to-Video billed?
Billing follows output duration and the selected tier. The page follows the global display unit, while the successful task record contains the final charge.
-
How can I improve subject consistency?
Use a clear, unobstructed source with a complete composition. Describe the main action and camera first, then name the appearance, material, and background relationships that must remain stable. Validate a short clip first.
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-3.0-omni/image-to-video
routestringOptionalCurrent fixed value: default
inputobjectRequired
Business parameters for kling-3.0-omni/image-to-video and route default — see the parameter table below.
audiobooleanOptionalDefault: falseBoolean switch that controls whether synchronized sound effects are generated along with the video; default is false, meaning no audio is generated.
promptstringRequiredminLength 1maxLength 3072Describe the video content you want to generate; to reference a subject in subjects, mention the subject's name in the prompt using the @name form.
durationintegerOptionalDefault: 5min 3max 15The duration of the output video in seconds, ranging from 3 to 15; default is 5.
elementsarrayOptionalmaxItems 3
A list of reusable subjects, up to 3; each element contains a name, a short description, and 2-4 images, and is referenced in the prompt using @name.
Array [ object ]
Array items
namestringRequiredminLength 1The subject name, which must be unique and contain no spaces; reference this subject in the prompt using the @name form.
descriptionstringRequiredminLength 1A short description text of the subject, used to help the model recognize the subject's features.
element_input_urlsarrayRequiredminItems 2maxItems 4An array of 2-4 image URLs of the same subject; supported formats are JPG/PNG.
Array [ string ]
image_urlsarrayRequiredminItems 1maxItems 2An array of first/last frame image URLs: 1 image means the first frame, 2 images mean the first frame and last frame in order; JPG/PNG, each no larger than 50MB, at least 300 pixels, aspect ratio 0.4-2.5, and the output aspect ratio follows the first frame.
Array [ string ]
resolutionstringOptionalDefault: "720p"The resolution of the output video; default is 720p.
720p1080p4kprefer_multi_shotsbooleanOptionalDefault: falseBoolean switch that controls whether the model automatically plans multiple shots based on the prompt; default is false.
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-3.0-omni/image-to-video",
"input": {
"audio": false,
"prompt": "…",
"duration": 5,
"image_urls": "…",
"resolution": "720p",
"prefer_multi_shots": false
}
}' 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-3.0-omni/image-to-video",
input: {
"audio": false,
"prompt": "…",
"duration": 5,
"image_urls": "…",
"resolution": "720p",
"prefer_multi_shots": false
}
}),
});
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-3.0-omni/image-to-video",
"input": {
"audio": False,
"prompt": "…",
"duration": 5,
"image_urls": "…",
"resolution": "720p",
"prefer_multi_shots": False
}
},
)
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
-
Creatify Boreal Creatify $0.015 /second -
Vidu Q3 Vidu $0.149 /second -
Wan 3.0 Video Alibaba $0.040 /second -
HappyHorse 1.0 Alibaba $0.168 /second -
PixVerse V6 PixVerse $0.036 /second -
Runway Gen 4.5 Runway $0.172 /second -
Kandinsky 6.0 Pro $1.93 /video -
HeyGen Avatar V HeyGen $0.150 /second -
FLUX 3 Max Black Forest Labs $0.061 /second -
Veo 3.1 Lite Google $0.060 /second -
Wan 2.7 Video Alibaba $0.100 /second -
LTX 2.5 Fast Lightricks $0.086 /second


