Qwen Image 3.0 Edit
Rent the newest Qwen editor for three cents a shot
- reference_images
- client
- image
This node does not run Qwen on your machine. It packages your prompt and your reference images, POSTs them to WaveSpeed's hosted copy of Alibaba's qwen-image-3.0 edit endpoint, waits for the job, and hands the result back as an ordinary ComfyUI IMAGE tensor. Nothing downloads, no checkpoint goes in models/, and your GPU can be a potato.
Why you'd reach for it: the Qwen-Image-Edit line is the open instruction editor that replaced a mask plus a ControlNet plus an IP-Adapter for a huge class of jobs - object removal, garment swaps, relighting, re-posing. But the newest revisions kept going API-only. Qwen-Image-2.0 shipped with no weights, and 3.0 is a hosted model, so there is no local door to walk through. If you want the current Qwen editor and either can't fit the 20B stack or can't be bothered assembling it, this is a straight line to it.
The tradeoff is the usual one for API-wrapper nodes: your prompt and your reference images leave the machine, and every queue costs money. First generation is $0.03 at 1k or 2k on the standard model, $0.04/$0.075 on Pro, plus $0.003 per reference image. Cheap per image, not cheap per evening.
How it works
The node builds a request object and sends it to /api/v3/alibaba/qwen-image-3.0/edit (or the -pro path). Any file you wire in is base64-encoded and sent inline as a data URI - you do not need an upload node, and there's no second round trip to host your image somewhere. Then it polls /api/v3/predictions/<id>/result once a second until the task lands, with a 30-minute ceiling, and ComfyUI's Cancel button genuinely works because the poll loop checks the interrupt flag before each request. The returned URLs are fetched and decoded into a float tensor, (B, H, W, C) in 0..1 - the standard ComfyUI image format, so nothing downstream needs to care that it came off the network.
The inputs that matter
prompt is the edit instruction, in Chinese or English. WaveSpeed recommends keeping it under 800 characters; a paragraph of muddled instruction is worse than one clean sentence. It's required - the node raises Prompt is required on an empty string.
reference_images takes a ComfyUI IMAGE batch, up to 3 slices, each 384–2048 px per side. This takes precedence over reference_images_url (comma- or newline-separated URLs), which exists for images you already host. Connect more than three and you get an error rather than a silent trim, which is the right call - you find out which images the model never saw.
The rest are dials you'll mostly leave alone: model (3.0 or 3.0 Pro, priced in the tooltip), aspect_ratio (auto follows your first reference image, otherwise 15 fixed ratios), resolution (1k/2k), enable_prompt_expansion (lets the model rewrite your instruction - handy on a lazy prompt, unpredictable on a precise one), and seed. client is optional: leave it unwired and the node resolves your key from ComfyUI Settings first, then a node input, then config.ini.
Output is a single image - wire it to Save Image, or straight into another edit node.
Install
ComfyUI Manager: search erpk, install ERPK Custom Nodes, restart. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/eRepublik-Labs/comfyui-nodes-erpk.git erpk
cd erpk && pip install -r requirements.txt
Dependencies are light - requests, Pillow, pydantic, urllib3, cryptography - plus the provider SDKs the pack's other integrations need (anthropic, google-genai, openai, xai-sdk), because this is a monorepo. No model files at all. Then paste your WaveSpeed key in: right-click the canvas → ERPK Settings → API Keys. Keys are stored per-user and never saved into workflows.
Where people get burned
The classic one is the seed. Leave it at -1 and the node's fingerprint is deliberately unhashable, so ComfyUI re-runs and re-bills on every queue, even if you changed nothing. Pin a fixed seed and re-queueing the same graph serves the cached result for free. On a node that costs money per run, that distinction is the whole ballgame.
Two more: an empty prompt or zero connected images is a hard error, not a default edit; and if the edit starts drifting - Qwen's known structural habit is re-emitting the whole frame, so pixels nobody asked about move, and faces wander across a chain of edits - the 2026 answer is to stop chaining and mask the region you actually care about.
Finally, a naming trap: this is WaveSpeed the inference platform. It has nothing to do with the "WaveSpeed" caching/speedup technique you'll see in older Flux acceleration threads.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| model | COMBO | Qwen Image 3.0 | Qwen Image 3.0: $0.03 per image at 1k or 2k. Qwen Image 3.0 Pro: $0.04 at 1k, $0.075 at 2k. Both add $0.003 per reference image. |
| prompt | STRING | Edit instruction in Chinese or English. WaveSpeed recommends at most 800 characters. | |
| reference_imagesopt | IMAGE | Reference images as a ComfyUI IMAGE batch, up to 3, 384-2048 px per side. Each slice is one image. Takes precedence over `reference_images_url`. Sent inline as base64, no upload. | |
| reference_images_urlopt | STRING | Reference image URLs, up to 3, separated by commas or newlines. Ignored when `reference_images` is connected. | |
| clientopt | WAVESPEED_AI_API_CLIENT | WaveSpeed API client (optional if API key is configured in Settings) | |
| aspect_ratioopt | COMBO | auto | Output aspect ratio. auto follows the first reference image. |
| resolutionopt | COMBO | 1k | Output resolution tier |
| enable_prompt_expansionopt | BOOLEAN | false | Let the model rewrite the instruction into a more detailed prompt |
| seedopt | INT | -1-1–2147483647 | Generation seed, sent to the API. A fixed seed reproduces the same result and lets ComfyUI reuse the cached output; -1 generates a new one each queue. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |