Wan2.7
Wan2.7 — the API-only Wan you couldn't run locally anyway
- referenceImages
- frameImages
- referenceVideos
- video
Here's the thing about Wan 2.7 that makes this node make sense: it was never available as weights. Alibaba froze the open-numbered Wan line at 2.1/2.2, and 2.5, 2.6 and 2.7 shipped API-only. So while the local Wan ecosystem is busy fine-tuning the frozen 2.2 checkpoints, the newer numbered models only exist behind an API - which is exactly where the Runware pack lives. This node is one of the few ways a ComfyUI user gets to touch Wan2.7 at all, and it brings the full modern Wan feature set: text-to-video, image-to-video, reference video, and native audio.
Wan is where open video consolidated - 14B diffusion transformer, 3D causal VAE, two-expert MoE - and the API-only generations built on that lineage are the ones you're getting here. If you want the latest Wan without waiting for weights that may never arrive, this is the node.
How it works
A videoInference request to Runware; the returned clip becomes a native VIDEO object (falling back to a saved file path on older ComfyUI). What's notable about this node's widget list is the breadth of conditioning: it's a do-everything video node, and unlike some of the text-to-video-only nodes in the pack, it has real inputs for guiding the result.
Inputs that matter
positivePrompt- the main driver. Withsettings.promptExtendon (default), the model runs an LLM prompt rewrite before generation; turn it off if you need exact reproducibility.settings.audio- on by default here (note: Wan2.7 generates native audio aligned with the visuals). This is a big deal - most video models come back silent, and this one ships with sound on unless you turn it off. If you don't want audio (cost, weird results), flip it off rather than being surprised.referenceImages/frameImages/referenceVideos- image-to-video, frame-to-video, and video-reference conditioning.referenceImagesis the builder socket;frameImagesis a rawIMAGEbatch;referenceVideostakes a URL/UUID.audio- a plain string input (UUID or URL) for audio-conditioned generation. This is the "make the video match this soundtrack" path. It's rare in a video node - most of the pack doesn't have it.duration- 2–15 seconds, default 5. Note this is an INT here (vs float on some siblings), and it's the model's total length.size- 13 presets,720p/1080pin landscape, portrait, square, and near-4:3/3:4 variants, plus "from input" options.settings.shotType-single(default) ormulti. Multi-shot lets the model cut between multiple shots in one clip - handy for anything with scene changes, at the cost of consistency.negativePrompt- present, but remember it's ignored when CFG guidance is disabled; Wan's guidance model may not use it the way SDXL users expect. Don't lean on it.seed,numberResults(1–4),safety.mode(none/fast/full),outputFormat(MP4/WEBM/MOV) - the usual suspects.
Single output: video.
Installing
cd ComfyUI/custom_nodes
git clone https://github.com/Runware/ComfyUI-Runware
pip install -r ComfyUI-Runware/requirements.txt
Or ComfyUI Manager → search Runware → install → restart. API key via Settings, RUNWARE_API_KEY, or runware auth login.
Honest notes
If you came from the local Wan ecosystem, reset your expectations: this is a black-box cloud model, not the frozen 2.2 open weights - no LoRAs against it, no control over the sampler, just the API's knobs. Cost and latency are real (cloud video, minutes per clip, metered), and the title bar shows each run's price. And treat settings.promptExtend as a live wire: it rewrites your prompt, which is great for quality and terrible for reproducibility. If you're iterating on a specific shot, turn it off. This is the newest Wan most people will ever run - and for now, the only way to run it at all.
Inputs (20)
| Name | Type | Default | Description |
|---|---|---|---|
| referenceImagesopt | IMAGE | — | |
| frameImagesopt | IMAGE | — | |
| referenceVideosopt | RUNWARE_REFERENCEVIDEOS | — | |
| audioopt | STRING | Audio input (UUID or URL). | |
| positivePromptopt | STRING | Text prompt describing elements to include in the generated output. | |
| negativePromptopt | STRING | Prompt to guide what to exclude from generation. Ignored when guidance is disabled (CFGScale ≤ 1). | |
| sizeopt | COMBO | 1080p (16:9) | Output size. Only one of resolution or dimensions is sent. |
| seedopt | INT | 00–2147483647 | Random seed for reproducible generation. When not provided, a random seed is generated in the unsigned 32-bit range. |
| durationopt | INT | 52–15 | Length of the generated video in seconds. The total number of frames produced is determined by duration multiplied by the model's frame rate (fps). |
| numberResultsopt | INT | 11–4 | Number of results to generate. Each result uses a different seed, producing variations of the same parameters. |
| settings.audioopt | BOOLEAN | true | Generate native audio aligned with visual content. |
| settings.promptExtendopt | BOOLEAN | true | Enable LLM-based prompt rewriting to expand and clarify inputs. Affects reproducibility. |
| safetyopt | BOOLEAN | false | Enable to set safety. Off uses the model's default. |
| safety.checkContentopt | BOOLEAN | false | Enable or disable content safety checking. |
| safety.modeopt | COMBO | fast | Safety checking mode for video generation. |
| settings.shotTypeopt | COMBO | single | Shot composition style. |
| ttlopt | BOOLEAN | false | Enable to set ttl. Off uses the model's default. |
| ttl_valueopt | INT | 60 | Time-to-live (TTL) in seconds for generated content. Only applies when `outputType` is `URL`. |
| outputFormatopt | COMBO | MP4 | File format for the generated video. |
| outputQualityopt | INT | 9520–99 | Compression quality of the output. Higher values preserve quality but increase file size. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |