What the remove.bg shutdown means for your API integration
If your product, script or plugin calls api.remove.bg, that call stops working on 1 December 2026. Here is what closes and when, with a source for each point, what the official path asks you to change, and how to move with only a new base URL and a new key.
What stops, and when
Everything in this section comes from the remove.bg FAQ, read on 27 September 2026. The closure was first reported in early September 2026 (Bitvoxy, 3 September 2026).
- The self-service API stops accepting requests from 1 December 2026.
- The website and accounts are no longer available from 1 December 2026 at 09:00 CET.
- The Photoshop plugin and the other plugins and integrations are discontinued on the same date.
- Enterprise API contracts are not affected and continue as normal.
- Unused pay-as-you-go credits expire on 1 December 2026. Invoices and usage reports have to be exported from the Account page before that date.
The FAQ sends self-service API customers to Leonardo.Ai, which, like remove.bg, belongs to Canva. The full summary, with subscriptions and refunds, is on our remove.bg shutdown page.
First, list everything that calls the API
The API key is often used in more places than the main codebase. Before you choose where to move, search for api.remove.bg and for the key's environment variable in:
- your own services, background jobs and serverless functions;
- third-party client libraries (npm, PyPI, Composer, RubyGems packages that wrap the remove.bg API);
- the remove.bg command-line tool in shell scripts and CI jobs;
- design and CMS plugins (Photoshop, Figma, GIMP, WordPress);
- automations in Zapier, Make or n8n.
Plugins and automations are covered by the platforms page. The rest of this article is about code.
The official path: Leonardo.Ai, with a rewrite
Leonardo's own guide, “Migrate from the remove.bg API” (read on 27 September 2026), lists what changes for existing code:
- a different endpoint,
POST https://cloud.leonardo.ai/api/rest/v2/generationssync; Authorization: Bearerinstead of theX-Api-Keyheader;- JSON requests only, with no multipart upload, and the image moves under
guidances; - responses are always JSON (a URL or base64), never raw image bytes;
- no
format=zip, noformat=autoand nobg_image_file; - the cost is in a
costobject in the body instead of theX-Credits-Chargedheader; - results are kept in your Leonardo library unless you set
"ephemeral": true.
The same guide gives a price of $0.1047 per image for background removal. None of this is a problem if you were planning a rewrite anyway; if not, it is a change to the request, the authentication and the response handling of every call.
The other path: change the URL and the key
LassoCut is compatible with the remove.bg API: the same /v1.0/removebg path, the same form fields and JSON bodies, the same X-Api-Key header and the same response formats, including raw image bytes, ZIP output and X-Credits-Charged. For a curl call, two things change:
- curl -H "X-Api-Key: $REMOVE_BG_API_KEY" -F "image_file=@photo.jpg" -o no-bg.png https://api.remove.bg/v1.0/removebg + curl -H "X-Api-Key: $LASSOCUT_API_KEY" -F "image_file=@photo.jpg" -o no-bg.png https://api.lassocut.com/v1.0/removebg
The same request in Python, with requests, taken from the Python guide:
import os, requests
r = requests.post(
"https://api.lassocut.com/v1.0/removebg",
headers={"X-Api-Key": os.environ["LASSOCUT_API_KEY"]},
files={"image_file": open("photo.jpg", "rb")},
data={"size": "preview"},
)
r.raise_for_status()
open("no-bg.png", "wb").write(r.content)
print("credits charged:", r.headers["X-Credits-Charged"])
This exact request was run against the production API on 27 September 2026 and returned a valid PNG. size=preview uses the free previews; switch to size=full or size=auto once you are happy with the results.
If you use the third-party removebg package from PyPI, you don't even touch the calls: override its endpoint constant before creating the client (checked in the package's source on GitHub on 27 September 2026, see the Python guide):
import os
import removebg.removebg
removebg.removebg.API_ENDPOINT = "https://api.lassocut.com/v1.0/removebg"
from removebg import RemoveBg
RemoveBg(os.environ["LASSOCUT_API_KEY"], "errors.log").remove_background_from_img_file("photo.jpg")
The migration, step by step
- Create a LassoCut key. Sign in with GitHub or Google on the account page and create an API key.
- Replace the base URL.
https://api.remove.bg/v1.0/becomeshttps://api.lassocut.com/v1.0/. Keep it in configuration, not in code, so the next change is a setting. - Replace the key. It still goes in the
X-Api-Keyheader. Store it in a new environment variable so both keys can live side by side during the test. - Test on your own images. Send a sample that looks like your real traffic with
size=preview: every account gets 50 free previews a month (up to 10 a day). - Check the details your code reads. Status codes, the JSON error format and headers such as
X-Credits-Charged,X-WidthandX-Heightare the same; a 429 comes withRetry-After. - Switch production before 1 December, and keep the remove.bg key only until you have exported your invoices.
What is not the same
- remove.bg credits cannot be used on LassoCut. LassoCut sells its own credit packs: no subscription, and purchased credits do not expire.
- The
carand3Dshadow types are accepted but not drawn yet; the drop shadow is. - LassoCut adds a few things of its own, such as a free
GET /v1.0/account, rate-limit headers and theIdempotency-Keyheader, so a retried job is not charged twice.
The migration guide compares the remove.bg API, LassoCut and Leonardo.Ai parameter by parameter. If you are building something new rather than moving old code, the developers page covers costs, limits and retries.
Try it before you switch
Drop an image on the home page to see the result without a key, then create an account for 50 free previews a month (up to 10 a day) and point one request at api.lassocut.com.