Nodes/PopNow/Kling O3 · Image to Video
ComfyUI Node

Kling O3 · Image to Video

4K and multi-shot without the 4.0 bill

By popnow-ai·Created 24 days ago·Updated about 20 hours ago· 0
Kling O3 · Image to Video
  • image_url
  • last_image_url
  • video
  • task id
◄prompt►
◄resolution720p►
◄generate_audiofalse►
◄duration_seconds5►
◄shot_typesingle►
◄multi_prompt►

Kling O3 is the odd one out in the Kling lineup - one unified model that Kuaishou points at creating, animating, referencing and editing rather than a separate model per task. Practically, the image-to-video node is the value pick of the whole pack: from 10.08 credits per second, with 4K as an option and multi-shot prompting, where Kling 4.0 charges 32.4 for the same kind of control. If you're choosing with your wallet rather than the version number, start here.

What it does

Your image_url becomes the opening frame, uploaded as PNG (JPEG if it's over 10 MiB), and PopNow renders the clip. The node quotes the run, submits the task under an idempotency key, polls with progress on the node, then downloads the MP4 into your graph as a VIDEO. Nothing local, no GPU, which is the entire reason this category exists.

Inputs

image_url - the opening frame. One image; a batch is trimmed to the first.

prompt - what happens after the frame: action, camera, and the sounds if audio is on.

resolution - 720p, 1080p, or 4k. The 4K tier is what makes this node interesting, and it costs more per second, so keep it for final takes.

generate_audio - off by default. Voice, effects and ambience get generated alongside the picture, and the per-second rate rises when it's on.

duration_seconds - 3 to 15, integer, billed per second.

shot_type - single for one continuous take, multi to let the model cut your prompt into several shots itself, customize to follow the list you write in multi_prompt.

multi_prompt - JSON text: a list of objects with prompt and duration_seconds. The durations must add up to duration_seconds. Blank means the field isn't sent; broken JSON stops the run before submission with a message about valid JSON. This is where most first attempts fail.

last_image_url - optional closing frame, so you can pin both ends of the move.

Outputs

video (VIDEO) and task id (STRING). Video into Save Video or another PopNow node; task id into the API console when you need to see what happened.

Install

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

Restart, paste a key from popnow.ai/api/console/keys into Settings > PopNow or set POPNOW_API_KEY, then restart again - the node list is built from your account's catalog at startup, so the second restart is what makes new models show up. ComfyUI Manager users can search PopNow and install from there. No models, no dependencies, nothing to download. Delete custom_nodes/popnow_api.py if you installed the old single-file node.

Traps

The multi_prompt arithmetic is the big one. It fails as a 400 naming the field, which reads like a bug and is actually "your shot lengths don't sum". Write it small first: two shots, 3 seconds each, duration_seconds 6.

The 4K badge will tempt you into burning credits on tests. Set Settings > PopNow > Max credits per run and iterate at 720p; the ceiling refuses anything quoted above it before credits are held, so the expensive mistake becomes a dialog you can dismiss.

Cancelling is not a refund. Interrupt in ComfyUI stops you waiting while the task keeps rendering on PopNow, and it's charged if it succeeds. The result sits in the API console afterwards.

Codes: 40201 (no credits), 401 (dead key), 40310 (verify email), 40004 (unservable combination), content_rejected (refunded). Anything with a request_id in it goes to support and identifies the exact request.

One workflow note: O3's biggest win is that the same model family does text, image, reference and edit, so a pipeline built on it keeps its look across tasks better than mixing generations does - which matters more than any single clip's sharpness.

CategoryPopNow/Video/Kuaishou

Inputs (8)

NameTypeDefaultDescription
promptSTRINGDescribe what happens after the opening frame: the action, the camera and, with sound on, the sounds.
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".
last_image_urloptIMAGEOptional closing frame the clip should end on.

Outputs (2)

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