Kandinsky 6.0 Pro
kandinsky-6.0-pro/image-to-video
An open-source diffusion video model that generates about 5 seconds at a time with 44 kHz synchronized audio and lip-sync, supports text-to-video and image-to-video, and can upscale to Full-HD
Try kandinsky-6.0-pro/image-to-video
Input
Output
Pricing
kandinsky-6.0-pro/image-to-video per video
| Unit Price | $2.000 |
|---|
Positioning Overview
Kandinsky 6.0 Pro's image-to-video pipeline is aimed at developers who already have a first-frame image and want to quickly obtain dynamic footage along with matching sound. Upload a JPG, PNG, or WebP image as the first frame, describe the motion, camera movement, and sound direction in the prompt, and the model generates synchronized audio and lip-sync effects while producing the video. It is suitable for supplementary short-video footage, storyboard prototypes, and dialogue-based clip production. It is called through the unified HiAPI.ai interface and billed once per task.
Core Highlights
- Visuals and sound generated in one pass — video and audio are produced jointly in the same pipeline, eliminating separate post-production dubbing and lip-sync alignment steps.
- First-frame-locked composition — the input image serves as the first frame; the subject and composition are determined by the image, while the prompt only describes motion, camera movement, and sound changes.
- Controllable generation parameters — seed, guidance scale, negative prompts, and aspect ratio are provided, enabling reproducible results and tuning of how closely the output follows the prompt.
Capabilities
Image-driven video generation: accepts a single image as the first frame and combines it with a prompt of up to 6,000 characters describing motion and camera movement to output a video clip; the subject and composition are determined by the first frame, making it suitable for extending motion from an existing image.
Synchronized audio and lip-sync: during generation, approximately 44 kHz audio is produced synchronously and includes lip-sync; the output clip carries its own sound, so no separate dubbing or audio-visual alignment is needed.
Aspect ratio control: supports 16:9, 9:16, 1:1, 4:3, 3:4, and auto; auto selects the aspect ratio closest to the input image and center-crops, making it easy to directly fit landscape, portrait, or square placements.
Guidance and negative prompt adjustment: guidance_scale adjusts how closely the result follows the prompt between 1 and 10, and negative_prompt can exclude unwanted elements; when left empty, a built-in negative prompt is used.
Seed reproducibility: passing a seed reproduces the same generation result, making it easy to fix a baseline during parameter tuning or batch production, and convenient for regression comparisons.
Use Cases
- Social media creators generating dynamic short clips from still images — input an existing cover image or product image to produce an approximately 5-second portrait or square video with sound, ready for short-video platforms and feed ad creatives.
- Storyboard artists extending concept art into dynamic shots — use a concept design as the first frame, describe camera movement and sound effects in the prompt, and produce dynamic storyboard clips for pitches and previsualization.
- Prototyping dialogue-based character clips — input a character image, describe speaking motion and voice, and get a short clip with synchronized lip-sync and audio for prototype validation of character shorts or dubbing demos.
Limitations and Selection Advice
The default generation length is about 5 seconds; longer final videos require segmented generation and manual stitching. The Pro version has a large parameter count, and local deployment has high VRAM and compute requirements; Full-HD output requires an additional super-resolution pipeline and is not obtained directly from a single generation. If the task is to conceive imagery from scratch rather than animate an existing image, choose the text-to-video pipeline in the same series; for long-form production with stricter duration and resolution requirements, evaluate the cost of segmented stitching and the super-resolution workflow.
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: kandinsky-6.0-pro/image-to-video
routestringOptionalCurrent fixed value: default
inputobjectRequired
Business parameters for kandinsky-6.0-pro/image-to-video and route default — see the parameter table below.
seedintegerOptionalRandom seed for reproducing a generation. Omit for a random seed.
promptstringRequiredminLength 1maxLength 6000Describe the motion, camera and sound to add. The first frame already sets the subject and composition.
image_urlstringRequiredImage used as the first frame. JPG, PNG or WebP. With auto the model picks the supported frame closest to the image and center-crops to it.
aspect_ratiostringOptionalDefault: "auto"Output frame. auto picks the supported frame closest to the input image and center-crops to it.
auto16:99:161:14:33:4guidance_scalenumberOptionalDefault: 5min 1max 10How closely the result follows the prompt. Higher values follow the text more strictly.
negative_promptstringOptionalmaxLength 2000What to avoid in the video. Leave empty to use the built-in negative prompt.
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": "kandinsky-6.0-pro/image-to-video",
"input": {
"prompt": "…",
"image_url": "…",
"aspect_ratio": "auto",
"guidance_scale": 5
}
}' 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: "kandinsky-6.0-pro/image-to-video",
input: {
"prompt": "…",
"image_url": "…",
"aspect_ratio": "auto",
"guidance_scale": 5
}
}),
});
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": "kandinsky-6.0-pro/image-to-video",
"input": {
"prompt": "…",
"image_url": "…",
"aspect_ratio": "auto",
"guidance_scale": 5
}
},
)
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
-
Veo 3.1 Google $0.290 /second -
FLUX 3 Max Black Forest Labs $0.061 /second -
Kling 2.5 Kuaishou $0.060 /second -
Ray 3.2 Luma $0.214 /video -
Seedance 2.0 ByteDance $0.017 /second -
Vidu Q4 Preview Vidu $0.051 /second -
HeyGen Avatar IV HeyGen $0.150 /second -
Wan 2.7 Video Alibaba $0.100 /second -
HeyGen Avatar V HeyGen $0.150 /second -
Gemini Omni Google -- -
Kling 3.0 Turbo Kuaishou $0.130 /second -
Veo 3.1 Fast Google $0.170 /second