Wuli Qwen Image Edit 2.0
The newest Qwen image model, without the 20B weights on your GPU
- ref_image_1
- ref_image_2
- ref_image_3
- ref_image_4
- images
- urls
- record_id
The name is a small lie and it's a good one: Wuli Qwen Image Edit 2.0 doesn't run Qwen Image 2.0 on your machine - it can't, because those weights don't exist for download. Qwen-Image-2.0 launched API-only in February 2026, and this node is your door into it from inside a ComfyUI graph. You type a prompt, optionally wire in up to four reference images, and the node talks to the Wuli platform (wuli.art), which hosts Qwen Image 2.0 and Qwen Image Turbo for you, then drops the finished images back into your workflow as a normal IMAGE tensor.
That makes this the cleanest possible example of the API-wrapper-node pattern: no GPU needed, no model download, no weights to quantize. If you've been watching the 20B Qwen-Edit line (2509, 2511) eat your VRAM, this is the "what if someone else ran it" version. It's a hosted service, though, so the usual tradeoffs come with it - per-call cost, your prompts and reference images leaving the machine, and a content filter you can't argue with. The node even has a REVIEW_FAILED status baked into its failure states, which tells you the platform reviews jobs server-side. Treat it as a tool for the model you can't run locally, not a replacement for local generation.
How it works
Peek at the source and the flow is short and honest: your reference images get encoded to PNG, uploaded to Wuli's object storage through a getUploadUrl call, then the node submits a generation task with your modelName, prompt, aspectRatio, and resolution. It polls the task status every poll_interval seconds until it hits SUCCEED, then tries to fetch a no-watermark URL for each result before downloading everything back into a batch tensor. Under the hood it's just urllib, PIL, and numpy - nothing that isn't already in ComfyUI.
Because generation happens on a remote server, the node blocks until the job finishes. The default timeout_seconds of 300 is plenty for a single image but tight for four 4K renders; if your queue times out, raise it toward the 1800 max rather than assuming it broke.
The inputs that actually matter
Most of the fields are self-explanatory, and only a few need real thought:
api_token- paste your Wuli key here, or leave it empty and set theWULI_API_TOKENenvironment variable (the README's PowerShell example uses$env:WULI_API_TOKEN = "wuli-your-token"). No token, no run - the node raises immediately.mode-autois the sane default: no refs wired in means text-to-image, refs present means image-to-image. Forceimg2imgif you want to guarantee it, but remember it errors without at least oneref_image.ref_image_1…ref_image_4- the whole "edit" in the name. Wire in up to four images and Qwen 2.0 will treat your prompt as an instruction applied to them: restyle, edit, swap, combine. They're uploaded as-is, so size and number add latency.model_name,aspect_ratio,resolution- model (2.0 or Turbo), the 1:1-to-21:9 ratio list, and 2K/4K output. 4K is the one that will cost you more and take longer.n- 1 to 4 outputs per call.
Outputs: images (IMAGE, the batch to wire into a save/upscale/preview node), urls (one hosted URL per line, handy for logging), and record_id (the Wuli task id, useful if you need to chase something with their support).
Installing it
No model files, no pip dependencies - this is a self-contained wrapper. Either grab it from ComfyUI Manager (search "comfyui-qwen-image-edit-node") or:
cd ComfyUI/custom_nodes
git clone https://github.com/panyicast/comfyui-qwen-image-edit-node
Then restart ComfyUI. The README's alternate path is literally copying the folder in by hand, but the clone does the same job. Set your token, restart, and the node appears under the Wuli category.
Where people get burned
The setup is trivial; the gotchas are all about it being remote. Missing token is the most common first-run error - the api_token input and the env var are the only two ways, and an empty input isn't an override, it's a fallback. img2img with no refs is an instant error; auto sidesteps it. Timeouts - raise timeout_seconds before blaming anything else. And remember the moderation reality: a REVIEW_FAILED status means the platform rejected the job, and since the model is hosted, that's not something any local setting will fix. Wuli itself is a real but small player (a handful of threads on Reddit, best known for the team's Qwen turbo LoRAs), so if you want a zero-maintenance path to the newest Qwen image model and you have a token, this is the shortest one in ComfyUI - just keep the cloud tradeoffs in view.
Inputs (16)
| Name | Type | Default | Description |
|---|---|---|---|
| api_token | STRING | Wuli API token. Leave empty to use WULI_API_TOKEN env var. | |
| prompt | STRING | — | |
| negative_prompt | STRING | — | |
| mode | COMBO | auto | 3 options: auto, txt2img, img2img |
| model_name | COMBO | Qwen Image 2.0 | 2 options: Qwen Image 2.0, Qwen Image Turbo |
| aspect_ratio | COMBO | 1:1 | 9 options: 1:1, 4:3, 3:2, 16:9, 21:9, 3:4, +3 |
| resolution | COMBO | 2K | 2 options: 2K, 4K |
| n | INT | 11–4 | — |
| optimize_prompt | BOOLEAN | true | — |
| seed | INT | -1-1–2147483647 | -1 means random seed |
| poll_interval | FLOAT | 3.01–15 | — |
| timeout_seconds | INT | 30010–1800 | — |
| ref_image_1opt | IMAGE | — | |
| ref_image_2opt | IMAGE | — | |
| ref_image_3opt | IMAGE | — | |
| ref_image_4opt | IMAGE | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| urls | STRING | — |
| record_id | STRING | — |