Nodes/ComfyUI-fal-API/Kling Omni Image-to-Video (fal)
ComfyUI Node

Kling Omni Image-to-Video (fal)

Animate a still, optionally to a target end frame

By gokayfem·Created 2 years ago·Updated a day ago· 203
Kling Omni Image-to-Video (fal)
  • start_image
  • end_image
  • STRING
prompt
duration5
variations1

Kling is one of the most-discussed closed video models going - it's saturated in community chatter, and for good reason: it produces some of the cleanest, most physically believable motion of any hosted service. This node lets you drive its Omni image-to-video endpoint straight from a ComfyUI graph, with a neat extra trick that a lot of i2v models don't give you: you can pin an end frame as well as a start frame and let Kling interpolate the motion between the two.

What it actually does

None of this runs on your GPU. You hand the node a starting image and a prompt, it ships them to fal.ai, fal runs Kling on its servers, and returns a clip. Zero VRAM, zero model downloads, and you pay fal per generation. That's the trade: no local hardware, but your images leave the machine and every run costs money.

The start-plus-end-frame mode is where this earns its place. Give it a start_image alone and it animates freely from that point. Give it both a start_image and an end_image and it treats them as bookends, generating a transition that lands on your target. That's genuinely useful for controlled shots - a product rotating to a specific pose, a character moving into a framed final position - where free-running i2v tends to wander.

The inputs that matter

  • start_image (required): the first frame. Kling builds motion outward from here.
  • prompt (required): describe the action and camera. Kling responds well to plain, cinematic direction.
  • end_image (optional): the target last frame. Supply it to get a directed transition; leave it empty for free animation.
  • duration: 5 or 10 seconds. Ten roughly doubles the cost.
  • variations: 1 to 10 clips per submission - each one billed separately, so treat 10 as an expensive button.

The output is a STRING list of video URLs, not a playable clip in the graph. Feed it into the pack's Fal Save Media from URL node to download the file into your output/ folder.

Installing it

Fastest route: ComfyUI Manager → search ComfyUI-fal-API → install → restart. Manual:

cd ComfyUI/custom_nodes
git clone https://github.com/gokayfem/ComfyUI-fal-API.git
cd ComfyUI-fal-API
pip install -r requirements.txt

Restart ComfyUI. There's no checkpoint to download - the dependencies are the fal-client package and a fal API key. Copy config.ini.example to config.ini in the pack folder and paste your key under [API], or set the FAL_KEY environment variable before launching. Without a key the node loads but every run fails.

Where people get burned

Beyond the key, the usual API pitfalls apply. If a run errors, read the message - the pack surfaces fal's real error text, and content-policy refusals are common with people and recognizable likenesses, so a rejection there is the model, not the node.

Two things specific to the start/end-frame mode: your two frames should be tonally and compositionally compatible, or Kling has to invent a jarring transition to reconcile them; and if your end_image is wildly different from the start, expect the motion in the middle to get weird. On cost, remember variations multiplies everything - lock in a single variation while you're testing prompts, then fan out once you like the setup. On ComfyUI Windows Portable, an import error means you need fal-client in the embedded interpreter: .\python_embeded\python.exe -m pip install fal-client.

CategoryFAL/VideoGeneration

Inputs (5)

NameTypeDefaultDescription
promptSTRING
start_imageIMAGE
end_imageoptIMAGE
durationoptCOMBO52 options: 5, 10
variationsoptINT11–10

Outputs (1)

NameTypeDescription
STRINGSTRING