Nodes/Quality of Life Nodes for ComfyUI/FAL Kling O3 First-Last Frame Video (Soze)
ComfyUI Node

FAL Kling O3 First-Last Frame Video (Soze)

Animate between two images, from frame A to frame B

By SozeInc·Created 2 years ago·Updated 8 days ago· 10
FAL Kling O3 First-Last Frame Video (Soze)
  • start_image
  • end_image
  • video
  • video_url
  • status
tierstandard
prompt
duration5
shot_typecustomize
generate_audiofalse

The classic animation trick: here's the first frame, here's the last frame, now make the motion between them. FAL Kling O3 First-Last Frame Video is the hosted version of that - give it a start_image, optionally an end_image, and it renders a clip that plausibly travels from one to the other. It's one of the four Kling O3 variants in the Soze pack, and arguably the most fun one, because it's how you get "this photo turns into that photo" content with real physics instead of a crossfade.

Paid API, same as every FAL node here: your images upload to fal, the model renders, and the finished video downloads back into your graph as a VIDEO output.

How it works

The required inputs:

  • start_image - required. This is frame zero, and the model treats it as law.
  • prompt - describe the motion. You can cite the frames directly: @Image1 for the start frame, @Image2 for the end frame. That's the documented convention, and it's how you tell the model "keep the identity of the start, become the end."
  • duration - a dropdown from 3 up to 14+ seconds. Pick by job, not by default: longer clips cost more and drift more.
  • tier (standard/pro), shot_type (customize/intelligent), and generate_audio (off by default - flip it on if you want the model to produce sound for the clip).

The only optional input is end_image - the last frame. Leave it disconnected and the model invents the destination from your prompt alone; connect it and you've defined the ending. This one input is the difference between "animate this photo" and "morph between these two photos."

Outputs: video (the clip as a VIDEO tensor, ready for ComfyUI's video save/preview nodes), video_url (hosted, for sharing), and status. Live progress shows on the node body throughout.

When it's worth it

Two-image transitions are the obvious use: before/after shots, a character in two outfits, a location in two seasons. But don't sleep on the single-image case - a start_image plus a good prompt gives you controlled camera moves (zoom, pan, drift) on a still, which is often the cheapest way to get "this image, but moving" without describing the whole clip from scratch.

Getting it running and gotchas

Same pack and key setup as the rest of the FAL family:

cd ComfyUI/custom_nodes
git clone https://github.com/SozeInc/ComfyUI_Soze.git
pip install -r ComfyUI_Soze/requirements.txt

Configure FAL_KEY via environment, .env in the pack root, or config.ini under [API]. Missing key = "FAL_KEY is not configured" on the node.

The realistic gotchas: forgetting the start_image leaves you with a skipped run - it's required and there's no fallback. And the @Image2 citation only works if you actually connected an end_image; if you mention @Image2 with no end frame connected, the model has nothing to reference. Keep your frame images close in style and resolution - wildly mismatched frames are exactly the case where the interpolation looks like a morphing nightmare instead of motion.

CategoryFAL/VideoGeneration

Inputs (7)

NameTypeDefaultDescription
tierCOMBOstandard2 options: standard, pro
promptSTRINGUse @Image1 for start frame, @Image2 for end frame in the prompt.
start_imageIMAGEStart frame. Required.
durationCOMBO513 options: 3, 4, 5, 6, 7, 8, +7
shot_typeCOMBOcustomize2 options: customize, intelligent
generate_audioBOOLEANfalse
end_imageoptIMAGEOptional end frame.

Outputs (3)

NameTypeDescription
videoVIDEO
video_urlSTRING
statusSTRING