FIBO - Edit
Edit an image from a sentence, no mask needed — FIBO - Edit, and why it beats local inpainting for most jobs
- images
- mask
- IMAGE
- structured_instruction
- seed
The mask is dying for most edit jobs, and this node is the argument for why. FIBO - Edit takes an image and a plain-English instruction - "turn the sky to sunset", "swap the red car for a blue van" - and returns the edited image. No mask painting, no inpainting workflow, no seam repair. If you've read the KB's inpainting essay, you know the drill: since mid-2025 instruction-editing models took over "change X in this image" from mask-based inpainting, and the people still masking do it for one specific reason - they need the unmasked pixels to stay bit-identical. FIBO Edit is BRIA's hosted entry in that instruction-editing race, running the FIBO model on their servers.
The trade-off is the same one the KB calls out for Qwen/Kontext/Klein: an edit model takes the whole image into context and emits a whole new image, so regions you didn't ask to touch come back close-but-not-identical, and drift compounds across a chain of edits. If you're doing one dramatic, sentence-driven change, that's a great trade. If you're compositing and need absolute pixel fidelity outside the edit area, you still want masks - and this node actually accepts an optional mask too.
How it works
The image is base64-encoded and POSTed to BRIA's /v2/image/edit endpoint with your instruction. FIBO is the 8B-parameter generation model BRIA trained on structured JSON captions - released to genuine goodwill from the community, which called it "the least slopped new image model of 2025" with strong prompt adherence and real art styles (hands remain its weak spot). The node polls the status_url until done, downloads the result, and returns it.
The inputs that matter
imagesandapi_token- required. TheBRIA_API_TOKENplaceholder gets rejected, so paste your real key first.instruction- the sentence. Write it like an instruction to a very literal art director: be specific about what changes, not vague.mask- optional, and the escape hatch. Give it a mask and only that region gets the instruction, keeping the rest of the frame closer to the original.structured_instruction- optional pre-made JSON, exactly what the FIBO - Edit - Structured Instruction node outputs. This is the auditable path: translate once, inspect, reuse.negative_prompt,steps_num(default 30, 1–100),guidance_scale(default 5, 1–20),seed(default 123456) - the standard dials.
Outputs are the edited IMAGE, the structured_instruction string FIBO actually used (great for replaying an edit), and the seed.
Install
Standard pack install:
cd path_to_comfyui/custom_nodes
git clone https://github.com/Bria-AI/ComfyUI-BRIA-API.git
or ComfyUI Manager → search "BRIA API" → restart. No models, no requirements file. Just the API token.
When to reach for it
Reach for FIBO Edit when your job is "change something" and you can describe it in a sentence - that's what it's excellent at, and it beats a local inpainting chain for speed and convenience. Reach for a mask when you need the rest of the image untouched to the pixel, or when you're editing at high resolution where local models get dedicated budget. The pack even ships the split: FIBO Edit for the sentence path, and the Bria Eraser / GenFill nodes for the masked path. The Fibo_edit_workflow.json in the pack's workflows folder wires the whole thing up if you want a starting point.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| api_token | STRING | BRIA_API_TOKEN | — |
| images | IMAGE | — | |
| instructionopt | STRING | — | |
| maskopt | MASK | — | |
| structured_instructionopt | STRING | — | |
| negative_promptopt | STRING | — | |
| steps_numopt | INT | 301–100 | — |
| guidance_scaleopt | INT | 51–20 | — |
| seedopt | INT | 123456 | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |
| structured_instruction | STRING | — |
| seed | INT | — |