Nano Banana 2.1 is LIVE — Google's Latest | Try Now →

bria/fibo-2.0/edit

Bria FIBO 2.0 Image Edit edits one to four reference images with natural-language or structured instructions, supporting masked single-image edits, visual refinements, product visuals, marketing assets, creative content, and production workflows. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

Image Editing
Input

Drag & drop or click to upload

preview

Hint: You can drag and drop a file or click to upload

Advanced edit instructions as a JSON string. Use instead of prompt.

Idle

Transform the gown into an avant-garde couture piece combining matte black silk, polished silver structural panels, translucent smoked-glass sections, tiny ruby beadwork, fine gold embroidery, and layered organza.
Preserve the designer, mannequin, pose, studio layout, camera angle, and original gown silhouette.
Keep the garment elegant and wearable, with realistic textile folds, metal reflections, transparent material behavior, and intricate stitching. Premium fashion editorial, highly detailed.

$0.04per run·~25 / $1

Next:

ExamplesView all

Transform the gown into an avant-garde couture piece combining matte black silk, polished silver structural panels, translucent smoked-glass sections, tiny ruby beadwork, fine gold embroidery, and layered organza.
Preserve the designer, mannequin, pose, studio layout, camera angle, and original gown silhouette.
Keep the garment elegant and wearable, with realistic textile folds, metal reflections, transparent material behavior, and intricate stitching. Premium fashion editorial, highly detailed.

Transform the gown into an avant-garde couture piece combining matte black silk, polished silver structural panels, translucent smoked-glass sections, tiny ruby beadwork, fine gold embroidery, and layered organza. Preserve the designer, mannequin, pose, studio layout, camera angle, and original gown silhouette. Keep the garment elegant and wearable, with realistic textile folds, metal reflections, transparent material behavior, and intricate stitching. Premium fashion editorial, highly detailed.

Related Models

README

Bria FIBO 2.0 Edit

Bria FIBO 2.0 Edit transforms existing images with natural-language instructions. Edit a single image, combine multiple references, or use a mask to focus changes on a specific area.

Why Choose This?

  • Text-guided editing — Describe changes to subjects, scenes, colors, lighting, and visual style.
  • Multi-reference support — Use up to 4 source or reference images in one request.
  • Localized editing — Use a black-and-white mask to control where changes are applied.
  • Structured instructions — Use structured edit instructions instead of a standard text prompt.
  • Flexible framing — Choose from 21 supported aspect ratios or keep the first image's ratio.
  • PNG and JPEG output — Select the output format that fits your workflow.

Parameters

ParameterRequiredDescription
imagesYesBetween 1 and 4 source or reference images. Supports JPEG, JPG, PNG, and WEBP.
promptConditionalText instructions describing the desired edit. Required unless structured_instruction is provided. Do not use both.
mask_imageNoBlack-and-white mask for single-image editing. White areas are edited and black areas are preserved.
structured_instructionNoAdvanced edit instructions as a JSON string, used instead of prompt.
aspect_ratioNoOutput aspect ratio: 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 16:10, 10:16, 2:1, 1:2, 21:9, 9:21, 3:1, 1:3, 4:1, 1:4, 5:1, or 1:5. Defaults to the first image's ratio when omitted.
output_formatNoOutput format: png or jpeg. Default: png.
seedNoOptional seed. Omit for random generation.

How to Use

  1. Upload images — Provide between 1 and 4 source or reference images.
  2. Describe the edit — Use prompt or provide a structured_instruction.
  3. Add a mask optional — For a single-image edit, use a mask to define the area that should change.
  4. Choose framing optional — Select an aspect ratio or keep the first image's ratio.
  5. Choose output format optional — Select png or jpeg.
  6. Submit — Generate and retrieve the edited image.

Pricing

$0.04 per request.

Best Use Cases

  • Product image editing — Change backgrounds, colors, materials, and presentation.
  • Creative compositing — Combine multiple visual references into a new image.
  • Localized edits — Modify selected areas while preserving the rest of the image.
  • Advertising creatives — Adapt existing assets for campaigns and promotions.
  • Scene transformation — Change environments, lighting, styling, or visual direction.
  • Multi-reference workflows — Use several images to guide the final composition.

Pro Tips

  • Clearly describe what should change and what should remain unchanged.
  • Use a mask when the edit needs to stay within a specific area.
  • Use multiple references when combining subjects, products, or visual elements.
  • Keep large aspect-ratio changes limited when editing a single image.
  • Use a fixed seed when comparing prompt or parameter changes.

Notes

  • images is required and supports 1–4 images.
  • Provide either prompt or structured_instruction, not both.
  • mask_image requires exactly one input image.
  • The mask must match the source image's pixel dimensions.
  • White mask areas are edited; black areas are preserved.
  • Multi-reference edits cannot be combined with a mask.
  • If aspect_ratio is omitted, the first image's ratio is used.
  • For single-image edits, the output may retain the source aspect ratio even when a different aspect_ratio is specified. Large aspect-ratio changes may also reduce quality.
  • Multi-reference edits support all listed aspect ratios.

Related Models

Note:This website uses AI models provided by third parties. Documentation prices are for reference and may be outdated. The Generate button shows an estimate; the final task charge prevails.

Fibo 2.0 Edit API — Quick start

Grab a WaveSpeedAI API key, then call POST https://api.wavespeed.ai/api/v3/bria/fibo-2.0/edit with your input as JSON. The endpoint returns a prediction id. Start polling the result endpoint around every 2 seconds, increase the interval for long-running tasks, and stop on any terminal status. On completed, read output values from data.outputs. Examples for Fibo 2.0 Edit below.

HTTP example
set -euo pipefail

: "${WAVESPEED_API_KEY:?Set WAVESPEED_API_KEY}"

REQUEST_BODY=$(cat <<'JSON'
{
    "images": [
        "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg"
    ],
    "aspect_ratio": "1:1",
    "output_format": "png",
    "prompt": "A cinematic shot of a city at sunset, soft golden light"
}
JSON
)

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/bria/fibo-2.0/edit" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $WAVESPEED_API_KEY" \
  -d "$REQUEST_BODY")

TASK=$(printf '%s' "$SUBMIT_RESPONSE" | jq 'if has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "$TASK" | jq -r '.id')
if [ -z "$PREDICTION_ID" ] || [ "$PREDICTION_ID" = "null" ]; then
  printf 'Submission response did not contain a prediction id
' >&2
  exit 1
fi
RESULT_URL="https://api.wavespeed.ai/api/v3/predictions/$PREDICTION_ID/result"

# 2. Poll until the prediction finishes.
while true; do
  RESPONSE=$(curl --silent --show-error --fail-with-body "$RESULT_URL" \
    -H "Authorization: Bearer $WAVESPEED_API_KEY")
  RESULT=$(printf '%s' "$RESPONSE" | jq 'if has("data") then .data else . end')
  STATUS=$(printf '%s' "$RESULT" | jq -r '.status')
  case "$STATUS" in
    completed) printf '%s\n' "$RESULT" | jq '.outputs'; break ;;
    failed|cancelled|timeout|deleted) printf '%s\n' "$RESULT" | jq . >&2; exit 1 ;;
    *) sleep 2 ;;
  esac
done
Node.js example
const submitUrl = "https://api.wavespeed.ai/api/v3/bria/fibo-2.0/edit";
const apiKey = process.env.WAVESPEED_API_KEY;
if (!apiKey) throw new Error('Set WAVESPEED_API_KEY');

async function requestJson(url, options = {}) {
  const response = await fetch(url, options);
  if (!response.ok) throw new Error(await response.text());
  return response.json();
}

// 1. Submit the prediction.
const body = await requestJson(submitUrl, {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
        "images": [
                "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg"
        ],
        "aspect_ratio": "1:1",
        "output_format": "png",
        "prompt": "A cinematic shot of a city at sunset, soft golden light"
}),
});
const task = body.data ?? body;
if (!task.id) throw new Error("Submission response did not contain a prediction id");
const resultUrl = `https://api.wavespeed.ai/api/v3/predictions/${task.id}/result`;

// 2. Poll until the prediction finishes.
while (true) {
  const resultBody = await requestJson(resultUrl, {
    headers: { "Authorization": `Bearer ${apiKey}` },
  });
  const result = resultBody.data ?? resultBody;
  if (result.status === "completed") {
    console.log(result.outputs);
    break;
  }
  if (["failed", "cancelled", "timeout", "deleted"].includes(result.status)) throw new Error(JSON.stringify(result));
  await new Promise(resolve => setTimeout(resolve, 2000));
}
Python example
import json
import os
import time
from urllib.request import Request, urlopen

api_key = os.environ["WAVESPEED_API_KEY"]
headers = {"Authorization": f"Bearer {api_key}", "Content-Type": "application/json"}
payload = {
    "images": [
        "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg"
    ],
    "aspect_ratio": "1:1",
    "output_format": "png",
    "prompt": "A cinematic shot of a city at sunset, soft golden light"
}

def request_json(url, data=None):
    request = Request(url, data=data, headers=headers, method="POST" if data else "GET")
    with urlopen(request) as response:
        return json.load(response)

# 1. Submit the prediction.
body = request_json("https://api.wavespeed.ai/api/v3/bria/fibo-2.0/edit", json.dumps(payload).encode())
task = body.get("data", body)
if not task.get("id"):
    raise RuntimeError("Submission response did not contain a prediction id")
result_url = f"https://api.wavespeed.ai/api/v3/predictions/{task['id']}/result"

# 2. Poll until the prediction finishes.
while True:
    result_body = request_json(result_url)
    result = result_body.get("data", result_body)
    status = result.get("status")
    if status == "completed":
        print(result.get("outputs", []))
        break
    if status in {"failed", "cancelled", "timeout", "deleted"}:
        raise RuntimeError(result)
    time.sleep(2)

Fibo 2.0 Edit API — Frequently asked questions

What is the Fibo 2.0 Edit API?

Fibo 2.0 Edit is a Bria model for image editing, exposed as a REST API on WaveSpeedAI. Bria FIBO 2.0 Image Edit edits one to four reference images with natural-language or structured instructions, supporting masked single-image edits, visual refinements, product visuals, marketing assets, creative content, and production workflows. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing. You can call it programmatically or try it from the playground above.

How do I call the Fibo 2.0 Edit API?

POST your input parameters to the model's REST endpoint (shown in the API tab of this playground) with your WaveSpeedAI API key in the Authorization header. Submission returns a prediction ID. Poll the result endpoint starting around every 2 seconds, increase the interval for long-running tasks, and stop on any terminal status. The playground generates Python, JavaScript, and cURL examples for submitting requests and polling results. Full request/response shape is documented at https://wavespeed.ai/docs/docs-api/bria/bria-fibo-2.0-edit.

How much does Fibo 2.0 Edit cost per run?

Fibo 2.0 Edit starts at $0.04 per run. That figure is the base price — the final charge scales with the parameters you set in the form (output size, length, count, references, or whatever knobs this model exposes), so a higher-quality or larger output costs more than a minimal one. The exact cost for your current input is shown live next to the Generate button before you submit, and the actual per-call charge is recorded on the prediction afterwards.

What inputs does Fibo 2.0 Edit accept?

Key inputs: `prompt`, `images`, `aspect_ratio`, `seed`, `mask_image`, `output_format`. The full JSON schema (types, defaults, allowed values) is rendered above the Generate button and mirrored in the API reference at https://wavespeed.ai/docs/docs-api/bria/bria-fibo-2.0-edit.

How do I get started with the Fibo 2.0 Edit API?

Sign up for a free WaveSpeedAI account to claim starter credits, copy your API key from /accesskey, then call the endpoint shown in the API tab of the playground. The playground also auto-generates a code sample in Python, JavaScript, or cURL for the parameters you've set.

Can I use Fibo 2.0 Edit outputs commercially?

Commercial usage rights depend on the model's license, set by its provider (Bria). Check the provider's applicable terms and WaveSpeedAI's Terms of Service before commercial use.

llms.txt — bria/fibo-2.0/edit for AI agents and LLMs