Don't trust the docs. Trust the response.
Fire a real request against POST /v1.0/removebg right here — no signup. The anonymous demo key is pre-filled. Inspect the exact PNG bytes and the exact response headers your SDK will see.
Anonymous demo key — rate limited. Get a free key (100 credits) for your own testing.
Drop an image here, click to upload,
or pick a sample below
curl -H "X-Api-Key: live_demo_key" \ -F "[email protected]" \ -f https://backgroundremoverapi.com/v1.0/removebg \ -o cutout.png
Result PNG appears here.
Checkerboard = transparent background.
Response headers (what your SDK sees)
Error body (remove.bg errors[] shape)
Every remove.bg parameter, honestly mapped
Fetched from the remove.bg API reference and tested against this endpoint. We mark what we don't support — finding out after you migrated is worse than reading it here.
| Parameter / Behavior | Status | Notes |
|---|---|---|
| image_file | FULL SUPPORT | multipart/form-data file upload — identical |
| image_file_b64 | FULL SUPPORT | base64 string; data-URI prefix tolerated |
| image_url | FULL SUPPORT | http/https only, public hosts only (SSRF-guarded), ≤30 MB |
| size | ACCEPTED · NO-OP | accepted without error; output is full-resolution regardless |
| type | ACCEPTED · NO-OP | generic model handles all subjects; no per-type tuning |
| format | ACCEPTED · NO-OP | always 32-bit RGBA PNG output |
| bg_color / bg_image_file / bg_image_b64 / bg_image_url | NOT SUPPORTED | silently ignored (no error); composite backgrounds client-side |
| crop / crop_margin / scale / roi / position | NOT SUPPORTED | silently ignored; full uncropped foreground returned |
| X-Api-Key header | FULL SUPPORT | same auth header, same semantics |
| Binary PNG body | FULL SUPPORT | raw image/png bytes streamed — zero-rewrite response handling |
| X-Width / X-Height / X-Credits-Charged / X-Processing-Time-Ms | FULL SUPPORT | same header names, same meaning; verify live in the playground above |
| GET /v1.0/account | FULL SUPPORT | same credits JSON structure |
Error body {"errors":[{title,detail,code}]} | SAME SHAPE | semantic error codes — mapping table below |
Transparent trade-off: we run CPU inference on our own hardware — no GPU queue, no per-size tiering. That's how a $79 pack covers 20,000 images.
Errors your SDK will actually catch
Same HTTP statuses, same errors[] JSON shape as remove.bg — existing error handling keeps working.
| HTTP | Our code | Meaning | remove.bg equivalent |
|---|---|---|---|
| 400 | invalid_request | Missing/invalid image payload, bad image_url | 400 · missing/invalid parameters |
| 402 | insufficient_credits | Credit balance exhausted | 402 · credits exhausted |
| 403 | invalid_api_key | Unknown or revoked API key | 403 · invalid API key |
| 429 | rate_limit_exceeded | 10 req/min (demo) · 60 req/min (registered key) | 429 · rate limit exceeded |
| 5xx | error | Processing failure — retry with backoff | 5xx · internal error |
Try an error yourself
Send X-Api-Key: bgr_live_invalid and you'll receive exactly this body:
HTTP/1.1 403 Forbidden
{"errors":[{"title":"Invalid or revoked API key.","detail":"Invalid or revoked API key.","code":"invalid_api_key"}]}