Kling 3.0 · Image to Video
One still, several shots, an optional last frame
- image_url
- last_image_url
- video
- task id
Kling 3.0 Image to Video is the node I'd reach for when a still needs to become a shot, not just a moving picture. It costs from 10.08 credits per second ($0.10/s), runs 3 to 15 seconds, and the interesting part isn't resolution - it's shot_type, which will cut your prompt into several shots on its own, and the optional closing frame that lets you say "start here, end there".
Under the hood
Nothing renders locally. The image_url tensor becomes a PNG upload (JPEG if it's over 10 MiB), PopNow quotes the run, the task goes to Kuaishou, the node polls with progress text on itself, and the MP4 comes back as a VIDEO value. Cheap GPU, no GPU, same graph.
Inputs that matter
image_url - the opening frame. One image; a batch uses only the first.
prompt - what happens after the frame: action, camera, and the sounds if you turned audio on. Multi-shot prompts (see shot_type) read best as beats, one sentence per beat.
resolution - 720p, 1080p, or 4k. Tiers are priced separately, and 4K is the tier you use for a finished piece, not for iterating.
generate_audio - off by default, costs more per second when on.
duration_seconds - an integer from 3 to 15, billed per second. Genuinely useful: 7-second clips exist here, which is closer to how real edits are cut than the 5-or-10 dropdown on the older nodes.
shot_type - single is one continuous take. multi lets the model cut your prompt into several shots itself. customize follows the shot list you write in multi_prompt.
multi_prompt - this is a JSON text box, not a widget, and it's the part that confuses people. A list of objects, each with a prompt and a duration_seconds, and the lengths must add up to duration_seconds. Leave it blank and it's simply not sent. Type invalid JSON and the node stops before the request with a message telling you the field must be valid JSON.
guidance_scale - 0 to 1, default 0.5. negative_prompt - a short list of things to keep out.
last_image_url - the optional closing frame. The clip ends on it. Use it for a reveal, a match cut, or to stop a camera drift from ending somewhere useless.
Outputs
video (VIDEO) and task id (STRING). Video into Save Video or another PopNow node; the task id into your notes for the API console.
Install
For Manager users it's PopNow in the custom-nodes search, Install, restart. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/popnow-ai/popnow-comfyui
Create a key at popnow.ai/api/console/keys, then Settings > PopNow → paste, or set POPNOW_API_KEY. Restart one more time - the node list is resolved from your account's catalog at startup, which is also why new models appear after a restart rather than immediately. No models to download, no Python dependencies beyond what ComfyUI ships. Delete custom_nodes/popnow_api.py if you ever installed the standalone node.
Traps
The multi_prompt durations not summing to duration_seconds is the number one failure here, and it shows up as a 400 naming the field rather than anything helpful about arithmetic.
Set Settings > PopNow > Max credits per run before you try 4K with audio. Fifteen seconds of 4K with sound is not a cheap experiment, and the ceiling aborts the run before any credits are held.
Cancelling stops you waiting, not the job. The task keeps running on PopNow and is charged if it succeeds; the output sits in the API console afterwards.
And a word of caution that applies to this whole family: Kling 3.0 got a genuinely mixed reception in the community, with people arguing it was a downgrade on some material and a big step up on others. Test on your own frames before you rebuild a pipeline around it. 40201 means the wallet is empty, 401 means the key is dead, and anything with a request_id is worth sending to support.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Describe what happens after the opening frame: the action, the camera and, with sound on, the sounds. | |
| negative_prompt | STRING | What to keep out of the clip: objects, looks or motion you do not want. | |
| image_url | IMAGE | Opening frame. The clip starts from this image. | |
| resolution | COMBO | 720p | Output resolution. Higher tiers cost more per second. |
| generate_audio | BOOLEAN | false | Generate a native soundtrack (voices, effects, ambience) with the picture. Audio costs more per second. |
| duration_seconds | INT | 53–15 | Output length in whole seconds, from 3 to 15. Billed per second. |
| shot_type | COMBO | single | single 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_prompt | STRING | Shot 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_scale | FLOAT | 0.500–1 | How closely the clip follows the prompt, from 0 to 1. Higher sticks to the prompt more; lower gives the model more freedom. |
| last_image_urlopt | IMAGE | Optional closing frame the clip should end on. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| task id | STRING | The PopNow task id, for the API console logs or support. |