API Endpoint Access URL
https://api.pixlab.io/bgremove
Get Your API Key & Try BGREMOVE Now ↗Description
The Background Remover API (BG-REMOVE) lets developers programmatically remove image backgrounds from photos, product shots, and video frames with a single REST call. The endpoint detects the foreground subject, separates it from the scene, and returns an output image ready for transparent PNG workflows or downstream media processing.
Built for automated image processing pipelines, BG-REMOVE uses deep learning segmentation models to avoid manual masks, pixel selection, and editor-side cleanup. Use it for e-commerce catalog preparation, profile photo editors, creative tools, marketplace uploads, batch media processing, and server-side background removal jobs.
A typical use case is removing backgrounds from product images for online stores, enabling clean catalog visuals like the following example:
Developer Highlights:
- Simple HTTP endpoint; call it from any backend, mobile app, serverless job, or automation worker. No SDK required.
- Transparent PNG output with alpha channel support where the output format supports transparency
- Works for single images, batch jobs, and uploaded media pipelines
- Designed for unattended processing: send an image URL or upload a file and consume JSON output
The BG-REMOVE API endpoint supports single-image and batch processing, varying resolutions, and complex background scenes. Responses can include BASE64 image data or a direct link to the output stored in your connected S3 bucket. It is the same engine that powers the PixLab Bulk Background Remover ↗ app.
To start integrating BG-REMOVE into your codebase, get an API key from the PixLab Console ↗, send your image input to the endpoint, and parse the JSON response. Ready-to-use code samples are available in the section below ↓.
Looking to remove text or watermarks from images instead? Use the TXT-REMOVE API Endpoint. Want to detect or translate visible text in your image? Try the Image Text Translation API.
HTTP Methods
GET, POST
HTTP Parameters
Required
| Fields | Type | Description |
|---|---|---|
img |
URL | Input image URL to remove the background or unwanted objects from. If you want to upload an image directly from your app, then submit a multipart/form-data POST request instead. Refer to the POST Request Data section below. |
key |
String | Your PixLab API Key ↗. You can also embed your key in the WWW-Authenticate: HTTP header and omit this parameter if you want to. |
Optional
| Fields | Type | Description |
|---|---|---|
compress |
Boolean | By default, the Background Remove API endpoint compresses JPEG output images to expedite data transfer (PNG images are lossless). Set this field to false to disable compression for JPEG images entirely. |
blob |
Boolean |
By default, the Background remove API endpoint always returns a JSON Object (see Response Details ↓) containing the BASE64 encoded image output or a direct link to the output image stored in your private AWS S3 bucket if you've already connected your S3 storage credentials from the PixLab Console ↗. However,
if this parameter is set to true, the raw image binary content is returned instead (see the Code Sample section for implementation details).
|
POST Request Body
This section details the requirements for using a POST request instead of a simple GET request.
Allowed Content-Types:
multipart/form-dataapplication/json
Use multipart/form-data to directly upload your image from you app (Refer to The PixLab Github Repository↗ for a working example). If you're using JSON, the media file must already be uploaded. Consider calling store to upload an image before invoking this endpoint.
HTTP Response
application/json
By default, the Background remover API endpoint always returns a JSON Object containing the BASE64 encoded image output or a direct link to the output image stored in your private AWS S3 bucket if you've already connected your S3 storage credentials from the PixLab Console ↗. if one the other side, the
blob parameter (documented above) is set to true, the raw image binary content is returned instead.
| Fields | Type | Description |
|---|---|---|
status |
Integer | HTTP 200 indicates success. Any other code indicates failure. |
imgData |
Base64 Data | Base64 encoded string of the output image data. |
mimeType |
String | Mime type such as image/png of the output image. |
extension |
String | Extension such as jpeg of the output image. |
link |
URL | Optionally, a direct link to the output image (instead of the imgData field) stored on your own AWS S3 bucket if you already connected your AWS S3 credentials from the PixLab Console ↗. |
error |
String |
Error description when status != 200.
|
blob |
BLOB | Optionally, the image blob data is returned instead of this JSON object if the blob parameter (documented above) is set to true. |
Code Samples
import requests
import json
import base64
import os
# Programmatically remove backgrounds from input images using the PixLab BG-REMOVE API endpoint.
#
# Refer to the official documentation at: https://pixlab.io/endpoints/background-remove-api for the API reference
# guide and more code samples.
# Use POST to upload the image directly from your local folder. If your image is publicly available
# then make a simple GET request with a link to your image.
req = requests.post(
'https://api.pixlab.io/bgremove',
files={
'file': open('./local_image.png', 'rb') # The local image we are going to remove background from
},
data={
'key': 'PIXLAB_API_KEY' # PixLab API Key - Get yours from https://console.pixlab.io/
}
)
reply = req.json()
if reply['status'] != 200:
print(reply['error'])
else:
imgData = reply['imgData'] # Base64 encoding of the output image
mimetype = reply['mimeType'] # MIME type (i.e image/jpeg, etc.) of the output image
extension = reply['extension'] # File extension (e.g., 'png', 'jpeg')
# Decode base64 and save to disk
try:
img_bytes = base64.b64decode(imgData)
output_filename = f"output_image.{extension}"
with open(output_filename, "wb") as f:
f.write(img_bytes)
print(f"Background Removed Image saved to: {output_filename}")
except Exception as e:
print(f"Error saving output image: {e}")
// Programmatically remove backgrounds from input images using the PixLab BG-REMOVE API endpoint.
//
// Refer to the official documentation at: https://pixlab.io/endpoints/background-remove-api for the API reference
// guide and more code samples.
// Use POST to upload the image directly from your local folder. If your image is publicly available
// then make a simple GET request with a link to your image.
const apiKey = 'PIXLAB_API_KEY'; // PixLab API Key - Get yours from https://console.pixlab.io/
const apiUrl = 'https://api.pixlab.io/bgremove';
const imageFile = document.querySelector('input[type="file"]'); // Assuming you have an input file element
async function removeBackground() {
if (!imageFile || !imageFile.files || !imageFile.files[0]) {
console.error('Please select an image file.');
return;
}
const file = imageFile.files[0];
const formData = new FormData();
formData.append('file', file);
formData.append('key', apiKey);
try {
const response = await fetch(apiUrl, {
method: 'POST',
body: formData,
});
const reply = await response.json();
if (reply.status !== 200) {
console.error(reply.error);
} else {
const imgData = reply.imgData; // Base64 encoding of the output image
const mimetype = reply.mimeType; // MIME type (i.e image/jpeg, etc.) of the output image
const extension = reply.extension; // File extension (e.g., 'png', 'jpeg')
// Decode base64 and save to disk
try {
const img_bytes = atob(imgData); // Decode base64
const output_filename = `output_image.${extension}`;
// Create a Blob from the base64 string
const byteCharacters = atob(imgData);
const byteArrays = [];
for (let offset = 0; offset < byteCharacters.length; offset += 512) {
const slice = byteCharacters.slice(offset, offset + 512);
const byteNumbers = new Array(slice.length);
for (let i = 0; i < slice.length; i++) {
byteNumbers[i] = slice.charCodeAt(i);
}
const byteArray = new Uint8Array(byteNumbers);
byteArrays.push(byteArray);
}
const blob = new Blob(byteArrays, {type: mimetype});
// Create a download link
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = output_filename;
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
URL.revokeObjectURL(url); // Clean up
console.log(`Background Removed Image saved to: ${output_filename}`);
} catch (e) {
console.error(`Error saving output image: ${e}`);
}
}
} catch (error) {
console.error('Error:', error);
}
}
// Example: Attach to a button click
const button = document.querySelector('#removeBackgroundButton'); // Assuming you have a button with this ID
if (button) {
button.addEventListener('click', removeBackground);
}
<?php
# Programmatically remove backgrounds from input images using the PixLab BG-REMOVE API endpoint.
#
# Refer to the official documentation at: https://pixlab.io/endpoints/background-remove-api for the API reference
# guide and more code samples.
# Use POST to upload the image directly from your local folder. If your image is publicly available
# then make a simple GET request with a link to your image.
$url = 'https://api.pixlab.io/bgremove';
$apiKey = 'PIXLAB_API_KEY'; // PixLab API Key - Get yours from https://console.pixlab.io/
$imagePath = './local_image.png'; // The local image we are going to remove background from
$outputFilename = 'output_image';
$ch = curl_init();
$postData = [
'key' => $apiKey,
'file' => new CURLFile(realpath($imagePath))
];
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$reply = json_decode($response, true);
if ($reply['status'] != 200) {
echo $reply['error'] . PHP_EOL;
} else {
$imgData = $reply['imgData']; // Base64 encoding of the output image
$mimeType = $reply['mimeType']; // MIME type (i.e image/jpeg, etc.) of the output image
$extension = $reply['extension']; // File extension (e.g., 'png', 'jpeg')
// Decode base64 and save to disk
try {
$imgBytes = base64_decode($imgData);
$outputFilename = $outputFilename . "." . $extension;
file_put_contents($outputFilename, $imgBytes);
echo "Background Removed Image saved to: " . $outputFilename . PHP_EOL;
} catch (Exception $e) {
echo "Error saving output image: " . $e->getMessage() . PHP_EOL;
}
}
require 'net/http'
require 'json'
require 'base64'
require 'uri'
# Programmatically remove backgrounds from input images using the PixLab BG-REMOVE API endpoint.
#
# Refer to the official documentation at: https://pixlab.io/endpoints/background-remove-api for the API reference
# guide and more code samples.
# Use POST to upload the image directly from your local folder. If your image is publicly available
# then make a simple GET request with a link to your image.
uri = URI('https://api.pixlab.io/bgremove')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri.path)
form_data = {
'key' => 'PIXLAB_API_KEY', # PixLab API Key - Get yours from https://console.pixlab.io/
'file' => File.open('./local_image.png')
}
request.set_form(form_data, 'multipart/form-data')
response = http.request(request)
reply = JSON.parse(response.body)
if reply['status'] != 200
puts reply['error']
else
img_data = reply['imgData'] # Base64 encoding of the output image
mimetype = reply['mimeType'] # MIME type (i.e image/jpeg, etc.) of the output image
extension = reply['extension'] # File extension (e.g., 'png', 'jpeg')
# Decode base64 and save to disk
begin
img_bytes = Base64.decode64(img_data)
output_filename = "output_image.#{extension}"
File.open(output_filename, "wb") do |f|
f.write(img_bytes)
end
puts "Background Removed Image saved to: #{output_filename}"
rescue => e
puts "Error saving output image: #{e}"
end
end
Similar API Endpoints
tagimg, nsfw, describe, docscan, llm-parse, docscan, text-watermark-remove, image-text-translate, facelookup ↗, faceverify ↗, img-embed, query