Build with Painter.
Brush over an image and emit the painted composite plus a white-on-black mask.
Best for
Brush over an image and emit the painted composite plus a white-on-black mask. Use the playground to set up a single step, then open a workflow when you want to connect more tools.
Inputs explained
- Image (required)
- Set the image used by this model. Type: image.
Tips before you run
Start with the default settings and change one input at a time. Keep the result you like on your board so the next step can use it.
If you add a reference file, use a link the workflow can read. Check the inputs and credit estimate on the board before starting a run.
Working with this model
What it is for
Plenty of models in Wireflow take a mask_url (inpaint, regional edit,
object removal). Until this node there was no way to author one on the canvas,
so those inputs went unused. Painter fills that gap: wire an image in, brush
over the part you care about, and it emits two things.
| Output | What it is |
|---|---|
| Painted Image | Your source image with the strokes flattened onto it |
| Mask | The strokes alone, white on a black background, PNG |
White on black means white is the region to act on and black is the region to leave alone.
Not for the GPT Image edit nodes. GPT Image 2 Edit, GPT Image 2.5 Flare Edit and GPT Image 2.5 Sunburst Edit read a different kind of mask: a PNG that is transparent where edits are allowed. Tested on Sunburst Edit, this mask came out backwards: the painted region came back black and the edit landed on the part nobody painted. For those nodes, make a mask with transparency in another tool and bring it in with an Import node.
How to use it
- Wire any image into the Image port (a generation, an Import node, a Crop).
- Click Paint. The editor opens over the canvas.
- Brush, erase, undo (Cmd+Z), clear. Pick a size and a colour. Colour only affects the painted composite, never the mask, which is always white.
- Save. Both images are baked at the source image's full resolution and uploaded, and both ports go live.
Escape closes the editor without saving.
Repaint needed
The node stamps its outputs with the identity of the strokes and the upstream image they were baked from. If either changes afterwards, the card shows Repaint needed.
It keeps serving the previous outputs while that badge is up, on purpose. Clearing them would quietly fall back to the unpainted upstream image, and a paid node downstream would then edit the wrong thing while looking perfectly healthy. Open the editor and save again to clear the badge.
What it costs
Nothing. The whole bake happens in your browser and the two images go straight to storage. It is a free node, so it has no Run button.
It does not re-bake itself during a workflow run, though. A run echoes the image and mask you last saved from the editor. The bake only ever happens in the editor, on your machine. So if the card is showing Repaint needed, running the workflow will not clear it; open the editor and save. Until you do, the run hands downstream the previous outputs (or, if you have never saved any, the upstream image untouched).
Limits worth knowing
The strokes are stored with the node, so reopening the editor gives them back exactly where you left them, at any zoom. Strokes are anchored to the source image's pixels, which means a source image that changes SIZE will put old strokes in the wrong place. That is one of the cases "Repaint needed" is warning you about.
Common questions
How do I use Painter on Wireflow?
Set the inputs above and choose Open in a workflow. Sign in to save your board, then check its credit estimate before you run.
Can I use Painter through an API?
Yes. Save a workflow with this model, then call the Wireflow run API with its workflow ID. The API tab has examples you can copy.
What changes the credit price?
The price shown uses the model defaults. Your inputs and model settings can change the total. The workflow shows an estimate before you run.
Can I connect this to another model?
Yes. Open it in a workflow and connect its output to another node with a matching input type.