arkennemasis fal · Flux 2 Pro Outpaint · ~$0.05/run
Flux 2 Pro Outpaint has no prompt box, and that's the whole point
- image
- images
- image_paths
- info
Outpainting is the boring superpower of image editing. Nobody posts about it. Everybody needs it: your client sent a 4:3 photo and the website wants 16:9, or the crop cut the top of someone's head off, or you want a wider establishing shot out of a picture that only exists in one aspect ratio.
This node does that with FLUX.2 [pro], on fal's servers, for roughly five cents a run. The first thing to understand is that there is no prompt field. You don't describe the extension. The model reads the pixels you already have and continues them. If you were expecting to type "add sky and a road", this isn't that node.
Why you'd reach for the hosted version
Flux 2 is BFL's 56B flagship, and locally it's the model that lost the launch and won the year - the quality ceiling for editing that almost nobody can actually run. The fp8 pair is around 53GB of weights before you've loaded anything else, which is the entire reason hosted endpoints for it exist.
So the honest framing: flux-2-pro outpaint is the door for people who don't have a 48GB card, and the door for people who do but don't want to babysit a 53GB load to extend one photo. What you give up is the local, unmetered loop. What you get is a five-cent call and no VRAM.
The four numbers that matter
Everything on this node is about geometry:
image- the picture you're extending. Required.expand_top/expand_bottom/expand_left/expand_right- pixels added on each side, 0 to 2048 each. This is the actual work. Expand left and right by 400 on a 1024-wide photo and you get a 1824-wide canvas with your original sitting in the middle.auto_crop- if the expanded canvas doesn't fully contain the reference image, this crops it to fit instead of failing.mode-high(default) orfast. Same tradeoff the name implies:highis the fidelity pass,fastextends most scenes fine but you'll notice the seam on textured backgrounds.
Then the two switches you should actually look at: output_format defaults to jpeg, which is fine for delivery and mildly annoying if you plan to keep editing the result. And enable_safety_checker defaults on - turning it off requires account-level authorization from fal, and unauthorized requests get checked anyway.
What comes back
images- the extended image as a ComfyUI IMAGE, ready for an upscaler or a save node.image_paths- the file path(s) it wrote tooutput/fal/fal-ai_flux-2-pro_outpaint/.info- JSON with the request id, the cost estimate, the saved files, and fal's full answer.
That info output is more useful than it sounds: it's your receipt, and it's what you paste into fal's dashboard if a run looks wrong.
Money, because this is a metered node
Pricing is $0.03 for the first megapixel of output plus $0.015 per extra megapixel of input and output, rounded up to the nearest megapixel. A single 1024×1024 stays at $0.03. Expand all four sides generously and you're at $0.045–$0.05 for a run - and both numbers are rounded up, so a 512×512 outpaint still costs $0.03.
Two safeguards ship on every fal node here, and both default sensibly:
max_cost_usd(default $20) is a hard stop. If the estimate is above it, the node refuses before anything is uploaded.0disables the cap.reuse_identical_run(default on) means re-queuing the same graph with the same settings and the same picture returns the file it already paid for instead of paying again - even after a ComfyUI restart. On an outpaint node that's pure upside: geometry is deterministic, so a re-run was never going to give you a different picture.
Install
Same as every node in the pack - one clone, then restart ComfyUI:
cd ComfyUI/custom_nodes
git clone https://github.com/Hishamahmer/comfyui-arkennemasis
Or in ComfyUI-Manager → Install via Git URL → paste the repo URL. Dependencies are minimal by design: requirements.txt installs httpx, which the Codex nodes need. The fal provider itself talks to fal with Python's standard library, so there's no torch version roulette and no model download. None of these fal nodes ever touch your GPU.
The key goes in a .env file, not on the node:
FAL_KEY=your-key-from-fal.ai/dashboard/keys
In the Windows portable build that's the folder holding run_nvidia_gpu.bat. There is deliberately no key field on the node - a key typed into a widget gets saved verbatim into every workflow file you share.
Where it bites
The most common surprise is cost, not failure: expanding a small picture still rounds up to a full megapixel, so "it's only 400 pixels wider" doesn't make it cheaper. Watch the price badge on the node - it follows your settings live.
Second: mode on fast with a big expansion on a detailed background can leave a visible change in grain or sharpness where the original ends. If the seam shows up, the fix is high, not a re-roll.
Third, and this catches people who connect a batch: the image socket takes one picture. Connect a batch and the node stops with a message telling you to pick a frame first.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | The image URL to expand using outpainting. | |
| expand_top | INT | 00–2048 | Pixels to expand at the top of the image. |
| expand_bottom | INT | 00–2048 | Pixels to expand at the bottom of the image. |
| expand_left | INT | 00–2048 | Pixels to expand on the left of the image. |
| expand_right | INT | 00–2048 | Pixels to expand on the right of the image. |
| auto_crop | BOOLEAN | false | Whether to automatically crop the reference image when the expanded canvas does not fully contain it. |
| mode | COMBO | high | Quality/speed trade-off for outpainting. `high` (default) delivers the highest-fidelity results; `fast` is significantly faster and extends most scenes well but may produce lower fidelity. |
| enable_safety_checker | BOOLEAN | true | Whether to enable the safety checker. Disabling it requires account authorization; unauthorized requests are always checked. |
| output_format | COMBO | jpeg | The format of the generated image. |
| max_cost_usdopt | FLOAT | 20.00–100000 | Safety cap. If the estimated cost of this run is above this many US dollars the node stops BEFORE sending anything to fal. 0 = no cap. |
| reuse_identical_runopt | BOOLEAN | true | If these exact inputs (the settings AND the same pictures/clips/audio) were already paid for and the files are still in output/fal, return them instead of paying again - also after a ComfyUI restart. Turn off for a fresh take with the same settings. |
| extra_jsonopt | STRING | Advanced: a JSON object merged into the request last, for any fal field this node has no box for. Example: {"seed": 7}. Leave empty normally. | |
| max_concurrentopt | INT | 11–32 | How many paid fal calls may run at the same time in one run, across every fal node. 1 (default) = one after another. This node starts its paid part only while fewer than this many fal calls are running. Once any fal node fails, the ones still waiting are not started, so nothing more is billed. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| image_paths | STRING | — |
| info | STRING | JSON: request id, cost estimate, saved files and fal's full answer. |