Nodes/SpicyAPI/Wan 3.0 Pro · Reference To Video
ComfyUI Node

Wan 3.0 Pro · Reference To Video

Keep the same person, product or place

By spicyapi-ai·Created 21 days ago·Updated 2 days ago· 2
Wan 3.0 Pro · Reference To Video
  • reference_image_urls
  • reference_video_urls
  • reference_audio_urls
  • video
  • task id
◄prompt►
◄reference_file_url►
◄reference_link_url►
◄resolution1080p►
◄aspect_ratioadaptive►
◄duration_seconds5►
◄generate_audiotrue►
◄enable_prompt_expansiontrue►
◄seed0►

Every few weeks someone posts "how do I keep the same face across shots" and gets the same pile of answers: IP-Adapter, FaceID, PuLID, a face LoRA if they're serious. Those tools solve it picture by picture. Reference-to-video solves it across a clip, by feeding the model material about a subject - up to 10 images, 5 video clips and 5 audio clips - and asking it to generate a new shot that keeps the identity, wardrobe, set, movement or voice. This is the Pro tier of that, $0.144/s at 1080p.

What it's actually for

Think of it as a series engine. A presenter who must look identical in episode four; a product that has to stay the same product while the camera moves; a voice you want carried over; a location that needs to read as the same location. You are not animating a still and you are not editing footage - you're giving the model references and a description, and it builds the shot.

The inputs, including two odd ones

reference_file_url and reference_link_url are required at the top of the node, and neither is media. The first takes one document - PDF, DOCX, TXT, MD and friends - that the model reads for characters, wardrobe, setting and action; point it at a filename in ComfyUI's input folder or an https link you control. The second takes one public web page that must open without a login. In practice that's a character sheet and a wiki page, or a script and a mood board. A plain .txt with three paragraphs of "who this is, what they wear, where this happens" is enough and it genuinely improves adherence.

Then prompt (subject, motion, camera), resolution (1080p default; 2k and 4k are enlarged from a native 1080p render), aspect_ratio (adaptive by default - leave it), duration_seconds (5 by default, -1 for smart duration), generate_audio, enable_prompt_expansion (on by default), and seed.

And the reason you're here: reference_image_urls, reference_video_urls and reference_audio_urls are autogrow sockets. Wire one image and another socket grows; keep going up to the caps. Reference videos run 1 to 15 seconds each, 15 seconds in total, same for audio.

Outputs: video (Save Video) and task id (STRING, for logs and support).

The one billing rule to internalise

Reference video seconds are charged alongside your output seconds. A 15-second reference clip plus a 15-second render is 30 billed seconds - $4.32 at 1080p, more if you climb the ladder. Stills and audio references don't sting the same way, so build a reference set out of images when you can, and keep the clip references for when motion transfer is the actual point.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/spicyapi-ai/comfyui-spicyapi

Manager → SpicyAPI also works. Restart ComfyUI, then Settings > SpicyAPI, paste a key from spicyapi.ai/console/keys, and restart once more so the node list is rebuilt from your account. On a remote box set SPICY_API_KEY. No dependencies, no weights - the pack's dependency list is empty and it uses only what ComfyUI already ships. Python 3.10+, V3 node API, tested with ComfyUI 0.39.

Before you burn money

Put a ceiling in Max cost per run - reference runs are the ones where a stray 10-image, 15-second-reference, 4K request gets expensive fast, and the pack's pre-flight quote blocks it. Keep the seed on fixed so re-queueing the same graph reuses the cached result instead of buying a twin; switch to randomize when you want variation. Cancel ends your wait, not the server-side job. Standard errors: No SpicyAPI key is set, 40310 (unverified email), 40004 (no deployment for the combination - change the named option), and anything ending in request_id, which is what support asks for.

CategorySpicyAPI/Video/Alibaba

Inputs (12)

NameTypeDefaultDescription
promptSTRINGDescribe the subject, motion and camera.
reference_file_urlSTRINGOne reference document (PDF, DOCX, TXT, MD and similar) that the model reads for characters, wardrobe, setting and action.
reference_link_urlSTRINGOne public web page the model reads for reference. It must open without a login.
resolutionCOMBO1080pOutput resolution tier. A native Wan 3.0 render tops out at 1080p, so the 2k and 4k tiers are delivered by enlarging that render instead of rendering natively at those sizes.
aspect_ratioCOMBOadaptiveOutput aspect ratio; adaptive follows the input media and the intent.
duration_secondsCOMBO5Output duration in seconds. Pass -1 for smart duration: the model picks the length from the prompt and any input media instead of a fixed number. With reference videos, their total length plus the output length must not exceed 30 seconds, and the reference video seconds are billed together with the output seconds.
generate_audioBOOLEANtrueInclude an audio track in the output.
enable_prompt_expansionBOOLEANtrueExpand the prompt before generation.
seedINT00–2147483647Same seed and settings, same result. Set 'control after generate' to randomize to get a new result on every run; every run is billed.
reference_image_urlsoptCOMFY_AUTOGROW_V3Ordered reference images used to guide the scene.
reference_video_urlsoptCOMFY_AUTOGROW_V3Reference videos, up to 5 clips of 1 to 15 seconds each and 15 seconds in total.
reference_audio_urlsoptCOMFY_AUTOGROW_V3Reference audio, up to 5 clips of 1 to 15 seconds each and 15 seconds in total.

Outputs (2)

NameTypeDescription
videoVIDEO—
task idSTRINGThe SpicyAPI task id, for the console logs or support.