Kling 3.0, Turbo, and Omni API: The Missing Manual (Auth, Model IDs, Real Per-Second Pricing)
Kling 3.0 is a serious production video API with a documentation problem: the docs portal is a JavaScript app that serves an error to plain fetchers, the purchase pages sit behind a login, and most tutorials in circulation describe an authentication scheme that is now legacy. The result is a market where resellers quote anywhere from $0.10 to $0.22 per second for the same model and nobody can easily check.
We operate video APIs in production for a living, so we assembled the manual we wanted: every number below comes from Kuaishou's official documentation, and the full set was re-verified by an independent second pass before publishing. Where something is only implied or sits behind the login wall, we say so instead of guessing.
First, figure out which API you are on
Two API generations coexist, and mixing their conventions is the classic first bug.
The current API ("API 2.0", released June 17, 2026): auth is a plain API key sent as Authorization: Bearer <key>, created in the console at kling.ai/dev. The model ID lives in the URL path (/image-to-video/kling-3.0), the international base domain is api-singapore.klingai.com, images can be up to 50MB, and a successful task reports succeeded.
The legacy API (/v1/videos/*): auth is an Access-Key/Secret-Key self-signed JWT, the model goes in a model_name body field whose enum stops at kling-v3 — Turbo and Omni do not exist there — images cap at 10MB, Base64 images must be raw strings without the data:image/... prefix, and success is spelled succeed. Kuaishou says there are no current plans to deprecate it, which means five years of JWT tutorials will keep ranking. If you are starting today, start on the current API.
The model picker
| Model ID | Duration | Resolutions | Audio |
|---|---|---|---|
kling-3.0-turbo |
3–15s | 720p / 1080p | Native, included |
kling-v3 |
3–15s | 720p / 1080p / 4K | native / off |
kling-v3-omni |
3–15s | 720p / 1080p / 4K | native / off / original |
kling-video-o1 |
3–10s | up to 1080p | — |
kling-v2-6 |
3–10s | up to 1080p | — |
kling-v2-5-turbo |
5 or 10s | up to 1080p | — |
Native audio on the 3.0 family speaks Chinese, English, Japanese, Korean and Spanish; ask for any other language and the speech is silently rendered in English. For other markets, generate with audio off and dub separately.
Turbo is deliberately the cut-down tier: first-frame input only, no last frame, no elements, no 4K, and audio always included at one price row. Do not build a frame-interpolation workflow on it.
The real prices, decoded
Official pricing is per second of output, in Units, at a printed $0.14 per Unit:
| Model | 720p | 1080p | 4K |
|---|---|---|---|
| 3.0 Turbo (audio incl.) | $0.112 | $0.14 | — |
| 3.0, audio off | $0.084 | $0.112 | $0.42 |
| 3.0, native audio | $0.126 | $0.168 | $0.42 |
| 3.0 Omni, no video ref | $0.084–0.112 | $0.112–0.14 | $0.42 |
| 3.0 Omni, video ref, audio off | $0.126 | $0.168 | $0.42 |
| Motion Control | $0.126 (STD) | $0.168 (PRO) | — |
That band explains the reseller confusion: fal.ai passes the official USD equivalents through unchanged ($0.084/s for 720p image-to-video with audio off), while other wrappers mark up or bundle. Quotes outside the band are paying for the wrapper.
Two billing traps. The consumer app charges in Credits, a different currency with different numbers (12 Credits/s for 1080p with audio in-app, versus 1.2 Units/s on the API) — blog posts mix the two tables constantly. And whether failed generations are billed is not stated anywhere in the public docs; the docs do confirm a failed task occupies a concurrency slot until it ends. Budget as if failures cost you throughput at minimum.
The rules that actually 400 your requests
Aspect ratio only exists where nothing anchors it. aspect_ratio (16:9 / 9:16 / 1:1) applies to text-to-video, and to Omni only when there is no frame and no reference video — where it becomes required. Image-to-video has no ratio setting at all: output follows the input image. To ship 9:16 ads from product stills, crop to 9:16 before the call. The same rule holds on every engine we run; Kling is just stricter about admitting it.
Multi-shot grammar is exact. multi_shot expects shot n, m, words; segments — half-width semicolons, one to six shots, each at least 1 second, durations summing exactly to the total, 512 characters per shot, 3,072 overall. And @element names must not be substrings of each other or of prompt words.
Omni's modes are mutually exclusive. A feature_video (style reference) forces multi-shot on and native audio off; a base_video (edit mode) forbids first/last frames, multi-shot, and native audio. Element counts have their own arithmetic: up to 7 image elements without a reference video, at most 4 with one. Combining the wrong pair is a 400, not a warning.
The limiter is concurrency, not QPS. The docs state there are no QPS limits; the real ceiling is simultaneous tasks per account, shared across all API keys, per model version and package type. Bursting past it returns HTTP 429 with code 1303 rather than a queue. Moderation rejections surface as 1300/1301 at submit, and content-risk failures can also land later in the task's message field.
Outputs are purged after 30 days, and URLs are hotlink-protected. Copy results to your own storage on success. (Seedance gives you 24 hours; Kling gives you 30 days; the pipeline pattern is identical.)
Date-check anything written in spring 2026. 4K excluded reference-video workflows on April 23, then the June 17 update extended Omni reference video to 15 seconds with 4K. Articles written between those dates contradict current behavior.
For product video specifically
The economics suggest a split the vendor does not spell out: iterate on Turbo (cheapest audio-included second in the family) and reserve kling-v3 at 4K for the hero cut that earned it. Kling 3.0's other e-commerce-relevant trick is what the official guide calls native-level text output — it preserves signs, labels and logos from input images and can generate legible new lettering, which is genuinely rare in this model class. Add-on APIs (lip sync at 0.5 Units per 5 seconds, avatars at 0.4–0.8 Units/s, TTS at 0.05 Units per call) cover the talking-head cases.
If you are choosing between engine families rather than tuning this one, the same missing-manual treatment exists for MiniMax H3, and our Sora 2 shutdown migration map puts Kling's spec sheet in context against Seedance and H3.
Or skip the operations entirely
Everything above — auth generations, ratio rules, exclusion matrices, 30-day purges, concurrency budgeting — is the overhead of operating a raw video API. It is exactly the layer Riffkit exists to absorb: hand it a short video that already worked, and it rebuilds that video's formula around your product on the engines we operate, with the per-second rate shown before you render on the pricing page. We keep manuals like this one because we read them so you don't have to.
FAQ
How long can one Kling clip be through the API, and does it differ by model?
The 3.0 family — kling-3.0-turbo, kling-v3, and kling-v3-omni — generates 3 to 15 seconds per task, as an integer enum with a default of 5. Kling O1 and 2.6 top out at 10 seconds, and 2.5 Turbo only offers 5 or 10. Omni's reference-video input accepts clips of 3 to 15.5 seconds. Anything longer than 15 seconds means multiple tasks and joining the segments yourself, seams included.
What does Kling 3.0 Turbo actually cost per second, and why do resellers quote anywhere from $0.10 to $0.22?
Official API pricing is denominated in Units at a printed $0.14 per Unit. Turbo, with native audio included, is 0.8 Units ($0.112) per second at 720p and 1.0 Unit ($0.14) at 1080p, with no 4K tier. The wider 3.0 family band at 720p/1080p runs $0.084 to $0.168 per second depending on model and audio. Resellers sit on and around that band: fal.ai passes the official USD rates through unchanged, while other aggregators mark up, bundle concurrency, or quote per-video prices that assume short durations. When a quote is outside $0.084–$0.168 for 720p/1080p, you are paying for the wrapper, not the model.
Which model ID do I pass for Kling 3.0 vs Turbo vs Omni, and when should I use each?
On the current API the model ID lives in the URL path, not the body: kling-3.0-turbo for Turbo, kling-v3 for 3.0, kling-v3-omni for Omni (plus kling-video-o1 and kling-v2-6 for the older tiers). Use Turbo for ad-iteration volume: cheapest with audio included, first-frame image input, 720p/1080p. Use kling-v3 when you need audio on/off control, last-frame input, or the 3-Unit-per-second 4K tier for a hero cut. Use Omni when the generation must follow a reference video or multi-image elements — with its own strict input exclusions.
Does Kling watermark API output, and how long do result URLs live?
API output is clean by default: watermark_info.enabled defaults to false, and enabling it returns an additional watermarked URL alongside the clean one; custom watermarks are not supported. The trap is retention, not branding: result URLs are hotlink-protected and all generated files are purged 30 days after creation, per two separate official notices. A production pipeline must copy outputs to its own storage the moment a task succeeds.
Keep reading
How to Make TikTok Ads Without the Product: What Works When All You Have Is Supplier Photos
The guides for this are all pre-AI: green screen, slideshows, editing supplier clips. Here is the 2026 version, including what you may and may not reuse from a supplier's or a competitor's footage.
Why Your TikTok Shop Videos Aren't Getting Views: Find the Real Cause Before You Refilm
Most causes of zero views have nothing to do with your video, and refilming fixes none of them. A diagnostic ladder keyed to the numbers already in your analytics — then the one cause you can actually control.
Meta vs TikTok Ads MCP: The Verified Comparison
Both platforms shipped official MCP servers for AI agents, both document them behind JS-rendered pages crawlers can't read, and most comparisons are stale on both sides. Verified in August 2026: real tool counts, auth paths, spend guardrails, and the gaps.