Nodes/KIE.ai Nodes Next/FLUX 3 Klein Edit Image
ComfyUI Node

FLUX 3 Klein Edit Image

Ten references, one instruction, no checkpoint to download

By felipederosilva·Created 2 months ago·Updated 3 days ago· 3
FLUX 3 Klein Edit Image
  • image_urls
  • image
  • url
  • all_urls_json
  • task_id
  • raw_json
  • credits_consumed
  • credits_left
◄promptChange the backpack to dark green and keep everything else unchanged►
◄aspect_ratioauto►
◄resolution1K►
◄output_formatpng►
◄num_images1►
◄enhance_prompttrue►
◄width0►
◄height0►
◄seed0►
◄nsfw_checkerfalse►
◄timeout_seconds1200►
◄callback_url►

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_prompt defaults to true, 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_ratio defaults to auto, which matches the first input image. Leave it alone unless you deliberately want a re-frame.
  • resolution is 1K/2K/4K, and width/height (256–4096, both together, ratio between 1:2.5 and 2.5:1) override both aspect_ratio and resolution when set. Two ways to specify the same thing - pick one.
  • num_images goes 1–4, seed is there for repeatability, nsfw_checker defaults off.
  • output_format is 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.

CategoryKIE Next/Image/Flux-3

Inputs (13)

NameTypeDefaultDescription
promptSTRINGChange the backpack to dark green and keep everything else unchangedAn instruction describing how to edit the image (Max length: 5000 characters)
image_urlsIMAGEInput 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_ratiooptCOMBOautoAspect 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
resolutionoptCOMBO1KResolution of the generated image Options: 1K; 2K; 4K
output_formatoptCOMBOpngFormat of the output image Options: png; jpeg; webp
num_imagesoptINT11–4Number of images to generate
enhance_promptoptBOOLEANtrueRewrites 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.
widthoptINT0256–4096Width 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.
heightoptINT0256–4096Height 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.
seedoptINT00–2147483647Random seed
nsfw_checkeroptBOOLEANfalseDefaults to false. When false, no additional content filtering is applied and results are returned directly by the model.
timeout_secondsoptINT120030–7200—
callback_urloptSTRINGOptional KIE callback URL. Leave empty for normal ComfyUI use.

Outputs (7)

NameTypeDescription
imageIMAGE—
urlSTRING—
all_urls_jsonSTRING—
task_idSTRING—
raw_jsonSTRING—
credits_consumedFLOAT—
credits_leftFLOAT—