ComfyUI Node

Qwen-Image-2.1-Pro

The Qwen-Image you can't download

By Runware·Created 2 years ago·Updated 24 days ago· 142
Qwen-Image-2.1-Pro
  • referenceImages
  • advancedFeatures.watermark.image
  • image
◄positivePrompt—►
◄negativePrompt►
◄width512►
◄height512►
◄seed0►
◄numberResults1►
◄advancedFeaturesfalse►
◄advancedFeatures.watermark.bgColor►
◄advancedFeatures.watermark.displayPosition(default)►
◄advancedFeatures.watermark.fontColor►
◄advancedFeatures.watermark.opacityfalse►
◄advancedFeatures.watermark.opacity_value0.10►
◄advancedFeatures.watermark.text►
◄settings.promptExtendtrue►
◄settings.promptExtendModedirect►
◄safetyfalse►
◄safety.checkContentfalse►
◄settings.thinkingfalse►
◄ttlfalse►
◄ttl_value60►
◄outputFormatJPG►
◄outputQuality95►

Why this node exists

Qwen-Image is the family you already trust on your own disk. The 20B base and the Edit line are Apache 2.0, Qwen-Image-Edit became the default open instruction editor, and nothing about it polices your NSFW LoRAs. Then the line went API-only. Qwen-Image-2.0 cut 20B down to a 7B unified generation-plus-editing model and shipped with no weights at all, and 2.1-Pro is the same deal: there is no checkpoint to drop in models/checkpoints.

So this node is the only door. You type a prompt, Runware runs the model on their hardware, and the result comes back as a normal ComfyUI IMAGE you can wire into your local upscaler, mask chain, or Save Image.

That is also the honest cost of it. Your prompt and any reference image leave your machine, the call is metered, and the safety behaviour is Alibaba's, not yours - there is no weight to patch, which is the general shape of the API-node bargain. If the local 20B checkpoint can do the job, use it. Reach for this when you specifically want 2.1 behaviour - its text rendering and unified edit/generate path - and you have no local equivalent.

Worth knowing the ladder: the pack also ships Qwen-Image-2.0-Pro, 3.0-Pro, the Edit-2511 and Edit-Plus nodes, and Layered. Comparing them is a node swap and one queue, which is the nicest thing about having the whole catalog in the menu.

How it runs

Nothing gets loaded into VRAM. The node is an HTTP client: it builds a request (model: alibaba:[email protected], taskType: imageInference), converts anything wired into an IMAGE input into an inline base64 PNG data URI, sends it through the runware-sdk, then downloads the returned image URL and stacks it into a torch tensor. Dependencies are light - runware-sdk, pillow, soundfile - with no model files and no CUDA work beyond whatever your own downstream nodes do.

The API key resolves in this order: RUNWARE_API_KEY environment variable, then the value in ComfyUI's Settings, then ~/.runware/config.yaml written by runware auth login.

Each run prints cost and safety on the node's title bar, e.g. $0.00078 · NSFW: no. That little readout is the reason to keep an eye on numberResults: each result is its own generation, so a 4-result test is four bills like that one.

The inputs that matter

  • positivePrompt - the only required input, multiline.
  • width / height - default 512, range 182–5792. 512 is a small default for a model like this; set your real dimensions or nothing interesting happens.
  • numberResults (1–20) - you get one IMAGE output containing that many frames as a batch. Wire it to Save Image and you get that many files.
  • referenceImages - an IMAGE tensor, no upload node needed.
  • settings.promptExtend - on by default, and it LLM-rewrites your prompt before generation. Convenient, and the enemy of reproducing a look. Turn it off when you want your words to be the actual prompt.
  • settings.thinking - off by default; more reasoning, more latency.
  • negativePrompt, seed, outputFormat (JPG/PNG/WEBP), outputQuality - the familiar ones. The watermark fields under advancedFeatures are inert until you flip that toggle.

The single output is image (IMAGE).

Installing it

ComfyUI Manager → search Runware → install → restart, or manually:

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

Then set the key once, in ComfyUI Settings → Runware API key, or export RUNWARE_API_KEY (the env var wins). Heads up from the community: Runware's billing is top-up with a minimum charge and a card on file, which is the most common complaint about the platform even among people who rate its pricing.

Where people get burned

  • RuntimeError: No Runware API key - the key isn't set anywhere the node can see. Set it in Settings or the env var, and restart.
  • Errors are one clean line on purpose. You'll get something like Runware: ... [parameter 'width', code …, HTTP 400]. Values outside a parameter's real range are rejected server-side. If you want the full traceback, set RUNWARE_DEBUG before launching ComfyUI.
  • Nothing reproduces. Nine times out of ten it's promptExtend - the model isn't seeing the prompt you typed. Turn it off, then set seed.
  • Big dimensions cost more and can be refused. There are real per-model validation rules; the 5792px ceiling is not an invitation.
  • The safety check is not a local setting. safety.checkContent adds latency and reports NSFW on the title bar; what it permits is the provider's call and you can't fine-tune around it.
CategoryRunware/Image/alibaba

Inputs (24)

NameTypeDefaultDescription
positivePromptSTRINGText prompt describing elements to include in the generated output.
referenceImagesoptIMAGE—
advancedFeatures.watermark.imageoptIMAGE—
negativePromptoptSTRINGPrompt to guide what to exclude from generation. Ignored when guidance is disabled (CFGScale ≤ 1).
widthoptINT512182–5792Width of the generated media in pixels.
heightoptINT512182–5792Height of the generated media in pixels.
seedoptINT00–2147483647Random seed for reproducible generation. When not provided, a random seed is generated in the unsigned 32-bit range.
numberResultsoptINT11–20Number of results to generate. Each result uses a different seed, producing variations of the same parameters.
advancedFeaturesoptBOOLEANfalseEnable to set advancedFeatures. Off uses the model's default.
advancedFeatures.watermark.bgColoroptSTRINGBackground color in hex format.
advancedFeatures.watermark.displayPositionoptCOMBO(default)Watermark position.
advancedFeatures.watermark.fontColoroptSTRINGText color in hex format.
advancedFeatures.watermark.opacityoptBOOLEANfalseEnable to set advancedFeatures.watermark.opacity. Off uses the model's default.
advancedFeatures.watermark.opacity_valueoptFLOAT0.100.1–1Watermark opacity.
advancedFeatures.watermark.textoptSTRINGWatermark text.
settings.promptExtendoptBOOLEANtrueEnable LLM-based prompt rewriting to expand and clarify inputs. Affects reproducibility.
settings.promptExtendModeoptCOMBOdirectRewriting strategy for `promptExtend`.
safetyoptBOOLEANfalseEnable to set safety. Off uses the model's default.
safety.checkContentoptBOOLEANfalseEnable or disable content safety checking. Increases total generation time.
settings.thinkingoptBOOLEANfalseEnables thinking mode for improved quality at the cost of increased generation time.
ttloptBOOLEANfalseEnable to set ttl. Off uses the model's default.
ttl_valueoptINT60Time-to-live (TTL) in seconds for generated content. Only applies when `outputType` is `URL`.
outputFormatoptCOMBOJPGFile format for the generated image.
outputQualityoptINT9520–99Compression quality of the output. Higher values preserve quality but increase file size.

Outputs (1)

NameTypeDescription
imageIMAGE—