If you are looking at Clipdrop API pricing, you are probably deciding whether to keep its remove background endpoint or switch. This post covers what the Clipdrop API looks like today, what it costs at 10,000 images a month, and a drop-in Python function that moves your integration to a cheaper API without touching the rest of your code. Every snippet was run against the live API before publishing.
Want to compare cutout quality first? Try the Background Removal API on one of your own product photos.
The Clipdrop remove background API today
Clipdrop started at Stability AI and has been part of Jasper since 2024. The API docs describe it like this:
-
Endpoint:
POST https://clipdrop-api.co/remove-background/v1, multipart body -
Auth: an
x-api-keyheader -
Input:
image_file(PNG, JPG or WebP, up to 25 megapixels and 30 MB), plus an optionaltransparency_handlingflag -
Output: the image bytes, PNG by default, WebP or JPG through the
acceptheader -
Credit headers:
x-remaining-creditsandx-credits-consumedon every response - Rate limit: 60 requests per minute per key by default
Clipdrop API pricing: credit packs
One successful call costs 1 credit. Credits are prepaid and stay valid for 2 years. Prices on the Clipdrop API pricing page, checked in October 2026:
- 100 free credits: one time, for development
- 100 credits: $50 ($0.50 per image)
- 1,000 credits: $320 ($0.32 per image)
- 5,000 credits: $800 ($0.16 per image)
- 25,000 credits: $3,600 ($0.144 per image)
Above that, the page sends you to Jasper to discuss bigger plans. There is no published monthly plan.
At 10,000 images a month that is $1,440 to $1,600 a month. Background removal is now sold well under a cent per image elsewhere, which is why teams start looking.
Why teams look for an alternative
- Cost at volume: even the largest pack is $0.144 per image.
- Prepaid budgeting: a 402 in production means someone forgot to top up the credits.
- Growth goes through sales: past 25,000 credits, pricing is a conversation with Jasper.
- Cutout only: putting the product on a white or branded background is extra code on your side.
Request mapping
-
clipdrop-api.co/remove-background/v1becomesbackground-removal-ai.p.rapidapi.com/remove-background -
x-api-keybecomesx-rapidapi-keyplusx-rapidapi-host -
image_filebecomesimage(or sendimage_url) -
accept: image/webporimage/jpg: the new API always returns PNG, convert with Pillow - Response bytes become JSON with an
image_urlto download -
x-remaining-creditsbecomesx-ratelimit-requests-remaining
The output keeps the input resolution: a 24 megapixel photo came back as a 6000x4005 PNG in about 8 seconds.
Before: a typical Clipdrop call
import requests
with open("bag.jpg", "rb") as image_file:
r = requests.post(
"https://clipdrop-api.co/remove-background/v1",
files={"image_file": ("bag.jpg", image_file, "image/jpeg")},
headers={"x-api-key": "YOUR_CLIPDROP_KEY"},
)
if r.ok:
with open("bag-cutout.png", "wb") as out:
out.write(r.content) # raw PNG bytes
else:
r.raise_for_status()
After: a drop-in remove_background() function
It takes the same image and returns image bytes like Clipdrop did, including the accept option for WebP and JPG output.
import io
import os
import requests
from PIL import Image
API = "https://background-removal-ai.p.rapidapi.com"
HEADERS = {
"x-rapidapi-host": "background-removal-ai.p.rapidapi.com",
"x-rapidapi-key": os.environ["RAPIDAPI_KEY"],
}
def remove_background(image_file, accept="image/png"):
"""Same input as Clipdrop's remove-background call, returns image bytes like Clipdrop."""
with open(image_file, "rb") as f:
resp = requests.post(API + "/remove-background", headers=HEADERS,
files={"image": f}, timeout=60)
resp.raise_for_status()
result = resp.json() # {"image_url": ..., "width": ..., "height": ..., "size_bytes": ...}
png = requests.get(result["image_url"], timeout=60).content
if accept == "image/png":
return png
# Clipdrop could also return WebP or JPG through the accept header
img = Image.open(io.BytesIO(png))
out = io.BytesIO()
if accept == "image/webp":
img.save(out, "WEBP")
else: # image/jpg: no alpha channel, flatten on white
flat = Image.new("RGB", img.size, (255, 255, 255))
flat.paste(img, mask=img.getchannel("A"))
flat.save(out, "JPEG", quality=92)
return out.getvalue()
The call site becomes:
png = remove_background("bag.jpg")
with open("bag-cutout.png", "wb") as out:
out.write(png)
The full guide on ai-engine.net has the JavaScript version, the cost table and the error code mapping.
Beyond transparency: new backgrounds in one call
With Clipdrop, a white or branded background meant compositing the cutout yourself. Here the background is an endpoint choice. Colors use the R,G,B,A format (a hex value returns a 422).
def replace_background(image_file, endpoint, data=None, bg_image=None):
files = {"image": open(image_file, "rb")}
if bg_image:
files["bg_image"] = open(bg_image, "rb")
resp = requests.post(API + endpoint, headers=HEADERS, data=data or {},
files=files, timeout=60)
resp.raise_for_status()
return resp.json()["image_url"]
# White catalog background
print(replace_background("bag.jpg", "/color-background",
{"bg_color": "255,255,255,255"}))
# Your own background photo, composited server-side
print(replace_background("bag.jpg", "/image-background", bg_image="marble.jpg"))
Migration checklist
- Search your codebase for
clipdrop-api.coandx-api-keyto find every call site. - Note which
acceptformats you request and whether you usetransparency_handling. - Swap the call for
remove_background()and run it on 20 to 50 of your real images, including hard ones: hair, glass, a white product on a white table. - Replace client-side compositing with
/color-backgroundor/image-background. - Swap credit monitoring for the rate limit headers.
- Keep your remaining Clipdrop credits as a fallback: they stay valid for 2 years.
Sources
- Clipdrop remove background API documentation: endpoint, limits, headers, errors, rate limit and free credits
- Clipdrop API pricing: credit packs and validity (checked October 2026)
Run it on your own catalog: test the Background Removal API with a few of your hardest product photos.
Originally published at ai-engine.net

Top comments (0)