Kling 2.5 Turbo · Image to Video
Sound on every clip, whether you want it or not
- image_url
- last_image_url
- video
- task id
Two things separate this from the cheap 2.1 node: it always renders at 1080p, and it always generates audio. Not optionally - there is no switch. Every clip comes back with a soundtrack of voices, effects and ambience matched to what's happening, at $0.056 per second, which makes it the best value in the pack for anyone whose output needs sound. Five seconds is twenty-eight cents.
That's the whole value proposition, and it's a good one. Kling-with-audio undercuts the sound-capable 2.6 tier by roughly 20% and the 3.0 Turbo tier by half. If your pipeline ends in a social post with sound on, this is where the price-performance line sits. If it ends in your own edit where you're dropping a track and muting the model's mix anyway, paying for generated audio you'll discard is money on the floor.
Inputs
- image_url - the opening frame,
IMAGE, JPEG or PNG. Encoded and uploaded for the run; the clip keeps the image's shape. - prompt - what happens after the frame. Because audio is always on, the prompt is doing double duty: describe the action and the sound, and if anyone speaks, put the line in quotes so the model voices it rather than narrates it.
- duration_seconds -
5or10. Straight per-second billing, $0.28 or $0.56 at these rates. - negative_prompt - a short list of what to avoid. Still functional on this model.
- guidance_scale - 0 to 1, default
0.5. A literalness dial, not CFG. Higher sticks closer to the prompt, lower gives the model room; 0.5 is the middle and usually the right place to leave it. - last_image_url - optional second
IMAGE. Pins the closing frame, so the clip interpolates from your opening picture to your ending one. This is the feature that makes match cuts possible in a single graph, and it's the main reason to reach for the Turbo tier over the basic 2.1 node.
Outputs: video - a ComfyUI VIDEO with an audio stream inside it, so wire Save Video (or a video preview) and not an image node - and task id, the STRING handle for the run in your SpicyAPI console.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/spicyapi-ai/comfyui-spicyapi
Restart, then Settings > SpicyAPI → paste a key from spicyapi.ai/console/keys (the panel reports your balance) → restart once more so the node list comes from your account. Manager search: "SpicyAPI". No GPU, no weights, no extra Python packages - the pack explicitly declares zero dependencies beyond what ComfyUI ships, and the video decoding uses the PyAV that ComfyUI already bundles.
The gotchas, specifically for this node
You cannot get a silent clip. That's the one that surprises people. Some workflows want the picture clean and the audio added later in a real editor; here you'd mute or strip the track downstream. Practically: don't plan an edit that depends on the model's audio being absent, and don't queue the same prompt on the 2.6 node "to compare" unless you're happy paying twice.
Ten seconds is not a stretch goal, it's a different render. Longer clips give the model more room to drift - faces change, hands wander, the scene reinterprets itself. For dialogue-ish shots keep it at five.
The upload ceiling is 90 MiB for media. Not a problem for a single opening frame, worth remembering the moment you start feeding clips in as references elsewhere in the pack.
Cancels and re-runs. Interrupting stops your wait, not the server-side job - it keeps running, is charged if it succeeds, and the result lives in your console for up to 14 days. Seeds default to fixed so a re-queue returns the first result rather than a second charge; switch control after generate to randomize when you want a genuinely new take.
Set a Max cost per run in the SpicyAPI settings before you start iterating. The node quotes each job and stops anything above the ceiling before charging, and it prints the real charge when the job finishes. At $0.56 a roll for a silent-then-muted clip, that setting will save you more than any prompt trick will.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Describe what happens after the opening frame: the action, the camera. | |
| image_url | IMAGE | Opening frame. The clip starts from this image. JPEG or PNG only. | |
| duration_seconds | COMBO | 5 | Output length: 5 or 10 seconds. Billed per second. |
| negative_prompt | STRING | Things the clip should avoid, written as a short list. | |
| guidance_scale | FLOAT | 0.500–1 | How strictly the clip follows the prompt, from 0 to 1. Higher is more literal, lower gives the model more freedom. |
| seed | INT | 00–2147483647 | This model takes no seed, so the number is never sent. Changing it makes ComfyUI run the node again: set 'control after generate' to randomize for a new result on every run; every run is billed. |
| last_image_urlopt | IMAGE | Optional closing frame the clip should end on. JPEG or PNG only. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| task id | STRING | The SpicyAPI task id, for the console logs or support. |