Your remove.bg code. Our cutouts.
The Cut Remove Done API speaks remove.bg v1.0. Same endpoint, same fields, same errors. Change the host and the key, and the rest of your code stays exactly as it is.
curl -X POST https://api.cutremovedone.com/v1.0/removebg \ -H "X-Api-Key: $CRD_API_KEY" \ -F image_file=@shoe.jpg \ -F size=auto \ -o shoe.pngOne request
Send a photo. Get a clean PNG back.
The image comes back as the response body, with the subject’s position in the headers. Prefer JSON? Ask for it and you get Base64 instead.
Request
api.cutremovedone.com
- X-Api-Key
- crd_live_••••
- image_file
- sneaker.jpg
- size
- auto
- type
- product
- crop
- false


HTTP/2 200Content-Type: image/pngX-Credits-Charged: 1X-Type: productX-Width: 1400X-Height: 934X-Foreground-Top: 168X-Foreground-Left: 96X-Foreground-Width: 1214X-Foreground-Height: 610X-RateLimit-Remaining: 499The PNG comes back as the response body.
An illustrated example. Nothing leaves your browser.
Migration
Switch from remove.bg in two minutes.
Your requests, your parameters and your error handling all carry over. Two values change.
POST /v1.0/removebg- Host: api.remove.bg+ Host: api.cutremovedone.com- X-Api-Key: YOUR_REMOVE_BG_KEY+ X-Api-Key: crd_live_YOUR_KEY Content-Type: multipart/form-data image_file=@photo.jpg size=auto type=product- 1
Create a key
In your dashboard, under API keys.
- 2
Swap the host and key
One base URL, one environment variable.
- 3
Run your tests
Responses keep the same shape, so they should pass as before.
Authentication
One header. That’s it.
Send your key in X-Api-Key on every call. Use a test key while you build and a live key in production.
crd_live_…LiveCharges credits. Use it on your servers only, never in a browser or app bundle.
crd_test_…TestFree and never charged. Made for development and CI.
Endpoints
Two you know, two more on the way.
Remove a background
Send an image, get a transparent PNG back. Same fields, headers and errors as remove.bg.
Check your balance
Credits left on your plan and packs, in the remove.bg account format.
Batch jobs
Queue up to 10,000 images and get one webhook when they are all done.
Native cutouts
Pick a model, get the image, the mask or both, as a file, link or Base64.
Requests can be multipart/form-data, URL encoded or JSON.
Parameters
Every remove.bg field, same name.
Filter by what the field does, or search for the one you already use.
image_filefileThe image as a multipart upload. JPG, PNG or WebP, up to 22 MB.
Readyimage_file_b64stringThe image as Base64. A data URI prefix is fine.
Readyimage_urlstringA public http or https link we fetch for you.
ReadytypeenumA hint about the subject: auto, person, product, animal, car, graphic or transportation.default auto
Readysizeenumpreview or small (0.25 MP), medium (1.5 MP), hd (4 MP), 4k (10 MP), full or auto (25 MP), 50mp.default auto
Readyformatenumauto, png, jpg or webp. zip (colour JPG plus alpha PNG) is planned.default auto
Readychannelsenumrgba for the cutout, or alpha for a greyscale mask only.default rgba
ReadycropbooleanTrim empty space around the subject.default false
Readybg_colorstringFlatten onto a colour. Hex like 81d4fa or fff, or a simple colour name.
Readycrop_marginstringSpace to keep after cropping, in px (30px) or percent (10%).
NextroistringOnly look inside this region: x1 y1 x2 y2, in px or percent.
NextsemitransparencybooleanKeep see-through areas such as glass and veils.default true
Nextbg_image_url / bg_image_filestring / filePlace the cutout on your own background image.
Nextscale / positionstringSubject size (10% to 100%) and placement (center, original, or x% y%).
Nextshadow_type / shadow_opacityenum / intnone, drop, 3D or contact, with opacity from 0 to 100.
Next
9 of 15 parameters work in our reference build today. The rest are marked Next and keep the remove.bg names, so your code is ready for them.
Responses
The image in the body. The details in the headers.
- X-Credits-Charged
- Credits used by this call
- X-Type
- What we detected: person, product and so on
- X-Width / X-Height
- Size of the returned image
- X-Foreground-Top / Left / Width / Height
- Where the subject sits, in pixels
- X-RateLimit-Limit / Remaining / Reset
- Your per-minute budget
{ "data": { "attributes": { "credits": { "total": 750, "subscription": 500, "payg": 250 }, "api": { "free_calls": 25 } } }}Errors
Errors you can handle without thinking.
Same envelope as remove.bg, so your existing error handling keeps working. Failed calls are never charged.
{ "errors": [{ "title": "Could not identify foreground in image", "code": "unknown_foreground" }]}| Status | Code | When |
|---|---|---|
| 400 | missing_sourceNo image_file, image_file_b64 or image_url was sent. | No image_file, image_file_b64 or image_url was sent. |
| 400 | failed_downloadWe could not fetch image_url. | We could not fetch image_url. |
| 400 | file_too_largeThe image is over 22 MB. | The image is over 22 MB. |
| 400 | invalid_imageThe file is not a readable JPG, PNG or WebP. | The file is not a readable JPG, PNG or WebP. |
| 400 | unknown_foregroundWe could not find a subject to keep. | We could not find a subject to keep. |
| 402 | insufficient_creditsYour balance is too low for this size. | Your balance is too low for this size. |
| 403 | auth_failedThe X-Api-Key header is missing or wrong. | The X-Api-Key header is missing or wrong. |
| 429 | rate_limit_exceededToo many calls this minute. Wait for Retry-After. | Too many calls this minute. Wait for Retry-After. |
Credits and limits
One credit, one image. No surprises.
A credit covers one image up to 25 megapixels. A 50 megapixel image uses two. Credits you buy never expire.
Free
$0
25 images a month
50 per minute
Pro
$9/month
500 credits a month
500 per minute
Credit packs
$5 for 200
Up to 100,000 credits
Never expire
Enterprise
$0.005/image
Invoiced, from $500 a month
Limits agreed with you
Team is $29 a month for 2,500 credits, 10 seats and 1,000 calls a minute. Rate limits never charge you. Full pricing, euro prices and a calculator.
SDKs and tools
Use what you already have.
Our own SDKs are on the roadmap. Until then, any HTTP client works, and so do most remove.bg libraries.
Your remove.bg library
CompatibleMost clients let you set a base URL. Point it at us and keep going.
Node.js SDK
PlannedA small typed client with retries and streaming downloads.
Python SDK
PlannedSync and async clients, plus a shim for the old removebg package.
Command line
PlannedCut a whole folder from your terminal, safe to re-run.
Webhooks
PlannedSigned callbacks when batch jobs finish.
Zapier and Make
PlannedNew file in Drive or Dropbox, cutout back wherever you like.
Want one sooner? Vote on the roadmap.
FAQ
Good questions.
Is the API live yet?+
Not yet. The hosted API at api.cutremovedone.com is still being built, and we will open it as soon as it is ready. The free remover on this site already works today, right in your browser.
Do I have to rewrite my remove.bg code?+
No. The endpoint, field names, headers and error format match remove.bg v1.0. You change the host and the key, and the rest of your code stays the same.
Which remove.bg options are supported?+
The core ones are ready: file, Base64 and URL input, size, type, format, channels, crop and bg_color. Background images, shadows, scale, position, roi and zip output are next. Each one is marked in the table above.
How are credits counted?+
One credit covers one image up to 25 megapixels. A 50 megapixel image uses two. Small previews use a quarter of a credit. Failed calls and rate limit errors are never charged.
Do credits expire?+
Credits you buy never expire. Plan credits arrive every month, and yearly plans get them monthly too.
Will you keep my images?+
No. When the API opens, the result comes straight back in the response and is not stored. Signed links, once they ship, delete the file when the link expires.
Get your key ready.
We are finishing the hosted API now. In the meantime, the free remover works today, right in your browser, no account needed.