Kling 3.0 Turbo Image to Video
Your Frame, Up to 15 Seconds of It Moving
- auth
- image
- video
- video_file
- audio
- url
- task_id
This is the node you reach for when the still is already perfect. You spent an hour getting a face, a pose and a look right - locally, for free, with a checkpoint and a LoRA - and now you want it to breathe for five seconds. Feeding that image in as the first frame is the highest-control, lowest-waste way to use a video model, and it's dramatically cheaper than burning video credits re-rolling prompts to find a frame you already have.
It's one of the two Kling 3.0 Turbo nodes in this pack, and yes, "Turbo" is the fast tier rather than a synonym for "better."
Inputs
auth comes from the pack's Kling AI Authentication node. image is the frame you're animating - it gets sent as the first frame, base64-encoded and inlined into the request.
prompt is optional and describes the motion, not the picture. Short and physical beats long and poetic: "she turns her head and smiles, hair moving" does more than a paragraph of mood.
resolution is 720p or 1080p. duration is an integer from 3 to 15 seconds.
Notice what isn't here: there's no aspect ratio input and no negative prompt. The frame's own dimensions drive the output geometry, so the aspect ratio question is answered by your image. And 3 seconds is the floor - that's the cheapest test you can run, not 1 or 2.
Outputs
Five of them, and they're worth understanding because two are commonly confused:
video- the decodedIMAGEbatch of frames. This is what you wire into a preview or a video-combine node.video_file- the filename the node saved into ComfyUI's output directory. It's a name, not a path to hand to an arbitrary loader.audio- anAUDIOstream extracted from the downloaded clip withtorchaudio. It's best-effort: no audio track or notorchaudioinstalled means a silent placeholder and a console warning, not a crash.url- Kling's temporary hosted link to the clip. Grab it while it's warm.task_id- the job id, for tracing the run on Kling's side.
How it works
Both Turbo nodes use Kling's newer unified /tasks API rather than the older per-model endpoints the rest of the pack's video nodes use. The request builders differ: this one sends a contents array containing a first_frame entry plus an optional prompt entry, with a settings object holding resolution and duration. The node submits the job, polls /tasks with adaptive intervals and status lines, pulls the video URL from the finished task, downloads it, and decodes it into a tensor plus an audio stream.
That polling loop is patient - up to 1200 seconds - and if the task fails you get Kling's own reason string in the exception, which is usually the actual answer.
Installing
cd ComfyUI/custom_nodes
git clone https://github.com/IxMxAMAR/ComfyUI-API-Toolkit
cd ComfyUI-API-Toolkit
pip install -r requirements.txt
Kling requires requests and PyJWT; there are no weights to download and nothing runs on your GPU. Manager → "API Toolkit" works too.
The one that bites everybody
Turbo needs a real API key, not the access/secret pair. The classic Kling authentication is a JWT signed from an access key and a secret key, and that still works for the older nodes. The 3.0 Turbo endpoints want the newer single API key instead. If you haven't filled the optional api_key field on the Kling AI Authentication node - and haven't set KLING_API_KEY - this node stops immediately with a message saying exactly that, before it ever calls the API. Check the auth node first, every time.
Everything here is metered. Video is the expensive modality by a wide margin, priced by the second and the resolution, and there's no local fallback because Kling's models aren't distributed as weights at all. Prototype at 720p for 3 seconds, confirm the motion is right, then spend the credits on the version you'll keep.
Long jobs look like hangs. They aren't. A 15-second 1080p generation sits in the queue for a while and the node prints progress every few seconds; watch the console rather than the canvas.
Your image leaves your machine. That's the deal with any API node - a credential and an outbound request by design. If the frame is someone's face or a client's asset, that's a decision to make consciously, not a default.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| auth | KLING_AUTH | — | |
| image | IMAGE | — | |
| prompt | STRING | Optional text prompt to guide the video generation from the image. | |
| resolution | COMBO | 720p | Output resolution. |
| duration | INT | 53–15 | Video duration in seconds. |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| video | IMAGE | — |
| video_file | STRING | — |
| audio | AUDIO | — |
| url | STRING | — |
| task_id | STRING | — |