Image Background Remover

Image Background Remover

Playground

Try it on WaveSpeedAI!

Powerful AI background remover that outputs high-quality transparent PNGs for e-commerce, graphics, and design. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

Features

Remove backgrounds from any image instantly with WaveSpeed AI’s Background Remover. This fast, precise tool automatically detects subjects and cleanly separates them from their backgrounds — perfect for e-commerce, portraits, product photography, and creative projects.

Why It Works Well

  • Automatic detection: Intelligently identifies subjects without manual selection or masking.
  • Clean edges: Produces smooth, professional cutouts even with complex details like hair.
  • One-click simplicity: Just upload an image — no parameters to configure.
  • Fast processing: Get results in seconds for rapid workflow integration.
  • Ultra-affordable: Professional background removal at just $0.01 per image.

Parameters

ParameterRequiredDescription
imageYesImage to remove background from (upload or public URL).

How to Use

  1. Upload your image — drag and drop or paste a public URL.
  2. Run — click the button to process.
  3. Download — save your image with transparent background.

Pricing

Flat rate per image.

OutputCost
Per image$0.01

Best Use Cases

  • E-commerce & Product Photos — Create clean product images on white or transparent backgrounds.
  • Portrait Photography — Isolate subjects for compositing or new background placement.
  • Marketing & Advertising — Prepare assets for designs, banners, and promotional materials.
  • Social Media Content — Create cutouts for collages, stickers, and creative posts.
  • Batch Processing — Process large volumes of images affordably for catalogs and listings.

Pro Tips for Best Results

  • Use images with clear distinction between subject and background for cleanest results.
  • Good lighting and contrast help the AI detect edges more accurately.
  • Works well with people, products, animals, and objects.
  • For complex subjects like hair or fur, ensure the original image has good resolution.
  • Output includes transparency — save as PNG to preserve the transparent background.

Notes

  • If using a URL, ensure it is publicly accessible. A preview thumbnail confirms successful loading.
  • Output is returned with transparent background (alpha channel).
  • Processing is optimized for speed — suitable for real-time workflows.
  • Works with various image formats and sizes.

Authentication

For authentication details, please refer to the Authentication Guide.

API Endpoints

Submit Task & Query Result

set -euo pipefail

export WAVESPEED_API_KEY="your-api-key"

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

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

TASK=$(printf '%s' "${SUBMIT_RESPONSE}" | jq 'if type == "object" and has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "${TASK}" | jq -r '.id // empty')
if [ -z "${PREDICTION_ID}" ]; 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 type == "object" and has("data") then .data else . end')
  STATUS=$(printf '%s' "${RESULT}" | jq -r '.status // empty')

  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

Parameters

Task Submission Parameters

Request Parameters

ParameterTypeRequiredDefaultRangeDescription
imagestringYes-The URL of the image to generate an image from.
enable_base64_outputbooleanNofalse-If set to `true`, the prediction's `output` strings are returned as **naked base64** (no `data:<mime>;base64,` prefix). When `false` (default), outputs are returned as URLs pointing to our CDN.
enable_sync_modebooleanNofalse-If set to `true`, the request attempts to wait for the generated result and return outputs in the same response. If the result is not ready within the sync wait window, the API can return a timeout body while the task continues processing. This option is only available via the API and is supported only by some models.

Response Parameters

ParameterTypeDescription
codeintegerHTTP status code (e.g., 200 for success)
messagestringStatus message (e.g., “success”)
data.idstringUnique identifier for the prediction, Task Id
data.modelstringModel ID used for the prediction
data.outputsarrayOutput values, usually URL strings; some models return text strings or structured result objects (empty when status is not completed)
data.urlsobjectObject containing related API endpoints
data.urls.getstringURL to retrieve the prediction result
data.statusstringStatus of the task: created, processing, completed, or failed
data.created_atstringISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”)
data.errorstringError message (empty if no error occurred)
data.timingsobjectObject containing timing details
data.timings.inferenceintegerInference time in milliseconds

Result Request Parameters

ParameterTypeRequiredDefaultDescription
idstringYes-Task ID

Result Response Parameters

ParameterTypeDescription
codeintegerHTTP status code (e.g., 200 for success)
messagestringStatus message (e.g., “success”)
dataobjectThe prediction data object containing all details
data.idstringUnique identifier for the prediction
data.modelstringModel ID used for the prediction
data.outputsarray<string | object>Array of generated outputs (empty when status is not completed). Items are usually URL strings, but may be text strings or structured result objects, depending on the model.
data.urlsobjectObject containing related API endpoints
data.urls.getstringURL to poll for the prediction result
data.statusstringStatus: created, processing, completed, or failed
data.created_atstringISO timestamp of when the request was created
data.errorstringError message (empty if no error occurred)
data.timingsobjectObject containing timing details
data.timings.inferenceintegerInference time in milliseconds
© 2026 WaveSpeedAI. All rights reserved.