Kuaishou
Kling 3.0
kling-3.0-omni/text-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/text-to-video
Input
Showcases
View all showcasesOutput
videoPricing
kling-3.0-omni/text-to-video per second
Overview
kling-3.0-omni/text-to-video is the pure text-to-video pipeline in the Kling 3.0 Omni series, called through the unified HiAPI.ai interface. It produces a finished clip directly from a prompt, supports durations from 3 to 15 seconds, 720p/1080p/4k resolutions and landscape, portrait and square aspect ratios, and can enable native audio and automatic multi-shot storyboarding. It suits developers and content teams that need to quickly validate creative shots and batch-produce short clips.
Highlights
- Prompt-driven finished video — just a single prompt (up to 3072 characters), no reference material needed, to generate a complete video clip.
- Optional native synchronized audio — with the audio parameter enabled, video and sound are generated in the same pass, skipping post-production dubbing and sound-effect alignment.
- Automatic multi-shot storyboarding — prefer_multi_shots lets the model plan multiple shots on its own from the prompt, delivering a segment with cuts in a single request.
- Reusable subjects and @ references — register up to 7 subjects, each defined by 2 to 4 images; reference them in the prompt as @name to keep that subject consistent across multiple shots.
Capabilities
Text-to-video generation: returns a video file directly after a prompt is submitted; duration is adjustable from 3 to 15 seconds to suit clips of different pacing.
Resolution and aspect ratio control: offers three resolution tiers — 720p, 1080p and 4k — and three aspect ratios — 16:9, 9:16 and 1:1 — so a single request can produce footage suited to landscape placement, portrait feeds or square assets.
Native audio switch: audio is off by default; when enabled, the video is generated together with synchronized sound, so dialogue or ambience clips need no separate audio-track assembly.
Subject registration and referencing: pass subject names, descriptions and 2 to 4 reference images via elements, then refer to them in the prompt as @name so the same character or object keeps a consistent appearance across multiple shots.
Intelligent multi-shot planning: with prefer_multi_shots enabled, the model breaks the prompt into multiple shots and organizes the edit itself, reducing the work of generating each shot separately and stitching them together.
Use cases
- Batch production of social short videos by content teams — input product selling points or topic descriptions and generate clips at 9:16 portrait, ready for feed and short-video platform placement.
- Early storyboard previews for film and animation — describe shots and staging in text, enable multi-shot storyboarding, and quickly obtain visual segments for storyboard discussions and shot design.
- Creative validation for ads and brand films — generate concept clips at 16:9 and high resolution before formal production to confirm the creative direction with clients.
- Dialogue-driven character clips with lines — register character subjects and reference them in the prompt, enable native audio, and produce character clips with synchronized sound for story samples.
Limitations and selection advice
A single generation is capped at 15 seconds; longer narratives need to be generated in segments and then stitched together. elements only provides subject appearance references; the prompt must explicitly reference them as @name for them to take effect, and unregistered subjects are not guaranteed to stay consistent. Raising the resolution to 4k significantly increases generation and transfer overhead. This pipeline currently accepts text input only; if you need to start from images or existing video, use the image-to-video, reference-to-video or video-to-video (transformation) pipelines in the same series instead. Cost is billed by the number of seconds of output video, so long durations combined with high resolution require estimating usage in advance.
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/text-to-video
routestringOptionalCurrent fixed value: default
inputobjectRequired
Business parameters for kling-3.0-omni/text-to-video and route default — see the parameter table below.
audiobooleanOptionalDefault: falseWhether to output synchronized audio while generating the video; boolean, default false.
promptstringRequiredminLength 1maxLength 3072Text prompt describing the target video content; if using subjects from elements, you can reference them in the prompt as @name.
durationintegerOptionalDefault: 5min 3max 15Output video duration in seconds, ranging from 3 to 15, default 5.
elementsarrayOptionalmaxItems 7
Array of reusable subjects, up to 7; each element contains a name, a short description, and 2-4 images, and subjects can be referenced in the prompt as @name.
Array [ object ]
Array items
namestringRequiredminLength 1Unique name of the subject, used to reference it in the prompt as @name; must not contain spaces.
descriptionstringRequiredminLength 1A short text description of the subject.
element_input_urlsarrayRequiredminItems 2maxItems 4Array of reference images for the same subject; requires 2-4 images in JPG or PNG format.
Array [ string ]
resolutionstringOptionalDefault: "720p"Output video resolution, string, default 720p.
720p1080p4kaspect_ratiostringOptionalDefault: "16:9"Aspect ratio of the output video, string, default 16:9.
16:99:161:1prefer_multi_shotsbooleanOptionalDefault: falseWhether to let the model automatically plan multiple shots based on the prompt; boolean, default 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/text-to-video",
"input": {
"audio": false,
"prompt": "…",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "16:9",
"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/text-to-video",
input: {
"audio": false,
"prompt": "…",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "16:9",
"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/text-to-video",
"input": {
"audio": False,
"prompt": "…",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "16:9",
"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
-
Gemini Omni Google -- -
LTX 2.5 Fast Lightricks $0.086 /second -
Kling 4.0 Kuaishou $0.330 /second -
Grok Imagine 1.5 xAI $0.011 /second -
HappyHorse 1.1 Alibaba $0.160 /second -
Veo 3.1 Google $0.290 /second -
PixVerse V6 PixVerse $0.036 /second -
HeyGen Avatar V HeyGen $0.150 /second -
HeyGen Avatar IV HeyGen $0.150 /second -
Kling 3.0 Kuaishou $0.100 /second -
Wan 2.6 Flash Alibaba $0.043 /second -
MiniMax H3 MiniMax $0.072 /second