Seedream 5.0 Flash is LIVE — Faster & Cheaper | Try Now →

black-forest-labs/flux-3/edit

FLUX 3 Image Edit transforms and combines up to 10 input images using natural-language instructions, with flexible 1K / 2K / 4K output for multi-image composition, visual refinements, creative edits, marketing assets, and production workflows. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

image-to-image
Input
Enable Safety Checker

Idle

Redesign only the perfume bottle she is holding. Change it to deep emerald-green translucent glass with a brushed gold cap. Replace the label text with “NOCTURNE” in elegant gold lettering.

Keep the bottle's original shape, size, position, and orientation. Preserve the woman's exact face, expression, hairstyle, clothing, jewelry, pose, and finger placement. Keep the background and composition unchanged. Update reflections and the subtle light transmitted through the glass to match the new materials.

$0.05per run·~20 / $1

Next:

ExamplesView all

Redesign only the perfume bottle she is holding. Change it to deep emerald-green translucent glass with a brushed gold cap. Replace the label text with “NOCTURNE” in elegant gold lettering.

Keep the bottle's original shape, size, position, and orientation. Preserve the woman's exact face, expression, hairstyle, clothing, jewelry, pose, and finger placement. Keep the background and composition unchanged. Update reflections and the subtle light transmitted through the glass to match the new materials.

Redesign only the perfume bottle she is holding. Change it to deep emerald-green translucent glass with a brushed gold cap. Replace the label text with “NOCTURNE” in elegant gold lettering. Keep the bottle's original shape, size, position, and orientation. Preserve the woman's exact face, expression, hairstyle, clothing, jewelry, pose, and finger placement. Keep the background and composition unchanged. Update reflections and the subtle light transmitted through the glass to match the new materials.

Related Models

README

FLUX 3 Image Edit

FLUX 3 Image Edit transforms and combines existing images using natural-language instructions. Provide between 1 and 10 input images, explain the role of each reference in the prompt, and generate a new composition at up to 4K resolution.

Use it for subject-guided edits, product compositions, style changes, typography, advertising creatives, and multi-reference workflows where elements from several images need to be combined into one result.

Why Choose This?

  • Multi-image editing
    Combine up to 10 input images in a single generation.

  • Reference-guided composition
    Assign different roles to each image, such as taking a subject from one reference and placing it into the scene from another.

  • Up to 4K output
    Choose 1K, 2K, or 4K depending on your quality and production requirements.

  • Typography and layout control
    Describe exact text, placement, hierarchy, and composition directly in the prompt.

  • Flexible aspect ratios
    Choose from a wide range of landscape, portrait, square, and ultrawide layouts.

  • Prompt expansion
    Enable automatic prompt expansion when additional interpretation is useful.

Parameters

ParameterRequiredDescription
promptYesText instructions describing the edit or new composition. Refer to input images by their order, such as image 1, image 2, and so on. Must not be empty.
imagesYesBetween 1 and 10 input image URLs or data URIs. Each image must be at least 256 pixels per dimension and no larger than 4 megapixels. Input order matters.
aspect_ratioNoOutput aspect ratio: 21:9, 2:1, 16:9, 3:2, 7:5, 4:3, 5:4, 1:1, 4:5, 3:4, 5:7, 2:3, 9:16, or 1:2. Leave empty to follow the first input image's aspect ratio.
resolutionNoOutput resolution tier: 1k, 2k, or 4k. Default: 1k.
enable_prompt_expansionNoExpand the prompt while preserving the intended content. Default: false.
output_formatNoOutput image format: jpeg or png. Default: jpeg.

How to Use

  1. Upload the source images — Provide between 1 and 10 images in the order you want to reference them.
  2. Write the edit instruction — Describe what should change and explain the role of each image.
  3. Choose aspect ratio optional — Select an output layout or leave it empty to follow the first input image.
  4. Choose resolution — Select 1k, 2k, or 4k.
  5. Configure prompt expansion optional — Enable it when you want the prompt expanded automatically.
  6. Choose output format — Select jpeg or png.
  7. Submit — Generate and retrieve the edited image.

Pricing

Pricing is based only on the selected resolution.

ResolutionPrice per Image
1K$0.05
2K$0.12
4K$0.65

Best Use Cases

  • Multi-reference compositions — Combine subjects, products, environments, or visual elements from several source images.
  • Product imagery — Place products into new scenes or combine product references with campaign visuals.
  • Advertising creatives — Build commercial concepts from multiple visual references.
  • Subject-guided editing — Use one image to guide a person, object, or other subject in another composition.
  • Style transformation — Change materials, lighting, colors, or overall visual direction.
  • Typography and poster design — Modify or create compositions containing text and structured layouts.
  • Editorial and social content — Produce new visuals from existing assets for publishing and social media.

Pro Tips

  • Refer to each input clearly as image 1, image 2, and so on.
  • Explain the role of every important reference instead of simply uploading multiple images without instructions.
  • State both what should change and what should remain unchanged when precision matters.
  • Put exact text that should appear in the output inside quotation marks.
  • Describe where subjects, products, or text should appear in the final composition.
  • Use 1k for lower-cost iteration before moving to 2k or 4k.
  • Use fewer references when several images provide conflicting visual guidance.
  • Choose png when you want to avoid additional JPEG compression.

Related Models

  • FLUX 3 Text-to-Image — Generate images directly from text prompts with resolutions up to 4K.
  • FLUX 3 Edit — Edit and combine up to ten input images with natural-language instructions.
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.

Flux 3 Edit API — Quick start

Grab a WaveSpeedAI API key, then call POST https://api.wavespeed.ai/api/v3/black-forest-labs/flux-3/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 Flux 3 Edit below.

HTTP example
set -euo pipefail

: "${WAVESPEED_API_KEY:?Set WAVESPEED_API_KEY}"

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

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/black-forest-labs/flux-3/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/black-forest-labs/flux-3/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({
        "prompt": "A cinematic shot of a city at sunset, soft golden light",
        "images": [
                "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg"
        ],
        "aspect_ratio": "21:9",
        "resolution": "1k",
        "output_format": "jpeg",
        "enable_prompt_expansion": false
}),
});
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 = {
    "prompt": "A cinematic shot of a city at sunset, soft golden light",
    "images": [
        "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg"
    ],
    "aspect_ratio": "21:9",
    "resolution": "1k",
    "output_format": "jpeg",
    "enable_prompt_expansion": False
}

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/black-forest-labs/flux-3/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)

Flux 3 Edit API — Frequently asked questions

What is the Flux 3 Edit API?

Flux 3 Edit is a Black Forest Labs model for image editing, exposed as a REST API on WaveSpeedAI. FLUX 3 Image Edit transforms and combines up to 10 input images using natural-language instructions, with flexible 1K / 2K / 4K output for multi-image composition, visual refinements, creative edits, marketing assets, 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 Flux 3 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/black-forest-labs/black-forest-labs-flux-3-edit.

How much does Flux 3 Edit cost per run?

Flux 3 Edit starts at $0.05 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 Flux 3 Edit accept?

Key inputs: `prompt`, `images`, `aspect_ratio`, `resolution`, `enable_prompt_expansion`, `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/black-forest-labs/black-forest-labs-flux-3-edit.

How do I get started with the Flux 3 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 Flux 3 Edit outputs commercially?

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

llms.txt — black-forest-labs/flux-3/edit for AI agents and LLMs