StabilityAI Suite - Outpainting
Expand the canvas in any direction with one node — the cloud outpaint shortcut
- image
- IMAGE
Outpainting is the "what's outside the frame" problem. You have a 1:1 image and you want a 16:9 version with the scene continued, or you want sky above a horizon, or room around a subject. Locally that means tiling, inpaint conditioning, and seam-matching - doable, but fiddly. This node hands the whole job to Stability's API: you say how many pixels to add on each side, it hallucinates the extension and blends it in.
How it works
A POST of the image plus four integers to stable-image/edit/outpaint. Each side takes 0–512 pixels per call. The response is a completed, larger image - no polling, no job ID. The model generates what's missing and mostly matches the original's lighting and texture where new content meets old edge.
Inputs that matter
image- your starting frame.left/right/up/down- pixels to add per side, 0–512 each. This is where you actually spend time: the 512 cap is a hard limit per call.prompt- optional, but if you leave it empty the extension is whatever the model decides. Describing it ("cobblestone street continuing to the right") gives you far more control.
seed and output_format (png/webp/jpeg) round out the rest. Output is a single IMAGE.
Install
ComfyUI Manager, search "ComfyUI StabilityAI Suite", or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/florestefano1975/ComfyUI-StabilityAI-Suite
Restart, set your key (SAI_API_KEY, sai_platform_key.txt, or the node's api_key_override). No models, no extra pip dependencies - the whole pack is a thin API wrapper.
Gotchas
- The 512px cap is real. To extend an image by a lot, run the node more than once, adding a few hundred pixels per pass and feeding the result back in. Each pass is a fresh paid call, and each pass can introduce a little drift at the seam - so going wide means checking your work between passes.
- Cost. Same story as the rest of the suite: this is a paid API, not a local model.
- Expect the biggest seams when the extension adds lots of new structure (perspective, furniture) rather than simple sky or floor, which the model blends almost invisibly.
If you outpaint constantly, a local FLUX.1 Fill / crop-and-stitch loop is the budget move. If you outpaint rarely and don't want a local inpainting stack eating VRAM and disk, this node is the pragmatic middle ground.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| left | INT | 00–512 | — |
| right | INT | 00–512 | — |
| up | INT | 00–512 | — |
| down | INT | 00–512 | — |
| promptopt | STRING | — | |
| seedopt | INT | 00–4294967294 | — |
| output_formatopt | COMBO | 3 options: png, webp, jpeg | |
| api_key_overrideopt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |