Kling Omni Image-to-Video (fal)
Animate a still, optionally to a target end frame
- start_image
- end_image
- STRING
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:
5or10seconds. 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.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| start_image | IMAGE | — | |
| end_imageopt | IMAGE | — | |
| durationopt | COMBO | 5 | 2 options: 5, 10 |
| variationsopt | INT | 11–10 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | — |