Qwen Image 2.1 Pro · Text to Image
Six 2K candidates a pop, and only when you ask for them
- images
- task id
The interesting widget on this node isn't the prompt box, it's num_outputs. Qwen Image 2.1 Pro will render up to six 2K images from a single prompt in one request - which changes the workflow from "render, judge, tweak, render" into "render a contact sheet, pick the good one". At about 5.4 credits ($0.054) per image returned, a six-up is about 32 credits - thirty-two cents - and it saves you five round trips.
That's the honest pitch: not better images than the plain 2.1 t2i, but fewer interruptions.
How the request is assembled
The pack mirrors PopNow's per-model JSON schema into ComfyUI widgets at startup, so what you see is exactly what the API accepts. On queue it quotes the job, submits with an idempotency key, polls, downloads the batch and returns it as a single IMAGE tensor batch. Nothing runs locally; the node is a well-behaved HTTP client wearing a ComfyUI shirt.
Which also means the interesting decisions are all about how you ask.
The widgets, ranked by how much they'll affect your day
prompt - there's no negative prompt field on this model, and the tooltip says why: "write what to leave out directly in the prompt". Write it as a description of the finished image plus a short list of things you don't want. Sentences, not tags - the encoder is a language model.
num_outputs - 1 to 6, default 1. Six is the whole reason to choose Pro. Wire a Save Image and you get six files; the batch is real, not a carousel.
resolution - 2K by default, and "every tier costs the same". No budget tier, so if you want cheap iterations, that's what the turbo node is for.
enable_prompt_expansion - False by default here (unlike the non-Pro 2.1, where it's on). Turning it on lets the service rewrite your brief.
enable_thinking - True by default, and worth understanding: "Only works while prompt expansion is on." With expansion off - the default - this switch is inert. Flip expansion on if you want the slower, smarter rewrite; ignore both if you want literal obedience.
prompt_optimization_mode - direct or agent. Plain English: one rewrite pass, or a multi-step rewrite with finer detail. agent is slower and occasionally genuinely better on dense prompts with lots of constraints; direct is right for most things. It only matters when expansion is on.
aspect_ratio - 1:1 default. Set it early; re-rendering at another shape is a new charge.
seed - fixed, so a repeated queue returns the cached batch rather than buying it twice.
Outputs: images and task id. No alpha channel - Pro doesn't do the transparent-background trick; the plain 2.1 t2i does.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/popnow-ai/popnow-comfyui
Restart ComfyUI. Manager → Custom Nodes Manager, search PopNow, Install is the friendlier path, and comfy node install popnow-comfyui if you're scripting it. Zero declared dependencies - the pack uses ComfyUI's own bundled aiohttp, torch, Pillow, NumPy and PyAV, so nothing downloads and no CUDA gets angry. Python 3.10+ and a V3-API ComfyUI required.
Key: popnow.ai/api/console/keys → Settings → PopNow → paste → restart once more, because the node list is fetched from your account's catalog at startup. On a shared server, set POPNOW_API_KEY in the environment instead of the settings field.
Traps and small grudges
Six candidates arrive as one batch of identically-sized images - pictures of different sizes get resized to the first one's dimensions, since a tensor can't be ragged. Fine here, since all six come from the same request.
The pricing badge shows the per-image rate, not the total. num_outputs at 6 multiplies it, silently. Set Settings → PopNow → Max credits per run and the quote check will hold the line for you.
Codes: 40201 = empty balance, 400 = it names the field the model refused, 40004 = that combination isn't servable, 40310 = verify your email. Content refusals and failed generations are refunded. If an error ends in request_id, that string is your support ticket.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Describe the subject, composition, lighting, and any wording to render. There is no negative prompt: write what to leave out directly in the prompt. | |
| aspect_ratio | COMBO | 1:1 | Output aspect ratio. |
| resolution | COMBO | 2k | Output resolution tier. Every tier costs the same. |
| num_outputs | INT | 11–6 | How many images to generate in one request (1 to 6). Billed per image returned. |
| enable_prompt_expansion | BOOLEAN | false | Let the service rewrite and expand the prompt before generating. |
| enable_thinking | BOOLEAN | true | Spend extra reasoning on the rewrite for better images, at the cost of a longer wait. Only works while prompt expansion is on. |
| prompt_optimization_mode | COMBO | direct | How prompt expansion rewrites the brief: direct is a single pass that suits most prompts; agent is a multi-step rewrite with finer detail. |
| 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 PopNow task id, for the API console logs or support. |