PRYX ComfyUI Higgsfield Reference to Video
Reference your character, your outfit and your camera — then say their names in the prompt
- image
- video
- audio
- references
- end_image
- video
- local_file
- remote_url
- request_id
- credits (-1 unavailable)
- usd (-1 unavailable)
- status
Character consistency is the oldest unsolved problem in this hobby, and the 2026 answer isn't an IP-Adapter anymore - it's "give the model the reference and let it look while it works." That's what this node is for. It takes ordered multimodal references - images, video clips, audio, even a document or web link, depending on the endpoint - and generates a video that actually uses them: the same face, a specific outfit, a specific camera move.
Fifteen reference-to-video endpoints are in the catalog here: Happy Horse, Wan 3.0 and Wan 2.6/2.7, Seedance 2.0/2.5, MiniMax H3, the Kling Omni and O3 image/video reference variants, Grok Imagine Video 1.5, and Higgsfield's own Cinema Studio 4.0.
How it works
Two ways to feed it. The simple path is the direct sockets: image, video, audio, and end_image where the model supports one - the role is unambiguous, and on this node an image batch gets split into separate ordered references, so a four-image batch is four references, not one.
The other path is references, fed from a Reference Collector. Order is deterministic: direct inputs map first, collector slots follow in numeric order, images/videos/audio/ documents get numbered separately, and batches keep their internal order. The generator validates types, counts and required fields against the selected model before anything uploads - an invalid request never reaches the paid endpoint.
The prompt-token part, which is where this gets interesting
Most endpoints get numbered references delivered in a fixed order and you describe them in prose. Exactly one endpoint in the bundled catalog documents numbered prompt tokens, and the pack says so rather than inventing syntax:
Wan 3.0 · Reference to Video - Image 1, Image 2, Video 1, Audio 1.
There, and only there, you can also use label aliases. Name your Collector slots image_1=person, image_2=outfit, video_1=camera, then write:
Use {{ref:person}} as the main character, {{ref:outfit}} as the clothing,
and {{ref:camera}} as the camera reference.
The pack resolves those to the documented tokens before upload. Unknown labels stop the request; duplicate labels stop the request; and if you write Image 3 when only two images are attached, that stops the request too. On every other endpoint, named aliases are rejected outright - because a silently-ignored alias is how you pay for a render of the wrong person. Reference Preview shows you the mapping and the resolved prompt first, for free.
The inputs that matter
model is required. Beyond that, prompt (a connected input - wire a text or Config UI Prompt node in), duration (union shows 5, 10; individual models run to 30), resolution (720p/1080p/480p/4k/2K), aspect_ratio (ten options including adaptive), generate_audio, enable_thinking, bitrate_mode, seed, mode on the Kling variants, multi_shots with multi_prompt, and aigc_watermark.
Then the cinema knobs, which come from Cinema Studio 4.0 and are the most fun fields in the whole pack: era (1960s–2020s), genre (epic, drama, noir, comedy, horror, action), light (silhouette, practicals, window, overhead-fall, contre-jour, soft-cross), pacing (chaotic, dynamic, calm, single-shot), camera_lens (clean-sharp through halation-vintage), camera_model (modern, 35mm-film, 8mm-film, dv-camcorder), camera_aperture (f14-wide-open, f4-moderate, f11-deep-focus), color_palette (a 50-entry list with names like neon-rain-at-midnight), plus camera_movement and shot_type.
Remember the node shows the union of every model's parameters, and drops fields your selected model doesn't have. Noir lighting settings do nothing on Wan.
Outputs
video (native VIDEO, plus local_file as a path fallback), remote_url as JSON text for logging, request_id (empty on estimates), credits and usd as the provider's estimate with -1 when unavailable, and status - the JSON blob that carries the final reference mapping and provider status. Read status when a render looks wrong; it tells you what actually got sent.
Install
Manager: search PRYX ComfyUI Higgsfield, install, restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/PRYX-STUDIO/pryx-comfyui-higgsfield.git pryx-comfyui-higgsfield
python -m pip install -r pryx-comfyui-higgsfield/requirements.txt
Windows portable uses ..\python_embeded\python.exe. ComfyUI 0.35.0+, frontend 1.53.6+, Python 3.10–3.13, and three small dependencies (higgsfield-client, httpx, jsonschema). No weights to download - the "models" here are a catalog of remote endpoints.
Credentials: Settings → PRYX ComfyUI Higgsfield → Credentials, one key-id:key-secret string, or HF_KEY / HF_API_KEY+HF_API_SECRET for headless installs.
Two habits worth forming, since references make these runs the expensive ones: run Reference Preview after every change to media or labels, and keep max_usd positive so a mis-set duration can't quietly bill you for the 30-second version of your five-second idea.
Inputs (36)
| Name | Type | Default | Description |
|---|---|---|---|
| model | COMBO | alibaba-happy-horse-reference-to-video | Catalog model ID. Connect PRYX ComfyUI Higgsfield Model Catalog or choose a model from the dropdown. |
| seedopt | INT | -1-1–2147483647 | Optional deterministic seed. The provider may ignore it. Range: 0–2147483647. Use -1 to omit the seed and let the provider choose randomly. |
| durationopt | COMBO | 5 | Video duration in seconds. The selected model defines the valid range. Choices: 5, 10 Range: 1–30. |
| resolutionopt | COMBO | 720p | Output resolution supported by the selected model. Choices: 720p, 1080p, 480p, 4k, 2K. |
| aspect_ratioopt | COMBO | adaptive | Output framing. Use the exact format shown in the choices. Choices: 16:9, 4:3, 1:1, 3:4, 9:16, adaptive, 21:9, auto, 3:2, 2:3. |
| generate_audioopt | BOOLEAN | true | Sound |
| enable_thinkingopt | BOOLEAN | false | Deep Thinking |
| bitrate_modeopt | COMBO | high | Select the encoded video bitrate tier. Choices: standard, high. |
| eraopt | COMBO | 1960s | Catalog-defined model parameter. Choices: 1960s, 1980s, 1990s, 2000s, 2020s. |
| genreopt | COMBO | epic | Catalog-defined model parameter. Choices: epic, drama, noir, comedy, horror, action. |
| lightopt | COMBO | silhouette | Catalog-defined model parameter. Choices: silhouette, practicals, window, overhead-fall, contre-jour, soft-cross. |
| pacingopt | COMBO | chaotic | Catalog-defined model parameter. Choices: chaotic, dynamic, calm, single-shot. |
| camera_lensopt | COMBO | clean-sharp | Virtual camera lens for the selected cinema model. Choices: clean-sharp, anamorphic, vintage-anamorphic, warm-vintage, halation-vintage. |
| camera_modelopt | COMBO | modern | Virtual camera body for the selected cinema model. Choices: modern, 35mm-film, 8mm-film, dv-camcorder. |
| color_paletteopt | COMBO | static-noon | Catalog-defined model parameter. Choices: static-noon, twilight-fable, back-row-kissing-seats, on-the-other-side-of-the-porthole, the-emerald-ambush, highway-standoff, the-faded-fresco, oil-ochre, the-mountain-convent, ghost-in-the-code, pink-velvet, two-days-to-the-horizon, industrial-fog, stairs-go-up, field-post, home-is-the-next-gas-station, glossy-flesh, the-crimson-ballet, neon-rain-at-midnight, the-morning-after-rain, the-iron-borough, the-ground, the-investigation, turquoise-mirage, a-dream-in-color, breakfast-on-schedule, favela-gold, a-hotel-for-one, after-dark, crimson-vigi, the-neighbors-saw-everything, the-grey-channel, mirage-at-noon, bubblegum-boulevard, yellow-room, the-earth-keeps-things-reluctantly, tropic-fever-dream, bioluminescent-night, dont-turn-it-off-im-watching, the-silk-curtain-falls, the-butterfly, playtime, wallpaper-romance, overtime, the-way-home-is-longer, everyone-speaks-in-whispers, runaway-summer, amber-wasteland, the-circus, gasoline-sunset. |
| camera_apertureopt | COMBO | f14-wide-open | Virtual camera aperture for the selected cinema model. Choices: f14-wide-open, f4-moderate, f11-deep-focus. |
| camera_movementopt | COMBO | snorricam | Camera motion preset supported by this model. Choices: snorricam, robot-arm, tilt-up, rack-focus, tilt-down, pov, pan-left, crane-up, pan-right, crane-down, side-tracking, pedestal-up, pedestal-down, handheld, tracking, drone-orbit, dolly-zoom, aerial-pullback, static-shot, bullet-time, whip-pan, slow-zoom-in, arc-left, slow-zoom-out, arc-right, truck-right, dolly-in, truck-left, dolly-out, slider-right, crush-zoom, slider-left, helicopter-shot. |
| modeopt | COMBO | std | Provider quality tier; separate from request_mode, which controls billing. Choices: std, pro, 4k. |
| soundopt | COMBO | off | Whether the provider should generate a soundtrack. Choices: on, off. |
| elementsopt | STRING | Catalog-defined model parameter. Items: 0–4. Enter valid JSON; leave blank to omit this optional field. | |
| shot_typeopt | COMBO | customize | Select a custom or automatically planned shot sequence. Choices: customize, intelligent. |
| multi_shotsopt | BOOLEAN | false | Generate multiple shots when supported by the selected model. |
| multi_promptopt | STRING | JSON array of shot objects with prompt and duration; check the model limits. Items: 1–6. Enter valid JSON; leave blank to omit this optional field. | |
| aigc_watermarkopt | BOOLEAN | false | Include the provider's AI-generated-content watermark. |
| prompt_extendopt | BOOLEAN | false | Allow the provider to expand the prompt. |
| negative_promptopt | STRING | Things the model should avoid showing. | |
| promptopt | STRING | Prompt text. Connect a Config UI Prompt node for long prompts. | |
| request_modeopt | COMBO | estimate_only | Estimate cost without generating, or submit the paid generation request. |
| max_usdopt | FLOAT | 0.000–10000 | Hard USD limit. Zero disables the limit; no generation is submitted above this value. |
| auto_saveopt | BOOLEAN | true | Save completed media in ComfyUI output; disable to keep it in the temporary directory. |
| timeoutopt | FLOAT | 180010–7200 | Maximum local wait time in seconds. A timed-out remote generation is never submitted again. |
| imageopt | IMAGE | Optional image reference; batches are split into ordered references. | |
| videoopt | VIDEO | Optional video reference. | |
| audioopt | AUDIO | Optional audio reference. | |
| referencesopt | PRYX_HF_REFERENCES | Ordered references. Hover the model field to see supported media and limits. | |
| end_imageopt | IMAGE | Optional final frame. Exactly one image; available only for models that support an end frame. |
Outputs (7)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| local_file | STRING | — |
| remote_url | STRING | — |
| request_id | STRING | — |
| credits (-1 unavailable) | FLOAT | — |
| usd (-1 unavailable) | FLOAT | — |
| status | STRING | — |