Migration guide

LassoCut: move off the remove.bg API before 1 December 2026

remove.bg closes on 1 December 2026 (website and accounts at 09:00 CET). The self-service API stops accepting requests from 1 December 2026, and the plugins are discontinued on 1 December 2026.

Dates and Enterprise contracts (which continue): remove.bg FAQ. Reported in early September 2026 (Bitvoxy, 3 September 2026). What exactly shuts down?

LassoCut is compatible with the remove.bg API: change the base URL and the key, and your existing requests keep working, with the same endpoint, parameters and error codes.

  • Endpoint: POST https://api.lassocut.com/v1.0/removebg
  • Authentication: the same X-Api-Key header
  • 50 free previews a month (up to 10 a day) on every account
  • No subscription; purchased credits never expire

Last updated 27 September 2026.

Change one URL

- https://api.remove.bg/v1.0/
+ https://api.lassocut.com/v1.0/
  1. Get a LassoCut key. Sign in with GitHub or Google in your account and create a key.
  2. Replace the base URL. https://api.remove.bg/v1.0/ becomes https://api.lassocut.com/v1.0/.
  3. Replace the key. It still goes in the X-Api-Key header. Paths, form fields, JSON bodies and response formats do not change.

Compatibility, parameter by parameter

Each row is a part of the remove.bg API v1.0. The LassoCut column lists what the LassoCut API accepts today. The Leonardo.Ai column is the path remove.bg points self-service API customers to; it comes from Leonardo's own migration guide, read on 27 September 2026. Where Leonardo keeps a parameter, it moves inside a JSON parameters object. "Not documented" means that guide does not say.

remove.bg API v1.0LassoCutLeonardo.Ai
Endpoint POST /v1.0/removebgSame pathDifferent: POST /api/rest/v2/generationssync
Auth X-Api-KeySame headerNo: Authorization: Bearer
image_file (multipart)YesNo: JSON only (base64, or a separate upload endpoint)
image_urlYesMoved: guidances.image_reference (URL)
image_file_b64YesMoved: guidances.image_reference (BASE64)
sizeYesYes, under parameters
typeYesYes, under parameters
format auto, png, jpg, webp, zipAll fivepng, jpg, webp; no auto, no zip
bg_colorYesYes, under parameters
bg_image_url, bg_image_fileBothbg_image_file: no; bg_image_url: moved to guidances.background_image_reference
crop, crop_marginYesYes, under parameters
scale, positionYesYes, under parameters
channels rgba, alphaYesYes, under parameters
Raw image bytes in the responseYes (or JSON with Accept: application/json)No: always JSON (URL or base64)
Headers X-Credits-Charged, X-Type, X-Width, X-HeightYes, plus X-Foreground-*No: cost is in a cost object, width and height in the JSON body; no X-Type or foreground position
GET /v1.0/accountYes, same response shapeNot documented
POST /v1.0/improveYesNo

LassoCut also accepts roi, type_level, semitransparency, add_shadow, shadow_type and shadow_opacity, the legacy size names (small, regular, medium, hd, 4k), and returns rate-limit headers and 429 with Retry-After. See the API reference.

Before and after: only the URL and the key change

The curl, Python and Node examples were run against the production API on 27 September 2026 and returned a PNG.

curl

Before

curl -H "X-Api-Key: $REMOVE_BG_API_KEY" \
     -F "image_file=@photo.jpg" \
     -F "size=auto" \
     -o no-bg.png \
     https://api.remove.bg/v1.0/removebg

After

curl -H "X-Api-Key: $LASSOCUT_API_KEY" \
     -F "image_file=@photo.jpg" \
     -F "size=auto" \
     -o no-bg.png \
     https://api.lassocut.com/v1.0/removebg

Python (requests)

Before

import os, requests

r = requests.post(
    "https://api.remove.bg/v1.0/removebg",
    headers={"X-Api-Key": os.environ["REMOVE_BG_API_KEY"]},
    files={"image_file": open("photo.jpg", "rb")},
    data={"size": "auto"},
)
r.raise_for_status()
open("no-bg.png", "wb").write(r.content)
print("credits charged:", r.headers["X-Credits-Charged"])

After

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": "auto"},
)
r.raise_for_status()
open("no-bg.png", "wb").write(r.content)
print("credits charged:", r.headers["X-Credits-Charged"])

Or with the official package: lassocut

Python 3.10 or later, no dependencies, retries on temporary errors.

pip install lassocut
from lassocut import LassoCut

client = LassoCut()   # reads LASSOCUT_API_KEY
result = client.remove_background("photo.jpg", size="preview")
result.save("no-bg.png")
print("credits charged:", result.credits_charged)

Node.js (18 or later, fetch)

Before

import { readFile, writeFile } from "node:fs/promises";

const form = new FormData();
form.append("image_file", new Blob([await readFile("photo.jpg")]), "photo.jpg");
form.append("size", "auto");

const res = await fetch("https://api.remove.bg/v1.0/removebg", {
  method: "POST",
  headers: { "X-Api-Key": process.env.REMOVE_BG_API_KEY },
  body: form,
});
if (!res.ok) throw new Error(JSON.stringify(await res.json()));
await writeFile("no-bg.png", Buffer.from(await res.arrayBuffer()));

After

import { readFile, writeFile } from "node:fs/promises";

const form = new FormData();
form.append("image_file", new Blob([await readFile("photo.jpg")]), "photo.jpg");
form.append("size", "auto");

const res = await fetch("https://api.lassocut.com/v1.0/removebg", {
  method: "POST",
  headers: { "X-Api-Key": process.env.LASSOCUT_API_KEY },
  body: form,
});
if (!res.ok) throw new Error(JSON.stringify(await res.json()));
await writeFile("no-bg.png", Buffer.from(await res.arrayBuffer()));

PHP (cURL)

Before

$ch = curl_init("https://api.remove.bg/v1.0/removebg");
curl_setopt_array($ch, [
    CURLOPT_HTTPHEADER => ["X-Api-Key: " . getenv("REMOVE_BG_API_KEY")],
    CURLOPT_POSTFIELDS => ["image_file" => new CURLFile("photo.jpg"), "size" => "auto"],
    CURLOPT_RETURNTRANSFER => true,
]);
file_put_contents("no-bg.png", curl_exec($ch));

After

$ch = curl_init("https://api.lassocut.com/v1.0/removebg");
curl_setopt_array($ch, [
    CURLOPT_HTTPHEADER => ["X-Api-Key: " . getenv("LASSOCUT_API_KEY")],
    CURLOPT_POSTFIELDS => ["image_file" => new CURLFile("photo.jpg"), "size" => "auto"],
    CURLOPT_RETURNTRANSFER => true,
]);
file_put_contents("no-bg.png", curl_exec($ch));

Check your balance

curl -H "X-Api-Key: $LASSOCUT_API_KEY" https://api.lassocut.com/v1.0/account

The response has the same shape as before: data.attributes.credits and data.attributes.api.free_calls.

Full walkthroughs: curl, Python, Node.js, PHP.

Libraries and the CLI

Python: removebg package

The endpoint is a module constant; set it once before creating the client.

import removebg.removebg
removebg.removebg.API_ENDPOINT = "https://api.lassocut.com/v1.0/removebg"

from removebg import RemoveBg
RemoveBg(LASSOCUT_API_KEY, "errors.log").remove_background_from_img_file("photo.jpg")

PHP: mtownsend/remove-bg

The endpoint is a public property of the client.

$removebg = new \Mtownsend\RemoveBg\RemoveBg($lassocutApiKey);
$removebg->endpoint = 'https://api.lassocut.com/v1.0/removebg';
$removebg->file('photo.jpg')->save('no-bg.png');

Command line: the LassoCut CLI

Same flags as the remove.bg command-line tool, results keep the -removebg suffix, and REMOVE_BG_API_KEY is still read. Needs Node.js 18 or later. Details in the CLI guide.

export LASSOCUT_API_KEY=your-key
npm install -g lassocut-cli
lassocut --output-directory out/ photos/

Source and full flag list: github.com/jaupin94/lassocut-cli.

Node.js: remove.bg package

Its address is built in. Call the API with fetch as shown above; it takes a few lines.

Plugins that stop on 1 December

remove.bg's plugins are discontinued on the same day (remove.bg FAQ), and third-party plugins that call the remove.bg API stop working with it. LassoCut has its own plugins for these tools, all on one account and one balance of credits:

  • Photoshop: the cut-out is added as a new layer.
  • Figma: works in place in Figma, FigJam and Figma Slides.
  • WordPress and WooCommerce: Media Library and product images, originals kept.
  • GIMP 3: the cut-out is added as a new layer.
  • n8n: a node verified by n8n, or your HTTP Request node with the new URL and key.
  • Zapier: removes the background in any Zap and returns a file.
  • Make: an OAuth app with one Remove Background module, or your HTTP module with the new URL and key.

Using the remove.bg desktop app or command-line tool? See the desktop app guide and the CLI guide. All tools are on the platforms page.

Credits that never expire

LassoCut has no subscription. You buy credits when you need them, and purchased credits never expire while your account is open. 1 credit = 1 full-size image; a preview costs 0.25 credit, and every account gets 50 free previews a month (up to 10 a day).

Packs: 100 credits for $9, 1,000 for $39 ($0.039 per image), 10,000 for $249 ($0.0249 per image) and 100,000 for $1,500 ($0.015 per image). See pricing, with a cost table for 1,000 to 100,000 images.

For comparison, Leonardo.Ai charges $0.1047 per image for background removal (Leonardo's migration guide, read on 27 September 2026).

Unused remove.bg pay-as-you-go credits expire on 1 December 2026 and cannot be used on LassoCut (remove.bg FAQ).

What is different

  • Shadows. add_shadow and shadow_type are accepted. The drop shadow and the cast shadow (also what 3D and auto give) are drawn; the car style is not drawn yet.
  • LassoCut extras. The preset parameter frames the result for Amazon, eBay, Etsy, Shopify, Zalando or Instagram and checks it, GET /v1.0/presets lists the live values, POST /v1.0/compose re-finishes a cut-out for free, and shadow_type=cast adds a cast shadow. See marketplace presets.
  • The cut-out itself. Our models are not remove.bg's, so edges will not be pixel-identical. Test a sample of your own images before switching production traffic.
  • Detected type. With type=auto, X-Type comes from our own classifier and can disagree with what you saw before on borderline images.
  • Existing credits. remove.bg credits cannot be used on LassoCut.

Questions

Is LassoCut part of remove.bg?

No. LassoCut is an independent service operated by JAUPIN Design LLC. It implements the publicly documented remove.bg API so existing code keeps working.

Why not move to Leonardo.Ai?

You can. According to Leonardo's migration guide, its API uses a different endpoint, a Bearer token and JSON-only requests, with no multipart upload, no ZIP output and no format=auto, so the calls have to be rewritten. With LassoCut, the existing calls keep working after the URL and key change.

Compare alternatives: the remove.bg alternatives guide and the background removal API guide.

Does the remove.bg Enterprise API stop too?

No. According to the remove.bg FAQ, Enterprise API contracts are not affected. The self-service API stops on 1 December 2026.

Do you keep my images?

No. Images sent to /removebg are processed in memory and discarded. Only images you send yourself to /improve are kept, to improve the models.

Something doesn't match?

Send the request and the response you got to contact@lassocut.com. Compatibility bugs are fixed first.