Flux Pro 1.0 Extend [Outpaint]
Flux Pro 1.0 Extend — outpainting with four sliders and a prompt
- image
- IMAGE
- STRING
Outpainting is where local models earn their keep the hard way: you stretch the canvas, regenerate the empty region, composite the seams, and still spend an hour coaxing the new edge to blend. FluxProOutpaint just... extends. You feed it an image, tell it how much to grow on each side as a percentage, give it a sentence about what should live in the new space, and it comes back with one continuous, fully-rendered picture. No seams, no manual compositing, no 12GB model on your disk - it's all happening on Black Forest Labs' servers through the flux-pro-1.0-expand API endpoint.
It's the outpainting sibling in this pack's trio (the other two being FluxGenerate for text-to-image and FluxProInpaint for filling masked areas), and it covers the case the other two can't: making a landscape shot wider, extending a portrait upward for a vertical crop, or turning a square render into a cinematic 21:9 without re-generating the whole thing.
How it works
The node base64-encodes your image, sends it with your side-expansion percentages and prompt to /v1/flux-pro-1.0-expand, then polls /v1/get_result with exponential backoff until the job is ready - expect your queue to visibly block for 30 seconds to a couple of minutes. The server handles the regeneration and the blending, then the node decodes the response and hands it back as a normal ComfyUI IMAGE tensor. The steps and guidance values you set are passed through to the API; nothing is sampled on your machine.
The inputs that matter
- image - the ComfyUI image to extend.
- top / bottom / left / right - the four inputs that do the work. Each is a percentage from 0 to 100 of the image's dimension on that side. The node converts them to pixels and clamps each expansion at 2048. Practical gotcha: they all default to 0, so if you queue with everything at zero you'll get back essentially the same image. Set at least one side.
- prompt - "The description for outpainting, guiding what to add on the image," per the author's tooltip. Worth being specific - "a mountain range continuing to the right" beats "extend the image." Flux's prompt adherence carries to the API, and it's the main lever you have over what the model invents past the edge.
- steps - 15 to 50, default 50. Every step is billable, so don't touch it without a reason.
- guidance - 1.5 to 100, default 60. Remember this is BFL's API guidance scale, not the ~3.5 you'd use with local Flux Dev. Leave it at the default.
- safety_tolerance - 0 (strictest) to 6 (no moderation), default 6. Moderation is still enforced on BFL's side regardless.
- seed - set for reproducible extends; -1 (default) for random.
- prompt_upsampling - when on, BFL expands your prompt for more creative output. Can help if you're stuck on what to say, less useful if you've described the extension precisely.
Outputs
IMAGE - the finished, extended canvas, ready for SaveImage or the next node in the chain. The second output is a STRING that's just a random per-session version id the author stamps on every result; it carries no information, so ignore it.
Install
Nothing heavier than usual here - the pack has no requirements.txt and downloads no models, because the model never touches your machine. requests and Pillow are already bundled with ComfyUI.
cd ComfyUI/custom_nodes
git clone https://github.com/Altair200333/ComfyUI_Flux_1.1_PRO
Then create config.ini in the extension folder (a fresh clone won't have one - it's gitignored), with your API key:
[API]
API_KEY=your_api_key_here
BASE_URL=https://api.us1.bfl.ai
Restart ComfyUI and the three nodes show up under BFL. ComfyUI Manager works too - search "Flux Pro Nodes for ComfyUI".
Gotchas
Missing config.ini = FileNotFoundError at queue time; make the file first. A "hang" is usually just the polling loop - give it up to a couple of minutes before suspecting a dead job. And two realistic quality limits: push an expansion percentage very high and the invented content far from the original edges tends to drift toward mush (the 2048px-per-side clamp is the pack's own guardrail), and the results are only as grounded as the API's current moderation. The real cost consideration, as with the rest of the pack: it's a paid API, and every extend is a billable image. For the one wide establishing shot you actually need, it's a fantastic bargain versus an afternoon of local seam-painting; for iterating over every possible crop, keep a local outpaint workflow around.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | A Base64-encoded string representing the image you wish to modify. Can contain alpha mask if desired. | |
| prompt | STRING | The description for outpainting, guiding what to add on the image. | |
| top | INT | 00–100 | Percentage to expand at the top. |
| bottom | INT | 00–100 | Percentage to expand at the bottom. |
| left | INT | 00–100 | Percentage to expand on the left side. |
| right | INT | 00–100 | Percentage to expand on the right side. |
| steps | INT | 5015–50 | Number of steps for the image generation process. (min: 15, max: 50, default: 50) |
| guidance | FLOAT | 60.001.5–100 | Guidance strength for the image generation process. (min: 1.5, max: 100.0, default: 60) |
| safety_tolerance | INT | 60–6 | Tolerance level for input and output moderation. Between 0 (most strict) and 6 (no moderation) (default: 6) |
| output_format | COMBO | png | Output format for the generated image. Can be 'jpeg' or 'png' (default: jpeg) |
| seedopt | INT | -1 | Optional seed for reproducibility. |
| prompt_upsamplingopt | BOOLEAN | false | Whether to perform upsampling on the prompt. If active, automatically modifies the prompt for more creative generation. (default: false) |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |
| STRING | STRING | — |