FAL Kling O3 Reference To Video (Soze)
Character and style references in, a matching clip out
- start_image
- end_image
- image_1
- image_2
- image_3
- image_4
- image_batch
- video
- video_url
- status
Text-to-video is fine until you need the video to actually look like the thing in your reference image. FAL Kling O3 Reference To Video is the Kling endpoint built for that: give it up to four reference images - a character, a style, an object - cite them in your prompt, and the generated clip honors them. It's the "I want it to look like this" video node, and it's the most flexible of the pack's four Kling O3 variants because it starts from nothing but references and a prompt.
Paid hosted API, like the rest of the FAL family. No local generation; your machine just orchestrates the upload, the call, and the download.
How it works
The reference images are the heart of it. Up to four image_N slots (or an image_batch, capped at four frames, individual slots winning), and you cite them in the prompt as @Image1 through @Image4. Want the character from image 1 to move through the scene in the style of image 2? Say so in the prompt, with the cites. That citation convention is the single most important thing to get right - connect an image but never mention it, and the model is free to ignore it.
Two extra image slots round it out: start_image and end_image (both optional). Connect them and the clip is additionally pinned to those as its first and last frames - a bridge between pure reference-to-video and the dedicated first-last-frame node.
The rest of the controls are the family standard: tier (standard/pro), duration (3–14+ seconds), aspect_ratio (auto, 16:9, 9:16, 1:1), shot_type (customize for prompt-driven composition, intelligent to let the model compose), and generate_audio (off by default).
Outputs: video (a VIDEO tensor for ComfyUI's save/preview nodes), video_url (hosted, for sharing), and status, with live upload/submit/download progress on the node body.
When it's worth it
Character consistency is the killer app - you have one good image of a character and you need them to do something in a clip. It's also the right node for style transfer into video: reference a painting or a brand look, describe the motion, and the clip inherits the look. If your source is a single image you want to animate rather than a set of references, the First-Last-Frame variant is the leaner pick; if you have a bundle of references defining who and what the clip shows, this is the one.
Getting it running and gotchas
Standard pack install plus a FAL_KEY:
cd ComfyUI/custom_nodes
git clone https://github.com/SozeInc/ComfyUI_Soze.git
pip install -r ComfyUI_Soze/requirements.txt
FAL_KEY goes in your environment, a .env in the pack root, or config.ini under [API]. Missing it surfaces as "FAL_KEY is not configured" on the node.
The two gotchas that actually bite: unused references (connected but never cited as @ImageN in the prompt - the model has no reason to use them) and the batch cap (a big image_batch gets silently truncated to the first four frames, so if your fourth reference "isn't there," check the count). Everything else is standard paid-API economics: longer + pro tier = more money, so set duration deliberately.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| tier | COMBO | standard | 2 options: standard, pro |
| prompt | STRING | Cite uploaded images as @Image1..@Image4 in the prompt. | |
| duration | COMBO | 5 | 13 options: 3, 4, 5, 6, 7, 8, +7 |
| aspect_ratio | COMBO | 16:9 | 4 options: auto, 16:9, 9:16, 1:1 |
| shot_type | COMBO | customize | 2 options: customize, intelligent |
| generate_audio | BOOLEAN | false | — |
| start_imageopt | IMAGE | Optional first frame. | |
| end_imageopt | IMAGE | Optional last frame. | |
| image_1opt | IMAGE | Reference image slot 1. Overrides image_batch when connected. Cite as @Image1 in the prompt. | |
| image_2opt | IMAGE | Reference image slot 2. Overrides image_batch when connected. Cite as @Image2 in the prompt. | |
| image_3opt | IMAGE | Reference image slot 3. Overrides image_batch when connected. Cite as @Image3 in the prompt. | |
| image_4opt | IMAGE | Reference image slot 4. Overrides image_batch when connected. Cite as @Image4 in the prompt. | |
| image_batchopt | IMAGE | Optional IMAGE batch (capped at 4 frames). Ignored if any image_N slot is connected. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| video_url | STRING | — |
| status | STRING | — |