Nodes/SpicyAPI/Kling 3.0 · Image to Video
ComfyUI Node

Kling 3.0 · Image to Video

3 to 15 seconds, 4K if you're feeling wealthy, and a real shot list

By spicyapi-ai·Created 21 days ago·Updated 2 days ago· 2
Kling 3.0 · Image to Video
  • image_url
  • last_image_url
  • video
  • task id
◄prompt►
◄negative_prompt►
◄resolution720p►
◄generate_audiofalse►
◄duration_seconds5►
◄shot_typesingle►
◄multi_prompt►
◄guidance_scale0.50►
◄seed0►

Kling 3.0 takes your opening frame and renders between three and fifteen seconds at 720p, 1080p or 4K, with native audio you can switch on or off - and, uniquely in this pack, with an actual shot list you can write yourself. It's the most controllable node here, and the pricing table reads like a menu of exactly those choices:

| Options | Per second | | --- | --- | | 720p, silent | $0.0672 | | 1080p, silent | $0.0896 | | 720p, with audio | $0.1008 | | 1080p, with audio | $0.1344 | | 4K, either way | $0.336 |

4K is 2.5x the 1080p-with-audio rate and, from most accounts, not 2.5x the value - the detail is real but so is the drift over long clips. Use 4K when the clip is short and the shot is a hero, not for exploration.

The inputs

  • image_url - opening frame, IMAGE, JPEG or PNG. Uploaded for the run.
  • last_image_url - optional closing frame. Feed both ends and the model interpolates between them, which is how you get a match cut or a specific landing pose out of a single job. Underused, and cheap to try.
  • prompt - what happens after the opening frame: the action, the camera, and with sound on, the sounds. Dialogue in quotes gets voiced.
  • negative_prompt - concrete things to keep out (objects, artefacts, unwanted motion). Still functional on 3.0.
  • resolution - 720p (default), 1080p or 4k.
  • generate_audio - off by default; a native soundtrack of voices, effects and ambience, at a higher per-second rate. Unlike 2.5 Turbo, you get the choice.
  • duration_seconds - a whole number from 3 to 15, default 5.
  • guidance_scale - 0 to 1, default 0.5. A literalness dial rather than CFG: higher follows the prompt more tightly, lower gives the model latitude.
  • shot_type - single (default) renders one continuous shot; multi lets the model cut your prompt into several shots on its own; customize follows the shot list you write in multi_prompt.
  • multi_prompt - the shot list, as JSON: a list of objects, each with a prompt and a duration_seconds, in order. The durations must add up to duration_seconds - that's the rule that trips everyone up the first time.

A working shot list looks like this:

[
  {"prompt": "wide establishing shot of the pier at dawn, slow push in", "duration_seconds": 4},
  {"prompt": "close-up on her face as she turns toward the water", "duration_seconds": 3}
]

Outputs: video (VIDEO - Save Video or a preview node) and task id (STRING, the console handle for the run).

Install

cd ComfyUI/custom_nodes
git clone https://github.com/spicyapi-ai/comfyui-spicyapi

Restart ComfyUI. Open Settings > SpicyAPI, paste a key from spicyapi.ai/console/keys, restart once more so the node list is fetched from your account. Manager search: "SpicyAPI". Headless boxes use SPICY_API_KEY. Zero dependencies, zero downloads - this runs on a laptop because the rendering doesn't happen on your machine.

A note on trust, since it applies to the whole pack: this is a third-party wrapper around a metered API, which is the category where ComfyUI's one real malware incident happened. That's not a reason to avoid it - the pack is MIT, auditable, and its key handling is deliberately conservative: your key lives in user/spicyapi/config.json (owner-only permissions) or in SPICY_API_KEY, never in a node widget, a workflow file, or the metadata of a saved image, precisely so that sharing a PNG doesn't leak a credential. A handful of third-party video endpoints have also been caught quietly serving a different model than advertised - so if the output looks nothing like Kling, check the model id on the node against the model page before assuming the model is bad.

Before you queue

Set Max cost per run in the SpicyAPI settings. This is the node that needs it most: 15 seconds at 1080p with audio is $2.02, and it's two dropdowns away from a 5-second silent take at 45 cents. Every job is quoted before submission and anything above your ceiling aborts without charging.

Trimming is free, re-rendering isn't. Seeds default to fixed, so re-queueing the same graph returns the first result instead of billing you again; flip control after generate to randomize when you genuinely want a new sample. Interrupting a run stops your wait but not the server-side job - it keeps running, is charged if it succeeds, and its result is in your console for up to 14 days.

Standard errors: No SpicyAPI key is set (settings step skipped), 40310 (unverified email), 40004 (that exact combination isn't served - change the field the message names), and a proxy/firewall message if HTTPS_PROXY is broken. A model that's missing from your node search needs a ComfyUI restart, not a reinstall.

CategorySpicyAPI/Video/Kling

Inputs (11)

NameTypeDefaultDescription
promptSTRINGDescribe what happens after the opening frame: the action, the camera and, with sound on, the sounds.
negative_promptSTRINGWhat to keep out of the clip: objects, looks or motion you do not want.
image_urlIMAGEOpening frame. The clip starts from this image.
resolutionCOMBO720pOutput resolution. Higher tiers cost more per second.
generate_audioBOOLEANfalseGenerate a native soundtrack (voices, effects, ambience) with the picture. Audio costs more per second.
duration_secondsINT53–15Output length in whole seconds, from 3 to 15. Billed per second.
shot_typeCOMBOsinglesingle keeps one continuous shot; multi lets the model cut the prompt into several shots on its own; customize follows the shot list you give in multi_prompt.
multi_promptSTRINGShot list for shot_type customize: one entry per shot, in order, each with its own prompt and length in seconds. The lengths must add up to duration_seconds. JSON. A list of objects with "duration_seconds", "prompt".
guidance_scaleFLOAT0.500–1How closely the clip follows the prompt, from 0 to 1. Higher sticks to the prompt more; lower gives the model more freedom.
seedINT00–2147483647This 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_urloptIMAGEOptional closing frame the clip should end on.

Outputs (2)

NameTypeDescription
videoVIDEO—
task idSTRINGThe SpicyAPI task id, for the console logs or support.