Nodes/Quality of Life Nodes for ComfyUI/FAL Happy Horse 1.1 Reference To Video (Soze)
ComfyUI Node

FAL Happy Horse 1.1 Reference To Video (Soze)

Alibaba's oddly-named character-consistency video model

By SozeInc·Created 2 years ago·Updated a day ago· 10
FAL Happy Horse 1.1 Reference To Video (Soze)
  • image_1
  • image_2
  • image_3
  • image_4
  • image_5
  • image_6
  • image_7
  • image_8
  • image_9
  • image_batch
  • video
  • video_url
  • status
prompt
aspect_ratio16:9
resolution1080p
duration5
enable_safety_checkertrue
seed0

Yes, the name is real, and no, it's not about horses. Happy Horse is Alibaba's line of video models, and 1.1's selling point is character consistency: it's built to keep the same people recognizably the same across a clip, which is the single most common thing video generation gets wrong. This node wraps the FAL-hosted version, so the model stays in the cloud and all you manage is a prompt, some reference images, and one API key.

The trick that makes it work

The other FAL reference nodes in this pack use @Image1 citations. Happy Horse uses names instead: character1 through character9, in the same order you connected the images. Connect a photo to image_1 and you call that person character1 in the prompt. That naming convention is what the model keys on for identity, so "character1 walks into the room and hugs character2" is the way to write it - plain descriptions of "the woman" won't pin identity the way the explicit character handles do. You get up to nine reference slots, or a batch into image_batch (capped at 9).

The prompt is capped at 2500 characters, which is roomier than most of these models give you. resolution goes 720p or 1080p, aspect_ratio has nine options (including ultrawide 21:9 and the vertical 9:21), and duration runs 3–14 seconds via a dropdown. There's also a seed (0 = random, so set a value if you want to iterate on a fixed take) and a enable_safety_checker toggle that defaults to on.

The safety checker is the thing that bites

That default-on safety filter is the main gotcha with this node. It's Alibaba's moderation running server-side, and when it triggers you get no video - just a refusal the node reports in status. If you're generating clean, normal content you'll never notice it. If you're pushing anything the filter dislikes, or the model flags a reference image as ambiguous, the fix is to flip enable_safety_checker off and try again, and to accept that some subject matter won't clear the vendor's policy no matter what. That's the nature of calling a closed cloud model - the filter lives in the weights and API you don't control.

How it works

Identical machinery to the other FAL nodes in the Soze pack: upload your reference images to FAL's CDN, POST to alibaba/happy-horse/v1.1/reference-to-video, wait out the synchronous generation, then download the mp4 into your output folder as a VIDEO object. Outputs are video, video_url, and status. Nothing runs locally except the file handling - your GPU is a bystander.

Install and key

From the Soze pack ("Quality of Life Nodes for ComfyUI"), either via ComfyUI Manager (search "Soze") or:

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

Restart ComfyUI, then set FAL_KEY as an environment variable or in ComfyUI_Soze/config.ini:

[API]
FAL_KEY=your_key_here

Grab a key at fal.ai/dashboard/keys; the file is gitignored, keep it that way.

Common issues

  • Video refused instantly. Safety checker tripped - turn it off and retry, or adjust the subject matter.
  • Characters don't stay consistent. You're describing them instead of citing them. Use character1, character2, etc., matching the socket order.
  • Skips with no output. Needs at least one reference image connected; there's no text-only mode.
CategoryFAL/VideoGeneration

Inputs (16)

NameTypeDefaultDescription
promptSTRINGRefer to subjects as character1..character9 (order matches images). Max 2500 chars.
aspect_ratioCOMBO16:99 options: 16:9, 9:16, 1:1, 4:3, 3:4, 21:9, +3
resolutionCOMBO1080p2 options: 720p, 1080p
durationCOMBO513 options: 3, 4, 5, 6, 7, 8, +7
enable_safety_checkerBOOLEANtrue
seedoptINT00–21474836470 = random.
image_1optIMAGEReference image 1 (cite as @character1 in the prompt).
image_2optIMAGEReference image 2 (cite as @character2 in the prompt).
image_3optIMAGEReference image 3 (cite as @character3 in the prompt).
image_4optIMAGEReference image 4 (cite as @character4 in the prompt).
image_5optIMAGEReference image 5 (cite as @character5 in the prompt).
image_6optIMAGEReference image 6 (cite as @character6 in the prompt).
image_7optIMAGEReference image 7 (cite as @character7 in the prompt).
image_8optIMAGEReference image 8 (cite as @character8 in the prompt).
image_9optIMAGEReference image 9 (cite as @character9 in the prompt).
image_batchoptIMAGEOptional IMAGE batch (capped at 9). Ignored if any image_N slot is connected.

Outputs (3)

NameTypeDescription
videoVIDEO
video_urlSTRING
statusSTRING