qwen / editImage
Instruction editing with Alibaba's editor, no GPU
- images
- api_config
- images
- errors
- workflow_id
- raw_json
Qwen-Image-Edit is the model that made masked inpainting, face adapters, and half the ControlNet stack optional - a 20B editor you hand a picture and a sentence, and it does the rest. The KB calls it "the model people use" while the base is "the model people admire." This node runs it hosted on Civitai's orchestration layer, so you get the instruction-editing magic without the 20B download and the 16GB+ VRAM dance.
The host-model caveat from the create node applies here with extra force: the default model is edit-plus, with 3.0-pro, 2.0-pro, edit-max, edit, and edit-plus choices - these are the newer closed Qwen editor variants (the API/chat-only line), not the open 20B checkpoints. You're renting Alibaba's current hosted editor, which is usually a quality upgrade over the open ones, at per-job Buzz cost.
How it works
Standard civitai-comfy-nodes flow: upload reference images + prompt + width/height to the Civitai Orchestration API as a qwen / editImage job, long-poll, return an IMAGE tensor. Qwen editors take the reference encoded twice - semantic and appearance control - which is why one model handles both "recolor the dress" and "turn this into a night scene." Prompt prompt_extend default is True, same as create.
The inputs that matter
- prompt, width, height, images - all required. The tooltip on
imagesis the key detail: reference images are numbered by input order and you refer to them in the prompt as "Image 1", "Image 2", "Image 3". Wire multipleIMAGEs and address them by name. - model -
3.0-pro,2.0-pro,edit-max,edit-plus(default),edit. - prompt_extend - default True; turn off for literal instructions.
- negative_prompt, quantity (1–6), seed, watermark (default False), output_format, image_metadata - standard.
Outputs
images → Preview/Save Image. errors, workflow_id, raw_json are diagnostics.
Installing and authenticating
Pack-wide install:
cd ComfyUI/custom_nodes
git clone https://github.com/civitai/civitai-comfy-nodes.git
pip install -r civitai-comfy-nodes/requirements.txt
or ComfyUI Manager → "Civitai Comfy Nodes" → Install → restart. Dependencies: requests + python-socketio[client].
Auth: Civitai Auth node → CIVITAI_API_TOKEN → stored key/OAuth → browser login. Headless:
export CIVITAI_API_TOKEN=your_token
Where people get burned
- Reference numbering. With multiple inputs you must say "Image 1"/"Image 2" in the prompt or the model won't know which reference you mean. Single image? You can still just describe it.
- Drift is the known weakness. Instruction editors re-emit the whole frame, so unedited regions come back close-but-not-identical, and errors compound over edit chains. The KB's standard fix is to bolt a mask back on (inpaint crop → edit → stitch) for surgical jobs - harder to do on a hosted node, so plan chains carefully.
prompt_extendon by default will embellish your instruction. Off for exact control.- It's the hosted editor, with hosted filters and per-job billing. Not the open checkpoint, not free, and your reference images leave the machine.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| width | INT | 00–2048 | — |
| height | INT | 00–2048 | — |
| images | IMAGE | Reference images. DashScope numbers them by input order — prompts refer to them as "Image 1", "Image 2", "Image 3". | |
| output_formatopt | COMBO | 4 options: , jpeg, png, webP | |
| image_metadataopt | STRING | External metadata that will be stored with the image | |
| negative_promptopt | STRING | — | |
| quantityopt | INT | 11–6 | — |
| seedopt | INT | 00–4294967295 | — |
| prompt_extendopt | BOOLEAN | true | — |
| watermarkopt | BOOLEAN | false | — |
| modelopt | COMBO | edit-plus | 6 options: 3.0-pro, 2.0-pro, 2.0, edit-max, edit-plus, edit |
| api_configopt | CIVITAI_CONFIG | Optional Civitai Auth connection; defaults to CIVITAI_API_TOKEN or stored OAuth login. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| errors | STRING | — |
| workflow_id | STRING | — |
| raw_json | STRING | — |