Wan 2.7 Image
A video model doing your stills, bounding boxes included
- input_urls
- image
- url
- all_urls_json
- task_id
- raw_json
- credits_consumed
- credits_left
The Wan family was always secretly good at stills - people have been running single frames out of Wan 2.1 and 2.2 for image generation since 2025, and the community's summary was that video training gives the model a better feel for 3D space than a photo model has. Wan 2.7 Image is the same idea as a dedicated, closed-weight endpoint: text-to-image, plus editing when you give it an image.
Two things make it more than a novelty in ComfyUI. It generates up to four images per call (twelve in sequential mode), and it takes a bounding-box list so you can point at the part you want changed instead of describing it and hoping.
How it works
prompt is the only required field. input_urls is an optional IMAGE socket - feed it images and the node becomes an editor, leave it empty and it's text-to-image. The node uploads anything you connect, POSTs to KIE's marketplace /api/v1/jobs/createTask with model wan/2-7-image, polls /api/v1/jobs/recordInfo until the job resolves, then downloads the result image(s), archives them under ComfyUI/output/KIE-Results/images, and returns a ComfyUI IMAGE tensor.
Inputs that matter
prompt- up to 5000 characters.input_urls- the source image(s) for editing. Leave it empty for pure text-to-image.n- how many images. Default 4; the range is 1-4 normally and 1-12 whenenable_sequentialis on. Note the default: run once and you pay for four. Set it to 1 while testing.resolution-2K(default),1K,4K. The cost gradient is steep and non-linear.aspect_ratio-1:1,16:9,4:3,21:9,3:4,9:16,8:1,1:8. Only used when there's no image input.bbox_list- JSON, one inner list per input image, max two boxes each, each box[x1, y1, x2, y2]. This is how you say "change this region" precisely.enable_sequential- off by default; on, it does sequential/group image sets.thinking_mode- off. Only meaningful whenenable_sequentialis off andinput_urlsis empty; the schema says the frontend disables it otherwise.color_palette- JSON, 3-10 colours (8 recommended), only when sequential mode is off. A quiet way to force a consistent look across a set.watermark(off),seed, plusnsfw_checker,timeout_seconds,callback_url- the pack's standard trio.
Outputs
image is the deliverable - a normal IMAGE tensor, so SaveImage, PreviewImage, an upscaler, or a batch-splitter all work as usual. (Multiple results come back as a batch, which is what all_urls_json is for when you need to see what was actually returned.) Beside it: url, task_id, raw_json, and credits_consumed / credits_left, with the on-node receipt after each run.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/felipederosilva/ComfyUI-KIE-Nodes-Next
cd ComfyUI-KIE-Nodes-Next && pip install -r requirements.txt
Restart ComfyUI and look under KIE Next / Image / Wan. The pack ships no weights - requests, Pillow, numpy and PyYAML is it, since the model is entirely server-side.
Key, once: Settings → KIE.ai Nodes Next → Connection → Paste / replace KIE.ai API key; it validates first, then shows ✅ CONNECTED and a masked fingerprint. KIE_API_KEY for headless installs, and it takes priority. KIE is a pre-paid credit marketplace with no subscription.
Common issues
Four images when you wanted one. n defaults to 4. Set it explicitly.
The edit ignored your bounding box. bbox_list is JSON, and the outer list has to line up with input_urls - one entry per image, [x1,y1,x2,y2] per box, two boxes max. Malformed JSON is the usual culprit (the node will tell you it isn't valid JSON).
aspect_ratio does nothing. It only applies with no image input; an image sets the ratio.
4K takes a long time and costs a lot. Draft at 1K or 2K and only finish the winner at 4K.
thinking_mode seems ignored. By design - it only applies to plain text-to-image with sequential mode off.
Nothing saved to disk. It's an IMAGE output; wire it to a save node.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Transform the food photo by replacing the marked ingredients with sliced red chili pieces while preserving the bowl, lighting, steam, camera angle, and overall realism. | Prompt for image generation or editing. This field supports both Chinese and English, with a maximum length of 5000 characters. |
| input_urlsopt | IMAGE | (Optional) Array of input image URLs. | |
| aspect_ratioopt | COMBO | 1:1 | (Optional) Output aspect ratio when no image input is provided. |
| enable_sequentialopt | BOOLEAN | false | Whether to enable sequential/group image mode. Default is false. |
| nopt | INT | 4-2147483648–2147483647 | Number of images to generate. Range is 1-4 when `enable_sequential=false` (default: 4); range is 1-12 when `enable_sequential=true` (default: 12). |
| resolutionopt | COMBO | 2K | Output resolution: 1K or 2K (default 2K). For 4K, use wan/2-7-image-pro. |
| thinking_modeopt | BOOLEAN | false | Whether to enable thinking mode. Only available when `enable_sequential=false` and `input_urls` is empty; it is disabled in other cases. |
| color_paletteopt | STRING | [] | (Optional) Custom color theme. Only available when `enable_sequential=false`. Requires 3-10 colors, 8 recommended. |
| bbox_listopt | STRING | [ [] ] | (Optional) Interactive editing bounding box areas. The outer list length should match `input_urls`; maximum 2 boxes per image; single box format is `[x1, y1, x2, y2]`. |
| watermarkopt | BOOLEAN | false | Whether to add watermark. |
| seedopt | INT | 00–2147483647 | Optional. Omit for a random seed. |
| nsfw_checkeropt | BOOLEAN | false | Defaults to false. When false, no additional content filtering is applied and results are returned directly by the model. |
| timeout_secondsopt | INT | 120030–7200 | — |
| callback_urlopt | STRING | Optional KIE callback URL. Leave empty for normal ComfyUI use. |
Outputs (7)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| url | STRING | — |
| all_urls_json | STRING | — |
| task_id | STRING | — |
| raw_json | STRING | — |
| credits_consumed | FLOAT | — |
| credits_left | FLOAT | — |