Vidu Q1 (Image)
The odd one out — a Vidu image generator that needs a reference photo
- referenceImages
- advancedFeatures.watermark.image
- image
Here's the thing that throws everyone off about Vidu Q1 (Image): it's not a video node, even though its name screams Vidu. It's Shengshu's image-generation model - the same family that makes the Vidu videos - exposed here as a plain text-and-reference-to-image node that outputs an IMAGE. It lives under Runware/Image/vidu in the node menu, not the video section, and that's the first clue you should treat it as an image generator with a video-maker's name.
And it's a reference image generator, which is the second clue. Unlike most text-to-image nodes, referenceImages is a required input. This model is built around taking a subject from a photo and re-rendering it - think character-consistency work, product shots from a source image, "same person, new scene" type generation. If you're the kind of person who keeps a library of reference images for keeping a character's face stable across generations, this is a node that does that job on a paid cloud instead of your local stack.
How it works
Standard pack machinery, but with a required image socket. On queue, the node (vidu:q1@image, imageInference) uploads your referenceImages via the SDK, sends the request with your positivePrompt over REST, and downloads the result into a native IMAGE tensor. Wire the image output into Preview Image or Save Image and you're done. Note what's not here: no negativePrompt, no seed, no steps, no CFGScale, no scheduler. This is a first-generation API model, and Runware's node exposes exactly the knobs the API gives it - a small set, because the model leans on the reference rather than on your tuning.
The inputs that matter
- referenceImages (required) - the
IMAGEsocket that makes this node what it is. This is the identity source; pick a clear, well-lit reference. - positivePrompt (required) - what to do with it: new scene, new style, new outfit.
- width / height - output size, default 1024×1024.
- numberResults - variations (each on its own internal seed, since there's no seed widget).
The pack tail (outputFormat, outputQuality, safety, ttl) rounds it out. One output: image.
Install and API key
Install once for the whole pack:
cd ComfyUI/custom_nodes
git clone https://github.com/Runware/ComfyUI-Runware
pip install -r ComfyUI-Runware/requirements.txt
Restart ComfyUI (or install Runware from ComfyUI Manager). You need an API key from runware.ai/api-keys, set in ComfyUI Settings → Runware API key, exported as RUNWARE_API_KEY, or stored via runware auth login.
Gotchas
The reference image does most of the work, so garbage in, garbage out - a low-res or badly framed reference will drag down every result, and you can't rescue it with prompt-wording since there's no guidance dial to turn. The missing controls are also worth knowing before you buy in: no seed widget means "same image, slightly different" isn't directly reproducible unless you fix the reference and accept the variation. And because it's a Vidu-family model, the image pricing is generally cheaper than the video siblings, but it's still a metered cloud call. If your reference needs a background removed first, run it through a background-removal node before it hits this one - the model will thank you.
Inputs (18)
| Name | Type | Default | Description |
|---|---|---|---|
| referenceImages | IMAGE | — | |
| positivePrompt | STRING | Text prompt describing elements to include in the generated output. | |
| advancedFeatures.watermark.imageopt | IMAGE | — | |
| sizeopt | COMBO | 1080p (1:1) | Output size. Only one of resolution or dimensions is sent. |
| numberResultsopt | INT | 11–20 | Number of results to generate. Each result uses a different seed, producing variations of the same parameters. |
| advancedFeaturesopt | BOOLEAN | false | Enable to set advancedFeatures. Off uses the model's default. |
| advancedFeatures.watermark.bgColoropt | STRING | Background color in hex format. | |
| advancedFeatures.watermark.displayPositionopt | COMBO | (default) | Watermark position. |
| advancedFeatures.watermark.fontColoropt | STRING | Text color in hex format. | |
| advancedFeatures.watermark.opacityopt | BOOLEAN | false | Enable to set advancedFeatures.watermark.opacity. Off uses the model's default. |
| advancedFeatures.watermark.opacity_valueopt | FLOAT | 0.100.1–1 | Watermark opacity. |
| advancedFeatures.watermark.textopt | STRING | Watermark text. | |
| safetyopt | BOOLEAN | false | Enable to set safety. Off uses the model's default. |
| safety.checkContentopt | BOOLEAN | false | Enable or disable content safety checking. |
| 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 | JPG | File format for the generated image. |
| outputQualityopt | INT | 9520–99 | Compression quality of the output. Higher values preserve quality but increase file size. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |