MiniMax H3 Open Weights | Try in Video Generator →

Flux V1 Pro Erase | AI Background & Object Remover API

wavespeed-ai/

FLUX.1 Pro Erase is a fast AI object removal and image inpainting model that removes objects from images using a black-and-white mask, then fills the selected area with natural, context-aware detail. Ready-to-use REST inference API for object removal, photo cleanup, product image editing, background repair, creative retouching, marketing assets, and professional image editing workflows with simple integration, no coldstarts, and affordable pricing.

ai-remover
Input

Idle

$0.08per run·~12 / $1

ExamplesView all

Related Models

README

WaveSpeed AI FLUX V1 Pro Erase

WaveSpeed AI FLUX V1 Pro Erase removes selected elements from an image using a mask, then fills the masked region with regenerated content that blends naturally with the surrounding scene. It is suitable for object removal, cleanup, retouching, and image refinement workflows.

Why Choose This?

  • Mask-based object removal Remove unwanted objects, distractions, or visual clutter from an image with a dedicated mask input.

  • Clean scene-aware fill Regenerate the selected region so it blends with the surrounding image content.

  • Simple erase workflow Upload an image, provide a mask, adjust dilation, and generate a cleaned result.

  • Flexible edge expansion Use dilate_pixels to slightly expand the masked region for smoother inpainting boundaries.

  • Multiple output formats Export the result in supported formats such as jpeg.

  • Production-ready API Suitable for photo cleanup, product image refinement, background editing, and visual post-processing workflows.

Parameters

ParameterRequiredDescription
imageYesInput image to edit.
mask_imageYesMask image indicating the region to erase and regenerate.
dilate_pixelsNoNumber of pixels to expand the mask before regeneration. Default: 10.
output_formatNoOutput image format, such as jpeg.

How to Use

  1. Upload your image — provide the source image you want to clean up.
  2. Upload the mask — mark the object or region you want to erase.
  3. Adjust mask dilation (optional) — use dilate_pixels to slightly expand the masked area for cleaner blending.
  4. Choose output format (optional) — select the format that best fits your workflow.
  5. Submit — run the model and download the cleaned image.

Example Use Case

Remove small desk objects from a workspace photo so the final scene looks cleaner and more minimal.

Pricing

Just $0.08 per image.

Billing Rules

  • Each erase request costs $0.08
  • Pricing is fixed per image
  • dilate_pixels and output_format do not affect pricing

Best Use Cases

  • Object removal — Remove unwanted items, clutter, or distractions from photos.
  • Photo cleanup — Refine scenes for cleaner presentations and commercial use.
  • Product image retouching — Remove background props or accidental objects from listings and ads.
  • Creative editing — Clear space in an image before adding other edits or design elements.
  • Workflow preparation — Clean up images before downstream compositing or publishing.

Pro Tips

  • Use a precise mask for better removal quality.
  • Slightly increase dilate_pixels when edges need smoother blending.
  • Avoid masking too much of the image at once unless the surrounding context is strong.
  • Use the cleanest source image possible for more natural regeneration.
  • Export as jpeg for convenience, or choose another format when your workflow needs it.

Notes

  • Both image and mask_image are required.
  • dilate_pixels defaults to 10.
  • Pricing is fixed at $0.08 per image.
  • Better masks generally produce cleaner erase results.

Related Models

  • WaveSpeed AI image editing workflows — Useful when you need broader prompt-based transformations instead of object removal only.
  • WaveSpeed AI inpainting workflows — Useful when you want more general masked-region regeneration tasks.
  • WaveSpeed AI text-to-image workflows — Useful when you need fresh image generation rather than editing an existing image.
Note:This website uses AI models provided by third parties.

Flux v1 Pro Erase API — Quick start

Grab a WaveSpeedAI API key, then call POST https://api.wavespeed.ai/api/v3/wavespeed-ai/flux-v1-pro/erase 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 v1 Pro Erase below.

HTTP example
set -euo pipefail

: "${WAVESPEED_API_KEY:?Set WAVESPEED_API_KEY}"

REQUEST_BODY=$(cat <<'JSON'
{
    "image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
    "mask_image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
    "dilate_pixels": 10,
    "output_format": "jpeg"
}
JSON
)

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/wavespeed-ai/flux-v1-pro/erase" \
  -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=$(printf '%s' "$TASK" | jq -r '.urls.get // empty')
if [ -z "$RESULT_URL" ]; then
  RESULT_URL="https://api.wavespeed.ai/api/v3/predictions/$PREDICTION_ID/result"
fi

# 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) printf '%s\n' "$RESULT" | jq . >&2; exit 1 ;;
    created|processing) sleep 2 ;;
    *) printf 'Unexpected status: %s
' "$STATUS" >&2; exit 1 ;;
  esac
done
Node.js example
const submitUrl = "https://api.wavespeed.ai/api/v3/wavespeed-ai/flux-v1-pro/erase";
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({
        "image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
        "mask_image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
        "dilate_pixels": 10,
        "output_format": "jpeg"
}),
});
const task = body.data ?? body;
if (!task.id) throw new Error("Submission response did not contain a prediction id");
const resultUrl = task.urls?.get ||
  `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"].includes(result.status)) throw new Error(JSON.stringify(result));
  if (!["created", "processing"].includes(result.status)) throw new Error("Unexpected status: " + result.status);
  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 = {
    "image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
    "mask_image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
    "dilate_pixels": 10,
    "output_format": "jpeg"
}

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/wavespeed-ai/flux-v1-pro/erase", 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 = task.get("urls", {}).get("get") or 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"}:
        raise RuntimeError(result)
    if status not in {"created", "processing"}:
        raise RuntimeError(f"Unexpected status: {status}")
    time.sleep(2)

Flux v1 Pro Erase API — Frequently asked questions

What is the Flux v1 Pro Erase API?

Flux v1 Pro Erase is a WaveSpeedAI model for object / watermark removal, exposed as a REST API on WaveSpeedAI. FLUX.1 Pro Erase is a fast AI object removal and image inpainting model that removes objects from images using a black-and-white mask, then fills the selected area with natural, context-aware detail. Ready-to-use REST inference API for object removal, photo cleanup, product image editing, background repair, creative retouching, marketing assets, and professional image editing workflows with simple integration, no coldstarts, and affordable pricing. You can call it programmatically or try it from the playground above.

How do I call the Flux v1 Pro Erase 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 production-oriented Python, JavaScript, and cURL examples with timeouts, transient-error handling, and safe GET retries. Full request/response shape is documented at https://wavespeed.ai/docs/docs-api/wavespeed-ai/flux-v1-pro-erase.

How much does Flux v1 Pro Erase cost per run?

Flux v1 Pro Erase starts at $0.080 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 v1 Pro Erase accept?

Key inputs: `image`, `dilate_pixels`, `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/wavespeed-ai/flux-v1-pro-erase.

How do I get started with the Flux v1 Pro Erase 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 v1 Pro Erase outputs commercially?

Commercial usage rights depend on the model's license, set by its provider (WaveSpeedAI). The license summary appears on the model card above; see WaveSpeedAI's Terms of Service for platform-level conditions.

Flux V1 Pro Erase | AI Background & Object Remover API on WaveSpeedAI