ComfyUI Node

Qwen Image

Qwen Image — the 20B model nobody runs, called from a node instead

By yogurt7771·Created 2 years ago·Updated 6 days ago· 3
Qwen Image
  • images
  • provider
  • image
  • images
  • text
  • thought
◄prompt►
◄model▾►
◄n1►
◄seed0►
◄watermarkfalse►
◄extra►
◄retry_count1►
◄system_prompt►

Qwen-Image is the open model people admire and don't run. A 20B MMDiT with best-in-class text rendering, Apache 2.0, and a local footprint that makes most cards sweat - the Edit line built on it is what actually gets used. So the hosted Qwen Image models are the pragmatic shortcut: same family, no download, and access to the versions Alibaba stopped open-sourcing. Qwen-Image-2.0, released February 2026, is API-only with no weights at all. This node is the door.

Reach for it for typography and layout-heavy images, for prompt-driven edits with reference images, and for hitting a model version you can't run - Qwen Image 3.0 Pro, 3.0, 2.0 Pro, plus a Custom model entry for anything newer. Generation and editing are the same node; hand it reference images and it becomes an editor.

How it works

The node builds a request and dispatches it through a route resolved from the connected provider. Its default is Alibaba DashScope; Qwen Image 3.0 Pro and 3.0 also have an OpenRouter route, which is handy if you already keep an OpenRouter balance. Connect a provider that doesn't offer the model and the error names the ones that do, so there's no ambiguity about which key you need. If provider is left unconnected, the official API is used with the key from api_key.json ("dashscope", "qwen" or "wan") or DASHSCOPE_API_KEY.

The inputs and outputs

  • prompt - the thing you're generating or the instruction you're giving the editor.
  • model - Qwen Image 3.0 Pro, 3.0, or 2.0 Pro. Picking one reveals that version's own fields beneath the dropdown, which is where output size lives (presets like 1024*1024 and 1664*928, or Custom with your own width and height), along with a negative prompt and a prompt-extend toggle that lets the service rewrite your prompt before it draws. That last one defaults on, and if you've written a careful prompt, turning it off is the single most useful thing you can do.
  • n - 1 to 6. Every image is another billed generation, so 6 is a budget decision, not a batch convenience.
  • seed - sent when the model supports it, and changing it forces a re-run. 0 lets the API pick.
  • watermark - off. Leave it off.
  • images - optional reference images, up to 3, with new slots appearing as you connect them and batches expanded. This is the editing path, and for most people it's the reason to be here at all: the 2026 answer to character consistency isn't an adapter any more, it's feeding a good reference image to an instruction editor and letting it work.
  • extra - a JSON object merged into the request for parameters not yet exposed as widgets.
  • retry_count - total attempts, with a pause between them and the underlying failure reported if all of them lose.
  • system_prompt and provider are optional; both are advanced, and the second one is the provider node.

Outputs: image (all returned images as one batch - only the first if the sizes differ), images (a proper list), plus text and thought for any text the service sends back. Wire image to a Save or preview node; the rest you can ignore most days.

Installing

ComfyUI Manager, search the pack title; or:

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

Restart, then find it under YogurtNodes/LLM/Image. Runtime display names carry the pack's " (Yogurt Nodes)" suffix. Key:

# custom_nodes/ComfyUI-YogurtNodes/yogurt_nodes/llm/api_key.json
{ "dashscope": "sk-..." }

There are no model files to download, which is the point - but run that pip line anyway; the pack needs openai and requests.

Where people get burned

DashScope keys are region-scoped, and the matching base URL is not the default one: mainland China uses dashscope.aliyuncs.com, the international endpoint is dashscope-intl.aliyuncs.com. A key from one against the other fails in ways that look like a bad key. Set it through the provider node's base_url, or the "dashscope_base_url" key in api_key.json.

Two other predictable ones: exceeding the 3-reference limit raises an error rather than quietly dropping images, and size has real limits - total area between 512×512 and 2560×2560, aspect ratio no wider than 8:1 or taller than 1:8. And the standing objection to the whole category applies here too: this is metered, your prompts and reference images leave the machine, and Alibaba's filters apply. It's the right call when the model you want has no weights; it's the wrong call for a job your local checkpoint already does.

CategoryYogurtNodes/LLM/Image

Inputs (10)

NameTypeDefaultDescription
promptSTRINGPrompt sent to the model.
modelCOMBOModel version; the inputs below change with the selected model.
nINT11–6Number of images to generate.
seedINT00–2147483647Sent to the API when the model supports it; changing it also forces a re-run. 0 lets the API pick a random seed.
watermarkBOOLEANfalseAdd a watermark.
extraSTRINGOptional JSON object merged into the request (for parameters not exposed as inputs).
imagesCOMFY_AUTOGROW_V3Optional reference image(s); batches are expanded. Up to 3.
retry_countINT11–10Total attempts on failure.
system_promptoptSTRINGSystem instruction sent with the request.
provideroptYOGURT_LLM_PROVIDERProvider node. When unconnected, the official API is used with keys from api_key.json or environment variables.

Outputs (4)

NameTypeDescription
imageIMAGEAll images as one batch (first image only if sizes differ).
imagesIMAGE—
textSTRING—
thoughtSTRING—