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

Kling 2.1 · Image to Video

Animate a still, at 720p or 1080p, for pennies

By popnow-ai·Created 24 days ago·Updated about 20 hours ago· 0
Kling 2.1 · Image to Video
  • image_url
  • last_image_url
  • video
  • task id
◄prompt►
◄resolution720p►
◄duration_seconds5►
◄negative_prompt►
◄guidance_scale0.50►

Kling without the fifty-tab web app

Kling has been the reference point for closed image-to-video for two years - it's the name people compare open models against, and the reason a certain kind of comment on every open-source video release is "close, but it's not Kling". Using it normally means a browser tab, a queue, and a credit system you don't control. This node puts the same capability behind an IMAGE socket: connect a picture, write what should happen, get a VIDEO back.

Where it fits: your local pipeline (Wan, LTX, whatever you can actually run) produces and iterates the frame; Kling animates the one you keep. That's the sane division of labour - local for the ten attempts, cloud for the final.

Kling 2.1 is the mid rung now, priced at about 5.25 credits per second of output, which makes a five-second clip roughly 26 credits. That's cheap enough to iterate, which is not a sentence you could write about the Master variant.

What the node actually does

It's an HTTP client wearing a node costume. Your opening frame is encoded to PNG - or JPEG at high quality if it exceeds the 10 MiB upload cap - and uploaded once, cached for twelve hours on the content hash so a re-run with a new prompt doesn't resend it. Then the node requests a quote, creates the task with an idempotency key so retries can't double-bill, polls until the task settles, downloads the MP4 and decodes it into ComfyUI's VIDEO type. No weights, no VRAM, no dependency installs - the pack's dependency list is empty.

Timing: the poll budget follows the model's own declared task timeout plus a five-minute grace, so long 1080p renders won't be cut off by an impatient wrapper.

Inputs

  • prompt - what happens after the opening frame: the action and the camera. Not a description of the image you already sent.
  • image_url - the opening frame. JPEG or PNG, though the node handles the encoding either way.
  • resolution - 720p by default; 1080p costs more per second. Pay for 1080p on the shot you're keeping.
  • duration_seconds - 5 or 10, billed per second. Ten seconds of a model that starts inventing faces at the four-second mark is ten seconds you paid to delete.
  • negative_prompt - a short list of things to avoid. Keep it short; paragraph-length negatives have a way of leaking back in.
  • guidance_scale - 0 to 1, default 0.5. This is the one that confuses everyone. It is not a CFG value from 1 to 20, so don't type 7 and wonder why nothing changed. Higher is more literal, lower gives the model room.
  • last_image_url (optional) - a closing frame the clip should land on. This is how you get a controlled transition instead of a drift.

Outputs: video (VIDEO - wire it to Save Video) and task id (STRING, your handle in the API console).

Install

comfy node install popnow-comfyui

or Manager → search PopNow → Install. Restart, then create a key at popnow.ai/api/console/keys and paste it into Settings > PopNow (or export POPNOW_API_KEY on a server). Restart again - the node list is fetched from your account's catalog at startup, so a missing Kling node usually means you skipped that. Delete the old custom_nodes/popnow_api.py if it's still there.

No downloads, no GPU. Your machine uploads a picture and downloads a clip.

Where it goes wrong

The classic Kling problem is motion that looks great for three seconds and then decomposes - extra limbs, warping background, a face that slides. You can't fix that with settings, but you can shorten the clip, use last_image_url to constrain the endpoint, and keep the prompt about one action rather than three.

Errors: PopNow 401 is the key, 40201 is an empty wallet (this is a per-second model, so a 10-second 1080p run is noticeably pricier than a 5-second 720p one), 400 names the rejected field, 40004 means that combination isn't servable - often resolution against duration, content_rejected means the model declined and refunded.

Remember that cancelling stops your wait, not the job: the render keeps going on PopNow and is charged if it succeeds.

And the standing caveat for this pack: PopNow is new and undiscussed - searching the usual communities turns up nothing about it - so there's no folklore to borrow. Keep the key in the environment, watch the printed charge for the first few runs, and set Max credits per run so a mistyped 1080p/10s experiment can't surprise you.

CategoryPopNow/Video/Kuaishou

Inputs (7)

NameTypeDefaultDescription
promptSTRINGDescribe what happens after the opening frame: the action, the camera.
image_urlIMAGEOpening frame. The clip starts from this image. JPEG or PNG only.
resolutionCOMBO720pOutput resolution. Higher tiers cost more per second.
duration_secondsCOMBO5Output length: 5 or 10 seconds. Billed per second.
negative_promptSTRINGThings the clip should avoid, written as a short list.
guidance_scaleFLOAT0.500–1How strictly the clip follows the prompt, from 0 to 1. Higher is more literal, lower gives the model more freedom.
last_image_urloptIMAGEOptional closing frame the clip should end on. JPEG or PNG only.

Outputs (2)

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