FLUX.1 Fill [pro]
Inpainting without the VAE churn
- seedImage
- maskImage
- advancedFeatures.watermark.image
- image
FLUX.1 Fill is Black Forest Labs' official inpainting and outpainting model - the one that actually understands "fill the masked area" instead of just blurring the edges. This node runs the [pro] variant on Runware's cloud, so you get the full paid version without a BFL API account or the 30GB of Flux Tool weights on your drive.
If you've done local Flux inpainting, you know the ritual: VAE-encode the masked image, run the sampler, VAE-decode, and wince every time someone reminds you that each encode/decode pass is lossy and you're meant to composite the result back instead of re-encoding. This node sidesteps that whole ritual - the cloud handles the pipeline and hands you a finished IMAGE. The output is exactly what you'd paste over the source.
The inputs that matter
seedImage(required,IMAGE): the picture being repaired.maskImage(required,IMAGE): the region to regenerate, as a white-on-black mask. Paint it tight - the model works best when the mask covers the thing you're replacing and nothing else.positivePrompt(required,STRING, multiline): what goes in the hole. For outpainting, describe what the extended area should be; for object replacement, name the new object.CFGScale(default60, range 1.5–100): the FLUX-era guidance knob, and here it reads differently than SD. The BFL API exposes this at a much higher scale than the 3.5 you might be used to from local Flux workflows - trust the default before you yank it.steps(default50, min 15): fine at the default; higher is rarely needed for Fill work.providerSettings.bfl.promptUpsampling: BFL's prompt expansion. Useful when your prompt is thin; turn it off when you want it to do exactly what you wrote.providerSettings.bfl.safetyTolerance(0–5, default 2): content moderation strictness. Lower is stricter, higher more permissive - the one knob people adjust when a legitimate prompt gets bounced.
Output is a native image (IMAGE). The watermark socket takes a Runware watermark builder if you need one stamped on.
How it works
Your source image and mask are encoded as PNG data URIs and sent with the prompt to Runware; FLUX.1 Fill [pro] runs on their GPUs; the repaired result is downloaded back as an IMAGE. The safety group (safety.checkContent), ttl, outputFormat (JPG/PNG/WEBP) and outputQuality widgets are the standard pack block. Cost per run lands on the title bar - and unlike local inpainting, you pay per fill, not per pixel of VRAM.
Install and gotchas
Pack-wide: ComfyUI Manager → search Runware, or git clone https://github.com/Runware/ComfyUI-Runware into custom_nodes + pip install -r requirements.txt, restart, add a Runware API key (Settings → Runware API key, RUNWARE_API_KEY, or runware auth login).
The classic mistakes: a mask that's too loose (the model fills context it shouldn't), a prompt that describes the whole image instead of just the hole, and CFGScale cranked to 100 because bigger must be better. Keep the mask honest, keep the prompt scoped to the masked region, and remember - [pro] is the paid tier, so a numberResults of 20 is a bill, not a bonus. For clean, composable inpainting with zero local pipeline, this is the easiest path there is.
Inputs (23)
| Name | Type | Default | Description |
|---|---|---|---|
| seedImage | IMAGE | — | |
| maskImage | IMAGE | — | |
| positivePrompt | STRING | Text prompt describing elements to include in the generated output. | |
| advancedFeatures.watermark.imageopt | IMAGE | — | |
| seedopt | INT | 00–9223372036854776000 | Random seed for reproducible generation. When not provided, a random seed is generated in the unsigned 32-bit range. |
| stepsopt | INT | 5015–50 | Total number of denoising steps. Higher values generally produce more detailed results but take longer. |
| CFGScaleopt | FLOAT | 60.001.5–100 | Guidance scale representing how closely the output will resemble the prompt. Higher values produce results more aligned with the prompt. |
| numberResultsopt | INT | 11–20 | Number of results to generate. Each result uses a different seed, producing variations of the same parameters. |
| advancedFeaturesopt | BOOLEAN | false | Enable to set advancedFeatures. Off uses the model's default. |
| advancedFeatures.watermark.bgColoropt | STRING | Background color in hex format. | |
| advancedFeatures.watermark.displayPositionopt | COMBO | (default) | Watermark position. |
| advancedFeatures.watermark.fontColoropt | STRING | Text color in hex format. | |
| advancedFeatures.watermark.opacityopt | BOOLEAN | false | Enable to set advancedFeatures.watermark.opacity. Off uses the model's default. |
| advancedFeatures.watermark.opacity_valueopt | FLOAT | 0.100.1–1 | Watermark opacity. |
| advancedFeatures.watermark.textopt | STRING | Watermark text. | |
| providerSettings.bfl.promptUpsamplingopt | BOOLEAN | false | Enable automatic enhancement and expansion of the input prompt. |
| safetyopt | BOOLEAN | false | Enable to set safety. Off uses the model's default. |
| safety.checkContentopt | BOOLEAN | false | Enable or disable content safety checking. |
| providerSettings.bfl.safetyToleranceopt | INT | 20–5 | Tolerance level for content moderation. Lower values are stricter; higher values are more permissive. |
| ttlopt | BOOLEAN | false | Enable to set ttl. Off uses the model's default. |
| ttl_valueopt | INT | 60 | Time-to-live (TTL) in seconds for generated content. Only applies when `outputType` is `URL`. |
| outputFormatopt | COMBO | JPG | File format for the generated image. |
| outputQualityopt | INT | 9520–99 | Compression quality of the output. Higher values preserve quality but increase file size. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |