Ideogram BG Remover API

AI background remover API,
for production at scale.

POST an image, receive a transparent PNG with clean logos, fine typography, and intricate cutouts. Built for developers and enterprise teams across design, e-commerce, marketing, and advertising.

Contact sales Try the API

Overview

The background remover endpoint identifies the foreground subject in an image and returns it on a transparent background. Send the image, receive a JSON response containing a signed URL to the transparent PNG. Priced at $0.01 per image, with batch and volume discounts available. No GPU or model hosting on your side.


Endpoint reference

Endpoint Method Description
/v1/remove-background POST Remove the background of an image, return a transparent PNG.

Request

Send the image as multipart/form-data.

Parameter Type Required Description
image binary Yes The image to process. JPEG, PNG, or WebP. Max 10 MB.

Response

200 OK returns a JSON object with a top-level created timestamp and a data array. The processed image is the first entry.

Field Type Description
created string ISO 8601 timestamp of when the result was generated.
data[].url string Signed URL to the transparent PNG. Valid for ~24 hours; download to keep.
data[].is_image_safe boolean Whether the image passed safety checks. If false, url is empty.

Response headers

Every response carries x-request-id. Capture it and include it in support tickets to make debugging fast.

Errors

Status Meaning
400Invalid input.
401Missing or invalid API key.
422Image failed safety checks.
429Rate limit exceeded.

Remove a background

Format: multipart/form-data
Max size: 10 MB per image
Accepted: JPEG, PNG, WebP
Auth: Api-Key header
import requests

with open("input.jpg", "rb") as f:
  response = requests.post(
    "https://api.ideogram.ai/v1/remove-background",
    headers={"Api-Key": "<apiKey>"},
    files={"image": ("input.jpg", f, "image/jpeg")},
    timeout=60,
  )
response.raise_for_status()
request_id = response.headers.get("x-request-id")  # save for support tickets

result = response.json()["data"][0]
if not result["is_image_safe"]:
  raise RuntimeError(f"safety check failed (request {request_id})")

# Signed URL is valid for ~24h; download to keep.
png = requests.get(result["url"], timeout=60).content
with open("cutout.png", "wb") as out:
  out.write(png)

Response shape

The endpoint returns a data array. The processed image is the first entry. The url is a signed link; download the bytes if you need to retain the image.

{
  "created": "2026-05-05T03:43:30.424309+00:00",
  "data": [
    {
      "url": "https://ideogram-ephemeral.ideogram.ai/<signed-url>.png",
      "is_image_safe": true
    }
  ]
}

Tips

  • Download the result. The url is signed and valid for roughly 24 hours. Persist the bytes if you need to keep the image; do not hotlink the signed URL from production assets.
  • Stay under 10 MB. Larger images return 400. Resize or recompress before uploading. The model handles up to ~4K source images well; bigger inputs mostly cost upload time.
  • Set a generous client timeout. The endpoint is synchronous and a typical 1 MB request finishes in a few seconds, but harder inputs (refraction, fine hair, intricate cutouts) can take longer. A 60-second client timeout is a safe default.
  • Run in parallel for catalogs. Scale throughput by running many requests concurrently up to your account's rate limit. 429 responses are retryable with backoff.
  • Check is_image_safe before using url. When false, the URL is empty; the input failed a safety check.
  • Capture x-request-id. Log it on every call. It is the fastest way to get a specific failure investigated.
  • Re-encode the result if you need EXIF or metadata. The response is a transparent PNG with a clean alpha channel and no input metadata; re-add color profile or copyright tags downstream if your pipeline needs them.
  • Pre-resize aggressively for thumbnails. Output resolution matches the input. If you only need 1024px assets, resize before uploading to save bandwidth and time on both legs.

Built for

  • Developers. A single REST endpoint accepts multipart form data and returns a signed PNG URL. No GPU, no model hosting, no SDK lock-in. Call it from any language with an HTTP client and integrate it into a backend, queue worker, or CLI in an afternoon.
  • Product photography. Strip studio backgrounds, mannequins, and shadows from hero shots, packshots, and lifestyle photography. The output is a transparent PNG ready to drop into listing templates without retouching.
  • E-commerce and marketplaces. Run entire catalogs in batch. Same edge quality on the first SKU and the ten-thousandth, with consistent framing for Amazon, Shopify, Etsy, and your own storefront. Refresh listings on a recurring schedule without re-touching files by hand.
  • Marketing and advertising. Cut subjects from raw shoots, stock, or AI generations and recomposite onto any background. The transparent PNG composites cleanly into Photoshop, Figma, and ad-builder pipelines for campaign assets at volume.
  • Graphic design. Pull artwork off its source background and reuse across posters, packaging, merchandise, and digital surfaces. Anti-aliased typography, fine illustration linework, and intricate cutouts are preserved.
  • Enterprise. High-volume batch processing with priority throughput, dedicated support, and volume-based pricing. Contact [email protected] for a quote.

Ready to integrate?