FLUX 3 Klein Edit Image
Ten references, one instruction, no checkpoint to download
- image_urls
- image
- url
- all_urls_json
- task_id
- raw_json
- credits_consumed
- credits_left
If you went looking for a FLUX 3 Klein checkpoint to drop into models/checkpoints, this is the bad news: there isn't one. When BFL announced FLUX 3 in July 2026 they described image synthesis and editing as available "through APIs and private weight access", with open weights only for a later "FLUX 3 Dev" backbone - and r/StableDiffusion duly asked "will there be Flux 3 Klein?" and got a shrug. So if you want the small, fast FLUX 3 tier on an instruction-edit job, an API node is the door. This one.
What it is
KIE_Next_flux_3_klein_edit_image_dcc3b923 is the edit half of the pack's FLUX 3 Klein pair. Give it one instruction and up to ten images, and it returns the edited frame as a normal IMAGE you can keep working with locally.
Worth saying plainly: this is the small/fast rung of the FLUX 3 family, not the flagship. Klein's reputation in the FLUX.2 era was "the one that fits on consumer hardware and still understands instructions" - good at targeted edits, occasionally creative about anatomy. Set your expectations at "fast good editor", not "the best image model in existence".
How it works
The pack generates one node per KIE Market operation and version from KIE's docs, then wraps the transport: assemble the request, upload any connected media, create the task, poll until timeout_seconds hits (1200 by default), download the first result URL into a tensor. You get a credits-spent receipt on the node face, and sockets for the URL, the full URL list, the task ID and the raw provider response.
Because it uploads your images for you and sends KIE the URLs, your reference frames leave the machine. That's the whole mechanism, not a caveat - same trade you make with every closed model you reach through an API node: per-call cost, and your inputs leave the machine.
The inputs that matter
prompt and image_urls are both required. image_urls is a real IMAGE socket, so a batch from a Load Image or any local node works - up to ten images, 30MB each, jpeg/png/webp. For a character-consistency chain you'd feed the approved reference plus the frame you want changed; for a "match this lighting" job, feed the two plates and say so in the prompt.
The instruction itself is the thing to write carefully. "Change the backpack to dark green and keep everything else unchanged" is the pack's own default prompt and it's a good template - state the edit, then state the constraint. The field takes up to 5000 characters, which is more rope than you need.
Then the knobs:
enhance_promptdefaults totrue, i.e. your instruction gets rewritten into a fuller description before generation. The tooltip says the rewrite preserves intent during edits, and it probably does - but if an edit keeps dragging in changes you never asked for, this is the first switch to flip. One boolean, one A/B.aspect_ratiodefaults toauto, which matches the first input image. Leave it alone unless you deliberately want a re-frame.resolutionis1K/2K/4K, andwidth/height(256–4096, both together, ratio between 1:2.5 and 2.5:1) override bothaspect_ratioandresolutionwhen set. Two ways to specify the same thing - pick one.num_imagesgoes 1–4,seedis there for repeatability,nsfw_checkerdefaults off.output_formatis png/jpeg/webp. PNG if you're feeding the result into another local pass.
Wiring the outputs
image → Save Image, or into a local upscaler, or back into another edit pass. task_id is worth saving: KIE • Reuse Completed Image/Video/Audio can retrieve a finished task without paying twice. all_urls_json is the answer when num_images was greater than one - only the first preferred URL becomes the IMAGE socket, so the other three live in that JSON (or in the node's raw response). If you want them as files, KIE • Download Image exists in the utility menu.
Installing it
Manager → search "KIE.ai Nodes Next", or:
comfy node install kie-ai-nodes-next
Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/felipederosilva/ComfyUI-KIE-Nodes-Next
pip install -r requirements.txt
Restart, then Settings → KIE.ai Nodes Next → Connection and paste your key. It's validated before it replaces a working one, shown masked afterwards, and kept out of the workflow JSON. Env vars are not supported.
No weights, no VRAM, no downloads beyond requests, Pillow, numpy and PyYAML.
Where people get burned
The node won't run at all unless something downstream consumes its output - it isn't an output node, so connect a save/preview before you queue and wonder why nothing happened.
Local preflight catches the documented limits (image count, sizes, ratio) before upload, so a rejection at the node usually means the provider didn't like the content or the prompt rather than your wiring. Right-click → KIE Next · Check inputs & model controls shows what the pack thinks the limits are, without spending anything.
And the classic edit-model complaint applies: it re-emits the whole frame, so untouched regions come back close-but-not-identical. Chain three edits and the drift compounds. For surgical changes, edit once and stitch locally with a mask rather than iterating through the API.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Change the backpack to dark green and keep everything else unchanged | An instruction describing how to edit the image (Max length: 5000 characters) |
| image_urls | IMAGE | Input images to transform or use as reference (supports up to 10 images) (File URL after upload, not file content; Accepted types: image/jpeg, image/png, image/webp; Max size: 30.0MB) | |
| aspect_ratioopt | COMBO | auto | Aspect ratio of the generated image. Select auto to match the first input image ratio. Options: 1:1; 4:3; 3:4; 3:2; 2:3; 16:9; 9:16; 21:9; 9:21; auto |
| resolutionopt | COMBO | 1K | Resolution of the generated image Options: 1K; 2K; 4K |
| output_formatopt | COMBO | png | Format of the output image Options: png; jpeg; webp |
| num_imagesopt | INT | 11–4 | Number of images to generate |
| enhance_promptopt | BOOLEAN | true | Rewrites the prompt into a fuller description before generating, which noticeably improves quality. Enabled by default (also when the parameter is omitted); pass false to turn it off. Applies to both text-to-image and image editing; in editing, the rewrite preserves the intent of the original instruction. |
| widthopt | INT | 0256–4096 | Width of the generated image. Both width and height must be passed at the same time. Must be an integer between 256 and 4096. The aspect ratio (width:height) must be between 1:2.5 and 2.5:1. Once passed, aspect_ratio and resolution are ignored. |
| heightopt | INT | 0256–4096 | Height of the generated image. Both width and height must be passed at the same time. Must be an integer between 256 and 4096. The aspect ratio (width:height) must be between 1:2.5 and 2.5:1. Once passed, aspect_ratio and resolution are ignored. |
| seedopt | INT | 00–2147483647 | 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 | — |