Qwen Image 3.0 Pro · Image Editing
Retype the cover line without redrawing the cover
- image_urls
- images
- task id
Here's the scenario this node was born for. You have a finished piece of artwork - a cover, a poster, a product mockup, a UI screenshot - and the client wants the headline changed. On a normal diffusion pipeline that means inpainting the text region, hoping the font comes back, and repainting the whole area anyway. The Qwen line's headline trick is the opposite: it retypes the words and leaves the picture alone.
Qwen Image 3.0 Pro edit is the higher-detail version of that, editing or merging one to three reference images from a written instruction at 1k or 2k in eight aspect ratios, from about $0.04 an image. The Pro premium over the standard 3.0 edit node is the same one as on the generation side - more spend on multi-element text and on the surface textures around it.
Inputs
prompt- subject, composition, lighting, any text to render. For retyping work be surgical: quote the old string and the new one and say what shouldn't move.image_urls- one to three references, in the order your instruction refers to them, one autogrow socket each. Positional references ("Picture 1", "Picture 2") are the house style; a prompt that doesn't name them gets you a merge of everything you fed in.resolution-1kor2k, defaulting to 2k. This is not the setting to economise on when the deliverable is type.aspect_ratio- default 1:1, eight options, and it does not follow the source image by default.enable_prompt_expansion- on by default; the service rewrites and expands the prompt. Turn it off when the words are the point, because an expanded prompt is a changed instruction.negative_prompt- describe what to exclude. Keep it short and specific rather than copying an SDXL keyword block; on LLM-encoded 2026 models, stating the constraint positively tends to work better.num_outputs- pinned to 1.seed- optional, fixed after generate by default so re-queueing reuses the result instead of buying a second one.
Outputs
images and task id. Save Image next; the task id is the job handle for support.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/spicyapi-ai/comfyui-spicyapi
Restart ComfyUI, paste a key from spicyapi.ai/console/keys into Settings > SpicyAPI, restart once so the node list comes from your account. No dependencies, no weights, no GPU - the model runs server-side, so a laptop is fine. Server installs should set SPICY_API_KEY instead of typing the key into a browser.
The bit nobody tells you
Text edits still re-emit the frame. The retyping is good; the "keep everything else identical" part is a hope, not a guarantee. Expect the surrounding pixels to shift slightly and faces to drift if you run several passes on the same image. For anything where the untouched region is contractual, do the crop-edit-stitch dance with a mask.
Localisation is a real use case, and it's cheaper than a designer. Swapping the language on a finished layout is one of the few jobs where this beats doing it by hand. Worth a test before you assume it can't.
Watch the passes, not the single image. At roughly $0.04 an edit, four passes to get a headline right is sixteen cents, which is fine - until it's a 50-asset deck. Set Max cost per run under Settings > SpicyAPI so the node quotes each run and refuses anything above your ceiling before charging.
Cancelling isn't cancelling. Interrupt in ComfyUI and the job still finishes on SpicyAPI, billed on success, with the output in your console for up to 14 days. A failed run comes back with a task id; 40004 means no deployment serves the parameter combination, 40310 means the account's email isn't verified.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Describe the subject, composition, lighting, and any text to render. | |
| image_urls | COMFY_AUTOGROW_V3 | Reference images in the order used by the editing instruction. | |
| aspect_ratio | COMBO | 1:1 | Output aspect ratio. |
| resolution | COMBO | 2k | Output image resolution tier. |
| num_outputs | INT | 11–1 | Number of output images. |
| enable_prompt_expansion | BOOLEAN | true | Let the service rewrite and expand the prompt before generation. |
| negative_prompt | STRING | Describe elements to exclude from the image. | |
| seed | INT | 00–2147483647 | Same seed and settings, same result. Set 'control after generate' to randomize to get a new result on every run; every run is billed. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| task id | STRING | The SpicyAPI task id, for the console logs or support. |