curl --request POST \
--url https://api.goenhance.ai/api/v1/images/generations \
--header 'Content-Type: application/json' \
--data '
{
"model": "background-remover",
"image_url": "https://your-cdn.com/photo.jpg",
"image_type": "general"
}
'import requests
url = "https://api.goenhance.ai/api/v1/images/generations"
payload = {
"model": "background-remover",
"image_url": "https://your-cdn.com/photo.jpg",
"image_type": "general"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
model: 'background-remover',
image_url: 'https://your-cdn.com/photo.jpg',
image_type: 'general'
})
};
fetch('https://api.goenhance.ai/api/v1/images/generations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.goenhance.ai/api/v1/images/generations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => 'background-remover',
'image_url' => 'https://your-cdn.com/photo.jpg',
'image_type' => 'general'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.goenhance.ai/api/v1/images/generations"
payload := strings.NewReader("{\n \"model\": \"background-remover\",\n \"image_url\": \"https://your-cdn.com/photo.jpg\",\n \"image_type\": \"general\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.goenhance.ai/api/v1/images/generations")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"background-remover\",\n \"image_url\": \"https://your-cdn.com/photo.jpg\",\n \"image_type\": \"general\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.goenhance.ai/api/v1/images/generations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"background-remover\",\n \"image_url\": \"https://your-cdn.com/photo.jpg\",\n \"image_type\": \"general\"\n}"
response = http.request(request)
puts response.read_body{
"code": 0,
"msg": "Success",
"data": {
"img_uuid": "c12b656c-747a-44fd-9c80-add79b0c52d5",
"cost": 0.5
}
}Background Remover
Remove the background from an image and get a cutout PNG at the original size. Soft edges such as hair and fur keep their partial transparency, and the old background colour is cleaned out of those edges, so the cutout does not show a halo when you place it on a new background.
Pricing: 0.5 tokens per image (= $0.01), regardless of image size or image_type.
Choosing image_type:
general(default): photos of people, products, animals and objects.anime: anime characters and illustrations. Do not use it for real photos: it is tuned for artwork and breaks hair into fragments on photographs.
Input and output:
image_urlmust be anhttps://link that is publicly reachable, at most 50 MB and at most 36 megapixels.- The output is always a PNG with the same width and height as the input. Without
background_colorthe background is transparent; withbackground_colorthe subject is placed on that solid colour. - The model keeps the most prominent subject. With
anime, items the character holds and props next to it are usually kept as part of the subject. - Transparent or see-through objects (glass, smoke, water) are the hardest case and may come out incomplete.
Returns an img_uuid; poll GET /api/v1/jobs/detail (or use custom_callback_url) to get the cutout.
curl --request POST \
--url https://api.goenhance.ai/api/v1/images/generations \
--header 'Content-Type: application/json' \
--data '
{
"model": "background-remover",
"image_url": "https://your-cdn.com/photo.jpg",
"image_type": "general"
}
'import requests
url = "https://api.goenhance.ai/api/v1/images/generations"
payload = {
"model": "background-remover",
"image_url": "https://your-cdn.com/photo.jpg",
"image_type": "general"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
model: 'background-remover',
image_url: 'https://your-cdn.com/photo.jpg',
image_type: 'general'
})
};
fetch('https://api.goenhance.ai/api/v1/images/generations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.goenhance.ai/api/v1/images/generations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => 'background-remover',
'image_url' => 'https://your-cdn.com/photo.jpg',
'image_type' => 'general'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.goenhance.ai/api/v1/images/generations"
payload := strings.NewReader("{\n \"model\": \"background-remover\",\n \"image_url\": \"https://your-cdn.com/photo.jpg\",\n \"image_type\": \"general\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.goenhance.ai/api/v1/images/generations")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"background-remover\",\n \"image_url\": \"https://your-cdn.com/photo.jpg\",\n \"image_type\": \"general\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.goenhance.ai/api/v1/images/generations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"background-remover\",\n \"image_url\": \"https://your-cdn.com/photo.jpg\",\n \"image_type\": \"general\"\n}"
response = http.request(request)
puts response.read_body{
"code": 0,
"msg": "Success",
"data": {
"img_uuid": "c12b656c-747a-44fd-9c80-add79b0c52d5",
"cost": 0.5
}
}Headers
Body
Model name. Must be background-remover.
background-remover URL of the image to cut out. Must be an https:// link that is publicly reachable, at most 50 MB and at most 36 megapixels.
1What kind of image it is. general (default) for photos; anime for anime characters and illustrations only, since it breaks hair into fragments on real photos.
general, anime Optional. A hex colour such as #FFFFFF. When set, the subject is placed on this solid colour and the PNG has no transparency. When omitted, the background is transparent.
^#?[0-9a-fA-F]{6}$"#FFFFFF"
Optional. A publicly accessible HTTPS URL. When the task status changes (processing / success / failed), GoEnhance sends a POST request to this URL. The request body is identical to the response of GET /api/v1/jobs/detail. If your server does not respond with HTTP 200, the notification is retried up to 3 times, with a 3-second timeout per attempt.
"https://your-server.com/goenhance/callback"
