Remove Background
Removes the background from an image. Upload the image as multipart/form-data in the image field (or send JSON with image_url / image_base64). Returns the processed image directly, or JSON when response=json.
Request
Send the image file in image. All other fields are optional.
png (default), webp or jpg. #FFFFFF. Default: transparent (white for jpg). true trims the result to the subject. true returns the black & white cut-out mask. image (default, raw image bytes) or json (base64 + metadata). Parameters and body structure are inherited from this endpoint's definition. Changes here only apply to this test run.
1curl --request POST \
2 --url https://background-remover.p.apihiver.com/v1/remove-background \
3 --header 'Accept: application/json' \
4 --header 'X-API-Key: YOUR_API_KEY' \
5 --header 'content-type: multipart/form-data' \
6 --form image=@image.bin \
7 --form output_format=png \
8 --form crop=false \
9 --form only_mask=false \
10 --form response=imageRemove Background: Background Remover API reference
Removes the background from an image. Upload the image as multipart/form-data in the `image` field (or send JSON with `image_url` / `image_base64`). Returns the processed image directly, or JSON when `response=json`. This endpoint is part of the Background Remover API: Remove image backgrounds in one call — transparent PNG/WebP cut-outs or a solid-colour background, from a file, URL or base64.
Remove Background: example requests in every language
POST /v1/remove-background in Shell (cURL)
curl --request POST \
--url https://background-remover.p.apihiver.com/v1/remove-background \
--header 'Accept: application/json' \
--header 'X-API-Key: YOUR_API_KEY' \
--header 'content-type: multipart/form-data' \
--form [email protected] \
--form output_format=png \
--form crop=false \
--form only_mask=false \
--form response=imagePOST /v1/remove-background in Shell (HTTPie)
echo '-----011000010111000001101001
Content-Disposition: form-data; name="image"; filename="image.bin"
Content-Type: multipart/form-data
-----011000010111000001101001
Content-Disposition: form-data; name="output_format"
png
-----011000010111000001101001
Content-Disposition: form-data; name="crop"
false
-----011000010111000001101001
Content-Disposition: form-data; name="only_mask"
false
-----011000010111000001101001
Content-Disposition: form-data; name="response"
image
-----011000010111000001101001--
' | \
http POST https://background-remover.p.apihiver.com/v1/remove-background \
Accept:application/json \
X-API-Key:YOUR_API_KEY \
content-type:'multipart/form-data; boundary=---011000010111000001101001'POST /v1/remove-background in Shell (Wget)
wget --quiet \
--method POST \
--header 'Accept: application/json' \
--header 'X-API-Key: YOUR_API_KEY' \
--header 'content-type: multipart/form-data; boundary=---011000010111000001101001' \
--body-data '-----011000010111000001101001\r\nContent-Disposition: form-data; name="image"; filename="image.bin"\r\nContent-Type: multipart/form-data\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name="output_format"\r\n\r\npng\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name="crop"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name="only_mask"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name="response"\r\n\r\nimage\r\n-----011000010111000001101001--\r\n' \
--output-document \
- https://background-remover.p.apihiver.com/v1/remove-backgroundPOST /v1/remove-background in Node.js (http)
const http = require('https');
const options = {
method: 'POST',
hostname: 'background-remover.p.apihiver.com',
port: null,
path: '/v1/remove-background',
headers: {
Accept: 'application/json',
'X-API-Key': 'YOUR_API_KEY',
'content-type': 'multipart/form-data; boundary=---011000010111000001101001'
}
};
const req = http.request(options, function (res) {
const chunks = [];
res.on('data', function (chunk) {
chunks.push(chunk);
});
res.on('end', function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.write('-----011000010111000001101001\r\nContent-Disposition: form-data; name="image"; filename="image.bin"\r\nContent-Type: multipart/form-data\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name="output_format"\r\n\r\npng\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name="crop"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name="only_mask"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name="response"\r\n\r\nimage\r\n-----011000010111000001101001--\r\n');
req.end();POST /v1/remove-background in Node.js (Request)
const fs = require('fs');
const request = require('request');
const options = {
method: 'POST',
url: 'https://background-remover.p.apihiver.com/v1/remove-background',
headers: {
Accept: 'application/json',
'X-API-Key': 'YOUR_API_KEY',
'content-type': 'multipart/form-data; boundary=---011000010111000001101001'
},
formData: {
image: {
value: fs.createReadStream('image.bin'),
options: {filename: 'image.bin', contentType: 'multipart/form-data'}
},
output_format: 'png',
crop: 'false',
only_mask: 'false',
response: 'image'
}
};
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});POST /v1/remove-background in Node.js (Unirest)
const fs = require('fs');
const unirest = require('unirest');
const req = unirest('POST', 'https://background-remover.p.apihiver.com/v1/remove-background');
req.headers({
Accept: 'application/json',
'X-API-Key': 'YOUR_API_KEY',
'content-type': 'multipart/form-data; boundary=---011000010111000001101001'
});
req.multipart([
{
body: fs.createReadStream('image.bin'),
'content-type': 'multipart/form-data'
},
{
body: 'png'
},
{
body: 'false'
},
{
body: 'false'
},
{
body: 'image'
}
]);
req.end(function (res) {
if (res.error) throw new Error(res.error);
console.log(res.body);
});POST /v1/remove-background in Node.js (Axios)
const axios = require('axios').default;
const options = {
method: 'POST',
url: 'https://background-remover.p.apihiver.com/v1/remove-background',
headers: {
Accept: 'application/json',
'X-API-Key': 'YOUR_API_KEY',
'content-type': 'multipart/form-data; boundary=---011000010111000001101001'
},
data: '-----011000010111000001101001\r\nContent-Disposition: form-data; name="image"; filename="image.bin"\r\nContent-Type: multipart/form-data\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name="output_format"\r\n\r\npng\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name="crop"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name="only_mask"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name="response"\r\n\r\nimage\r\n-----011000010111000001101001--\r\n'
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}POST /v1/remove-background in Node.js (Fetch)
const fs = require('fs');
const FormData = require('form-data');
const fetch = require('node-fetch');
const formData = new FormData();
formData.append('image', fs.createReadStream('image.bin'));
formData.append('output_format', 'png');
formData.append('crop', 'false');
formData.append('only_mask', 'false');
formData.append('response', 'image');
const url = 'https://background-remover.p.apihiver.com/v1/remove-background';
const options = {
method: 'POST',
headers: {Accept: 'application/json', 'X-API-Key': 'YOUR_API_KEY'}
};
options.body = formData;
try {
const response = await fetch(url, options);
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}POST /v1/remove-background in JavaScript (XMLHttpRequest)
const data = new FormData();
data.append('image', 'image.bin');
data.append('output_format', 'png');
data.append('crop', 'false');
data.append('only_mask', 'false');
data.append('response', 'image');
const xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener('readystatechange', function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open('POST', 'https://background-remover.p.apihiver.com/v1/remove-background');
xhr.setRequestHeader('Accept', 'application/json');
xhr.setRequestHeader('X-API-Key', 'YOUR_API_KEY');
xhr.send(data);POST /v1/remove-background in JavaScript (Axios)
import axios from 'axios';
const form = new FormData();
form.append('image', 'image.bin');
form.append('output_format', 'png');
form.append('crop', 'false');
form.append('only_mask', 'false');
form.append('response', 'image');
const options = {
method: 'POST',
url: 'https://background-remover.p.apihiver.com/v1/remove-background',
headers: {
Accept: 'application/json',
'X-API-Key': 'YOUR_API_KEY',
'content-type': 'multipart/form-data; boundary=---011000010111000001101001'
},
data: '[form]'
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}POST /v1/remove-background in JavaScript (Fetch)
const url = 'https://background-remover.p.apihiver.com/v1/remove-background';
const form = new FormData();
form.append('image', 'image.bin');
form.append('output_format', 'png');
form.append('crop', 'false');
form.append('only_mask', 'false');
form.append('response', 'image');
const options = {
method: 'POST',
headers: {Accept: 'application/json', 'X-API-Key': 'YOUR_API_KEY'}
};
options.body = form;
try {
const response = await fetch(url, options);
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}POST /v1/remove-background in JavaScript (jQuery)
const form = new FormData();
form.append('image', 'image.bin');
form.append('output_format', 'png');
form.append('crop', 'false');
form.append('only_mask', 'false');
form.append('response', 'image');
const settings = {
async: true,
crossDomain: true,
url: 'https://background-remover.p.apihiver.com/v1/remove-background',
method: 'POST',
headers: {
Accept: 'application/json',
'X-API-Key': 'YOUR_API_KEY'
},
processData: false,
contentType: false,
mimeType: 'multipart/form-data',
data: form
};
$.ajax(settings).done(function (response) {
console.log(response);
});POST /v1/remove-background in Python (http.client)
import http.client
conn = http.client.HTTPSConnection("background-remover.p.apihiver.com")
payload = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"image\"; filename=\"image.bin\"\r\nContent-Type: multipart/form-data\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"output_format\"\r\n\r\npng\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"crop\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"only_mask\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"response\"\r\n\r\nimage\r\n-----011000010111000001101001--\r\n"
headers = {
'Accept': "application/json",
'X-API-Key': "YOUR_API_KEY",
'content-type': "multipart/form-data; boundary=---011000010111000001101001"
}
conn.request("POST", "/v1/remove-background", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))POST /v1/remove-background in Python (Requests)
import requests
url = "https://background-remover.p.apihiver.com/v1/remove-background"
files = { "image": "open('image.bin', 'rb')" }
payload = {
"output_format": "png",
"crop": "false",
"only_mask": "false",
"response": "image"
}
headers = {
"Accept": "application/json",
"X-API-Key": "YOUR_API_KEY"
}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.json())POST /v1/remove-background in PHP (cURL)
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://background-remover.p.apihiver.com/v1/remove-background",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"image\"; filename=\"image.bin\"\r\nContent-Type: multipart/form-data\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"output_format\"\r\n\r\npng\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"crop\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"only_mask\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"response\"\r\n\r\nimage\r\n-----011000010111000001101001--\r\n",
CURLOPT_HTTPHEADER => [
"Accept: application/json",
"X-API-Key: YOUR_API_KEY",
"content-type: multipart/form-data; boundary=---011000010111000001101001"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}POST /v1/remove-background in PHP (Guzzle)
<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://background-remover.p.apihiver.com/v1/remove-background', [
'multipart' => [
[
'name' => 'image',
'filename' => 'image.bin',
'contents' => null,
'headers' => [
'Content-Type' => 'multipart/form-data'
]
],
[
'name' => 'output_format',
'contents' => 'png'
],
[
'name' => 'crop',
'contents' => 'false'
],
[
'name' => 'only_mask',
'contents' => 'false'
],
[
'name' => 'response',
'contents' => 'image'
]
]
'headers' => [
'Accept' => 'application/json',
'X-API-Key' => 'YOUR_API_KEY',
],
]);
echo $response->getBody();POST /v1/remove-background in PHP (PECL HTTP v1)
<?php
$request = new HttpRequest();
$request->setUrl('https://background-remover.p.apihiver.com/v1/remove-background');
$request->setMethod(HTTP_METH_POST);
$request->setHeaders([
'Accept' => 'application/json',
'X-API-Key' => 'YOUR_API_KEY',
'content-type' => 'multipart/form-data; boundary=---011000010111000001101001'
]);
$request->setBody('-----011000010111000001101001
Content-Disposition: form-data; name="image"; filename="image.bin"
Content-Type: multipart/form-data
-----011000010111000001101001
Content-Disposition: form-data; name="output_format"
png
-----011000010111000001101001
Content-Disposition: form-data; name="crop"
false
-----011000010111000001101001
Content-Disposition: form-data; name="only_mask"
false
-----011000010111000001101001
Content-Disposition: form-data; name="response"
image
-----011000010111000001101001--
');
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}POST /v1/remove-background in PHP (PECL HTTP v2)
<?php
$client = new http\Client;
$request = new http\Client\Request;
$body = new http\Message\Body;
$body->addForm([
'output_format' => 'png',
'crop' => 'false',
'only_mask' => 'false',
'response' => 'image'
], [
[
'name' => 'image',
'type' => 'multipart/form-data',
'file' => 'image.bin',
'data' => null
]
]);
$request->setRequestUrl('https://background-remover.p.apihiver.com/v1/remove-background');
$request->setRequestMethod('POST');
$request->setBody($body);
$request->setHeaders([
'Accept' => 'application/json',
'X-API-Key' => 'YOUR_API_KEY'
]);
$client->enqueue($request)->send();
$response = $client->getResponse();
echo $response->getBody();POST /v1/remove-background in Java (AsyncHttp)
AsyncHttpClient client = new DefaultAsyncHttpClient();
client.prepare("POST", "https://background-remover.p.apihiver.com/v1/remove-background")
.setHeader("Accept", "application/json")
.setHeader("X-API-Key", "YOUR_API_KEY")
.setHeader("content-type", "multipart/form-data; boundary=---011000010111000001101001")
.setBody("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"image\"; filename=\"image.bin\"\r\nContent-Type: multipart/form-data\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"output_format\"\r\n\r\npng\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"crop\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"only_mask\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"response\"\r\n\r\nimage\r\n-----011000010111000001101001--\r\n")
.execute()
.toCompletableFuture()
.thenAccept(System.out::println)
.join();
client.close();POST /v1/remove-background in Java (java.net.http)
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://background-remover.p.apihiver.com/v1/remove-background"))
.header("Accept", "application/json")
.header("X-API-Key", "YOUR_API_KEY")
.header("content-type", "multipart/form-data; boundary=---011000010111000001101001")
.method("POST", HttpRequest.BodyPublishers.ofString("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"image\"; filename=\"image.bin\"\r\nContent-Type: multipart/form-data\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"output_format\"\r\n\r\npng\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"crop\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"only_mask\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"response\"\r\n\r\nimage\r\n-----011000010111000001101001--\r\n"))
.build();
HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());POST /v1/remove-background in Java (OkHttp)
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("multipart/form-data; boundary=---011000010111000001101001");
RequestBody body = RequestBody.create(mediaType, "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"image\"; filename=\"image.bin\"\r\nContent-Type: multipart/form-data\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"output_format\"\r\n\r\npng\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"crop\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"only_mask\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"response\"\r\n\r\nimage\r\n-----011000010111000001101001--\r\n");
Request request = new Request.Builder()
.url("https://background-remover.p.apihiver.com/v1/remove-background")
.post(body)
.addHeader("Accept", "application/json")
.addHeader("X-API-Key", "YOUR_API_KEY")
.addHeader("content-type", "multipart/form-data; boundary=---011000010111000001101001")
.build();
Response response = client.newCall(request).execute();POST /v1/remove-background in Java (Unirest)
HttpResponse<String> response = Unirest.post("https://background-remover.p.apihiver.com/v1/remove-background")
.header("Accept", "application/json")
.header("X-API-Key", "YOUR_API_KEY")
.header("content-type", "multipart/form-data; boundary=---011000010111000001101001")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"image\"; filename=\"image.bin\"\r\nContent-Type: multipart/form-data\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"output_format\"\r\n\r\npng\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"crop\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"only_mask\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"response\"\r\n\r\nimage\r\n-----011000010111000001101001--\r\n")
.asString();POST /v1/remove-background in C# (HttpClient)
using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = new Uri("https://background-remover.p.apihiver.com/v1/remove-background"),
Headers =
{
{ "Accept", "application/json" },
{ "X-API-Key", "YOUR_API_KEY" },
},
Content = new MultipartFormDataContent
{
new StringContent("")
{
Headers =
{
ContentType = new MediaTypeHeaderValue("multipart/form-data"),
ContentDisposition = new ContentDispositionHeaderValue("form-data")
{
Name = "image",
FileName = "image.bin",
}
}
},
new StringContent("png")
{
Headers =
{
ContentDisposition = new ContentDispositionHeaderValue("form-data")
{
Name = "output_format",
}
}
},
new StringContent("false")
{
Headers =
{
ContentDisposition = new ContentDispositionHeaderValue("form-data")
{
Name = "crop",
}
}
},
new StringContent("false")
{
Headers =
{
ContentDisposition = new ContentDispositionHeaderValue("form-data")
{
Name = "only_mask",
}
}
},
new StringContent("image")
{
Headers =
{
ContentDisposition = new ContentDispositionHeaderValue("form-data")
{
Name = "response",
}
}
},
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}POST /v1/remove-background in C# (RestSharp)
var client = new RestClient("https://background-remover.p.apihiver.com/v1/remove-background");
var request = new RestRequest("", Method.Post);
request.AddHeader("Accept", "application/json");
request.AddHeader("X-API-Key", "YOUR_API_KEY");
request.AddHeader("content-type", "multipart/form-data; boundary=---011000010111000001101001");
request.AddParameter("multipart/form-data; boundary=---011000010111000001101001", "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"image\"; filename=\"image.bin\"\r\nContent-Type: multipart/form-data\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"output_format\"\r\n\r\npng\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"crop\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"only_mask\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"response\"\r\n\r\nimage\r\n-----011000010111000001101001--\r\n", ParameterType.RequestBody);
var response = client.Execute(request);POST /v1/remove-background in Go (NewRequest)
package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://background-remover.p.apihiver.com/v1/remove-background"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"image\"; filename=\"image.bin\"\r\nContent-Type: multipart/form-data\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"output_format\"\r\n\r\npng\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"crop\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"only_mask\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"response\"\r\n\r\nimage\r\n-----011000010111000001101001--\r\n")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Accept", "application/json")
req.Header.Add("X-API-Key", "YOUR_API_KEY")
req.Header.Add("content-type", "multipart/form-data; boundary=---011000010111000001101001")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}POST /v1/remove-background in Ruby (net::http)
require 'uri'
require 'net/http'
url = URI("https://background-remover.p.apihiver.com/v1/remove-background")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Accept"] = 'application/json'
request["X-API-Key"] = 'YOUR_API_KEY'
request["content-type"] = 'multipart/form-data; boundary=---011000010111000001101001'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"image\"; filename=\"image.bin\"\r\nContent-Type: multipart/form-data\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"output_format\"\r\n\r\npng\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"crop\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"only_mask\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"response\"\r\n\r\nimage\r\n-----011000010111000001101001--\r\n"
response = http.request(request)
puts response.read_bodyPOST /v1/remove-background in Swift (NSURLSession)
import Foundation
let headers = [
"Accept": "application/json",
"X-API-Key": "YOUR_API_KEY",
"content-type": "multipart/form-data; boundary=---011000010111000001101001"
]
let parameters = [
[
"name": "image",
"fileName": "image.bin",
"contentType": "multipart/form-data"
],
[
"name": "output_format",
"value": "png"
],
[
"name": "crop",
"value": "false"
],
[
"name": "only_mask",
"value": "false"
],
[
"name": "response",
"value": "image"
]
]
let boundary = "---011000010111000001101001"
var body = ""
var error: NSError? = nil
for param in parameters {
let paramName = param["name"]!
body += "--\(boundary)\r\n"
body += "Content-Disposition:form-data; name=\"\(paramName)\""
if let filename = param["fileName"] {
let contentType = param["content-type"]!
let fileContent = String(contentsOfFile: filename, encoding: String.Encoding.utf8)
if (error != nil) {
print(error as Any)
}
body += "; filename=\"\(filename)\"\r\n"
body += "Content-Type: \(contentType)\r\n\r\n"
body += fileContent
} else if let paramValue = param["value"] {
body += "\r\n\r\n\(paramValue)"
}
}
let request = NSMutableURLRequest(url: NSURL(string: "https://background-remover.p.apihiver.com/v1/remove-background")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error as Any)
} else {
let httpResponse = response as? HTTPURLResponse
print(httpResponse)
}
})
dataTask.resume()POST /v1/remove-background in Objective-C (NSURLSession)
#import <Foundation/Foundation.h>
NSDictionary *headers = @{ @"Accept": @"application/json",
@"X-API-Key": @"YOUR_API_KEY",
@"content-type": @"multipart/form-data; boundary=---011000010111000001101001" };
NSArray *parameters = @[ @{ @"name": @"image", @"fileName": @"image.bin", @"contentType": @"multipart/form-data" },
@{ @"name": @"output_format", @"value": @"png" },
@{ @"name": @"crop", @"value": @"false" },
@{ @"name": @"only_mask", @"value": @"false" },
@{ @"name": @"response", @"value": @"image" } ];
NSString *boundary = @"---011000010111000001101001";
NSError *error;
NSMutableString *body = [NSMutableString string];
for (NSDictionary *param in parameters) {
[body appendFormat:@"--%@\r\n", boundary];
if (param[@"fileName"]) {
[body appendFormat:@"Content-Disposition:form-data; name=\"%@\"; filename=\"%@\"\r\n", param[@"name"], param[@"fileName"]];
[body appendFormat:@"Content-Type: %@\r\n\r\n", param[@"contentType"]];
[body appendFormat:@"%@", [NSString stringWithContentsOfFile:param[@"fileName"] encoding:NSUTF8StringEncoding error:&error]];
if (error) {
NSLog(@"%@", error);
}
} else {
[body appendFormat:@"Content-Disposition:form-data; name=\"%@\"\r\n\r\n", param[@"name"]];
[body appendFormat:@"%@", param[@"value"]];
}
}
[body appendFormat:@"\r\n--%@--\r\n", boundary];
NSData *postData = [body dataUsingEncoding:NSUTF8StringEncoding];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://background-remover.p.apihiver.com/v1/remove-background"]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:10.0];
[request setHTTPMethod:@"POST"];
[request setAllHTTPHeaderFields:headers];
[request setHTTPBody:postData];
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (error) {
NSLog(@"%@", error);
} else {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
NSLog(@"%@", httpResponse);
}
}];
[dataTask resume];POST /v1/remove-background in Kotlin (OkHttp)
val client = OkHttpClient()
val mediaType = MediaType.parse("multipart/form-data; boundary=---011000010111000001101001")
val body = RequestBody.create(mediaType, "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"image\"; filename=\"image.bin\"\r\nContent-Type: multipart/form-data\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"output_format\"\r\n\r\npng\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"crop\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"only_mask\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"response\"\r\n\r\nimage\r\n-----011000010111000001101001--\r\n")
val request = Request.Builder()
.url("https://background-remover.p.apihiver.com/v1/remove-background")
.post(body)
.addHeader("Accept", "application/json")
.addHeader("X-API-Key", "YOUR_API_KEY")
.addHeader("content-type", "multipart/form-data; boundary=---011000010111000001101001")
.build()
val response = client.newCall(request).execute()POST /v1/remove-background in C (libcurl)
CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(hnd, CURLOPT_URL, "https://background-remover.p.apihiver.com/v1/remove-background");
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Accept: application/json");
headers = curl_slist_append(headers, "X-API-Key: YOUR_API_KEY");
headers = curl_slist_append(headers, "content-type: multipart/form-data; boundary=---011000010111000001101001");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(hnd, CURLOPT_POSTFIELDS, "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"image\"; filename=\"image.bin\"\r\nContent-Type: multipart/form-data\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"output_format\"\r\n\r\npng\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"crop\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"only_mask\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"response\"\r\n\r\nimage\r\n-----011000010111000001101001--\r\n");
CURLcode ret = curl_easy_perform(hnd);POST /v1/remove-background in Clojure (clj-http)
(require '[clj-http.client :as client])
(client/post "https://background-remover.p.apihiver.com/v1/remove-background" {:headers {:X-API-Key "YOUR_API_KEY"}
:multipart [{:name "image"
:content (clojure.java.io/file "image.bin")} {:name "output_format"
:content "png"} {:name "crop"
:content "false"} {:name "only_mask"
:content "false"} {:name "response"
:content "image"}]
:accept :json})POST /v1/remove-background in OCaml (CoHTTP)
open Cohttp_lwt_unix
open Cohttp
open Lwt
let uri = Uri.of_string "https://background-remover.p.apihiver.com/v1/remove-background" in
let headers = Header.add_list (Header.init ()) [
("Accept", "application/json");
("X-API-Key", "YOUR_API_KEY");
("content-type", "multipart/form-data; boundary=---011000010111000001101001");
] in
let body = Cohttp_lwt_body.of_string "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"image\"; filename=\"image.bin\"\r\nContent-Type: multipart/form-data\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"output_format\"\r\n\r\npng\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"crop\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"only_mask\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"response\"\r\n\r\nimage\r\n-----011000010111000001101001--\r\n" in
Client.call ~headers ~body `POST uri
>>= fun (res, body_stream) ->
(* Do stuff with the result *)POST /v1/remove-background in R (httr)
library(httr)
url <- "https://background-remover.p.apihiver.com/v1/remove-background"
payload <- "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"image\"; filename=\"image.bin\"\r\nContent-Type: multipart/form-data\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"output_format\"\r\n\r\npng\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"crop\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"only_mask\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"response\"\r\n\r\nimage\r\n-----011000010111000001101001--\r\n"
encode <- "multipart"
response <- VERB("POST", url, body = payload, add_headers('X-API-Key' = 'YOUR_API_KEY'), content_type("multipart/form-data"), accept("application/json"), encode = encode)
content(response, "text")POST /v1/remove-background in PowerShell (Invoke-WebRequest)
$headers=@{}
$headers.Add("Accept", "application/json")
$headers.Add("X-API-Key", "YOUR_API_KEY")
$headers.Add("content-type", "multipart/form-data; boundary=---011000010111000001101001")
$response = Invoke-WebRequest -Uri 'https://background-remover.p.apihiver.com/v1/remove-background' -Method POST -Headers $headers -ContentType 'multipart/form-data; boundary=---011000010111000001101001' -Body '-----011000010111000001101001
Content-Disposition: form-data; name="image"; filename="image.bin"
Content-Type: multipart/form-data
-----011000010111000001101001
Content-Disposition: form-data; name="output_format"
png
-----011000010111000001101001
Content-Disposition: form-data; name="crop"
false
-----011000010111000001101001
Content-Disposition: form-data; name="only_mask"
false
-----011000010111000001101001
Content-Disposition: form-data; name="response"
image
-----011000010111000001101001--
'POST /v1/remove-background in PowerShell (Invoke-RestMethod)
$headers=@{}
$headers.Add("Accept", "application/json")
$headers.Add("X-API-Key", "YOUR_API_KEY")
$headers.Add("content-type", "multipart/form-data; boundary=---011000010111000001101001")
$response = Invoke-RestMethod -Uri 'https://background-remover.p.apihiver.com/v1/remove-background' -Method POST -Headers $headers -ContentType 'multipart/form-data; boundary=---011000010111000001101001' -Body '-----011000010111000001101001
Content-Disposition: form-data; name="image"; filename="image.bin"
Content-Type: multipart/form-data
-----011000010111000001101001
Content-Disposition: form-data; name="output_format"
png
-----011000010111000001101001
Content-Disposition: form-data; name="crop"
false
-----011000010111000001101001
Content-Disposition: form-data; name="only_mask"
false
-----011000010111000001101001
Content-Disposition: form-data; name="response"
image
-----011000010111000001101001--
'POST /v1/remove-background in HTTP (HTTP/1.1)
POST /v1/remove-background HTTP/1.1
Accept: application/json
X-Api-Key: YOUR_API_KEY
Content-Type: multipart/form-data; boundary=---011000010111000001101001
Host: background-remover.p.apihiver.com
Content-Length: 527
-----011000010111000001101001
Content-Disposition: form-data; name="image"; filename="image.bin"
Content-Type: multipart/form-data
-----011000010111000001101001
Content-Disposition: form-data; name="output_format"
png
-----011000010111000001101001
Content-Disposition: form-data; name="crop"
false
-----011000010111000001101001
Content-Disposition: form-data; name="only_mask"
false
-----011000010111000001101001
Content-Disposition: form-data; name="response"
image
-----011000010111000001101001--
Example response (200, application/json)
When `response=json`.
1{
2 "width": 1600,
3 "height": 1598,
4 "content_type": "image/png",
5 "image_base64": "iVBORw0KGgoAAAANSUhEUgAA...",
6 "processing_time_ms": 1430
7}Errors
- 400 — Invalid request or image.
1{ 2 "error": { 3 "code": "MISSING_IMAGE", 4 "message": "Provide an image: an 'image' file upload, 'image_url', or 'image_base64'." 5 } 6} - 413 — Image larger than 10 MB.
1{ 2 "error": { 3 "code": "IMAGE_TOO_LARGE", 4 "message": "Image is larger than 10 MB." 5 } 6}
Gateway errors (missing key, no subscription, rate limits) are listed in Error codes.