bgCut.net API
ਸਿਰਫ਼ ਇੱਕ HTTPS ਬੇਨਤੀ ਨਾਲ ਆਪਣੀਆਂ ਐਪਾਂ, ਔਨਲਾਈਨ ਸਟੋਰਾਂ ਜਾਂ ਪਾਈਪਲਾਈਨਾਂ ਤੋਂ ਬੈਕਗ੍ਰਾਊਂਡ ਹਟਾਓ।
ਬੇਸ URL:
https://bgcut.net/api/v1 · ਆਪਣੀ ਕੁੰਜੀ ਇੱਥੋਂ ਪ੍ਰਾਪਤ ਕਰੋ:
API ਕੁੰਜੀਆਂ .
ਪ੍ਰਮਾਣੀਕਰਨ
ਹਰ ਬੇਨਤੀ ਦੇ X-Api-Key ਹੈਡਰ ਵਿੱਚ ਤੁਹਾਡੀ API ਕੁੰਜੀ ਹੋਣੀ ਲਾਜ਼ਮੀ ਹੈ। ਕੁੰਜੀਆਂ ਤੁਹਾਡੇ ਖਾਤੇ ਵਿੱਚ ਬਣਾਈਆਂ ਅਤੇ ਰੱਦ ਕੀਤੀਆਂ ਜਾਂਦੀਆਂ ਹਨ। ਤੁਸੀਂ ਹਰ ਕੁੰਜੀ ਨੂੰ ਨਾਮ ਦੇ ਸਕਦੇ ਹੋ, ਤਾਂ ਜੋ ਹਰ ਐਪਲੀਕੇਸ਼ਨ ਲਈ ਕੁੰਜੀਆਂ ਵੱਖਰੇ ਤੌਰ 'ਤੇ ਬਦਲੀਆਂ ਜਾ ਸਕਣ।
X-Api-Key: bgc_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ਵਿਕਲਪਕ ਤੌਰ 'ਤੇ ਇਸਨੂੰ Bearer ਟੋਕਨ ਵਜੋਂ ਭੇਜੋ: Authorization: Bearer bgc_…
POST /remove
ਚਿੱਤਰ ਨੂੰ multipart ਫ਼ਾਈਲ, URL ਜਾਂ base64-ਇਨਕੋਡ ਕੀਤੇ ਰੂਪ ਵਿੱਚ ਭੇਜੋ। ਡਿਫ਼ਾਲਟ ਤੌਰ 'ਤੇ ਜਵਾਬ ਵਿੱਚ ਤਿਆਰ ਚਿੱਤਰ (ਬਾਈਨਰੀ) ਮਿਲਦਾ ਹੈ।
cURL Python PHP PHP SDK Node.js JavaScript (browser) Java C# Ruby Go
curl -X POST https://bgcut.net/api/v1/remove \
-H "X-Api-Key: bgc_YOUR_API_KEY" \
-F "[email protected] " \
-F "size=auto" \
-F "format=png" \
-o result.png
# From a URL, white background, cropped, JSON response
curl -X POST https://bgcut.net/api/v1/remove \
-H "X-Api-Key: bgc_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"image_url":"https://example.com/photo.jpg","bg_color":"#ffffff","crop":true,"response":"json"}'import requests
API_KEY = "bgc_YOUR_API_KEY"
with open("photo.jpg", "rb") as f:
r = requests.post(
"https://bgcut.net/api/v1/remove",
headers={"X-Api-Key": API_KEY},
files={"image_file": f},
data={"size": "auto", "format": "png"},
timeout=120,
)
if r.status_code == 200:
open("result.png", "wb").write(r.content)
print("credits charged:", r.headers["X-Credits-Charged"], "remaining:", r.headers["X-Credits-Remaining"])
else:
print("Error:", r.status_code, r.json())<?php
$apiKey = 'bgc_YOUR_API_KEY';
$ch = curl_init('https://bgcut.net/api/v1/remove');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['X-Api-Key: ' . $apiKey],
CURLOPT_POSTFIELDS => [
'image_file' => new CURLFile('photo.jpg'),
'size' => 'auto',
'format' => 'png',
],
CURLOPT_TIMEOUT => 120,
]);
$body = curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
curl_close($ch);
if ($code === 200) {
file_put_contents('result.png', $body);
} else {
echo 'Error: ', $body;
}<?php
// composer require bgcut-net/bgcut-php · https://github.com/bgCut-net/bgcut-php
require 'vendor/autoload.php';
$bg = new BgCut\Client('bgc_YOUR_API_KEY');
// local file → transparent PNG
$result = $bg->removeFile('photo.jpg', ['size' => 'auto', 'model' => 'lite']);
$result->save('photo-nobg.png');
echo "{$result->width}x{$result->height}, {$result->creditsRemaining} credits left\n";
// URL → white background JPG, cropped to the subject
$bg->removeUrl('https://example.com/product.jpg', ['bg_color' => '#ffffff', 'crop' => true, 'format' => 'jpg'])->save('product.jpg');
// errors
try { $bg->removeFile('photo.jpg'); }
catch (BgCut\ApiException $e) { echo $e->errorCode, ' ', $e->httpStatus; } // insufficient_credits 402, rate_limited 429 …// Node 18+ (built-in fetch & FormData)
import { readFile, writeFile } from 'node:fs/promises';
const API_KEY = 'bgc_YOUR_API_KEY';
const form = new FormData();
form.append('image_file', new Blob([await readFile('photo.jpg')]), 'photo.jpg');
form.append('size', 'auto');
form.append('format', 'png');
const res = await fetch('https://bgcut.net/api/v1/remove', {
method: 'POST',
headers: { 'X-Api-Key': API_KEY },
body: form,
});
if (res.ok) {
await writeFile('result.png', Buffer.from(await res.arrayBuffer()));
console.log('credits remaining:', res.headers.get('X-Credits-Remaining'));
} else {
console.error(await res.json());
}// Never ship your API key in public front-end code – proxy through your server.
const input = document.querySelector('input[type=file]');
input.addEventListener('change', async () => {
const form = new FormData();
form.append('image_file', input.files[0]);
form.append('size', 'preview');
const res = await fetch('https://bgcut.net/api/v1/remove', { method: 'POST', headers: { 'X-Api-Key': 'bgc_YOUR_API_KEY' }, body: form });
const blob = await res.blob();
document.querySelector('img#out').src = URL.createObjectURL(blob);
});// Java 11+ HttpClient, no external libraries
import java.net.URI;
import java.net.http.*;
import java.nio.file.*;
public class BgCut {
public static void main(String[] a) throws Exception {
String key = "bgc_YOUR_API_KEY";
String boundary = "----bgcut" + System.nanoTime();
byte[] file = Files.readAllBytes(Path.of("photo.jpg"));
String head = "--" + boundary + "\r\nContent-Disposition: form-data; name=\"image_file\"; filename=\"photo.jpg\"\r\nContent-Type: image/jpeg\r\n\r\n";
String tail = "\r\n--" + boundary + "\r\nContent-Disposition: form-data; name=\"size\"\r\n\r\nauto\r\n--" + boundary + "--\r\n";
byte[] body = concat(head.getBytes(), file, tail.getBytes());
HttpRequest req = HttpRequest.newBuilder(URI.create("https://bgcut.net/api/v1/remove"))
.header("X-Api-Key", key)
.header("Content-Type", "multipart/form-data; boundary=" + boundary)
.POST(HttpRequest.BodyPublishers.ofByteArray(body)).build();
HttpResponse<byte[]> res = HttpClient.newHttpClient().send(req, HttpResponse.BodyHandlers.ofByteArray());
if (res.statusCode() == 200) Files.write(Path.of("result.png"), res.body());
else System.out.println(new String(res.body()));
}
static byte[] concat(byte[]... parts) { int n = 0; for (byte[] p : parts) n += p.length; byte[] out = new byte[n]; int o = 0; for (byte[] p : parts) { System.arraycopy(p, 0, out, o, p.length); o += p.length; } return out; }
}using System.Net.Http;
using System.Net.Http.Headers;
var client = new HttpClient();
client.DefaultRequestHeaders.Add("X-Api-Key", "bgc_YOUR_API_KEY");
using var form = new MultipartFormDataContent();
var fileContent = new ByteArrayContent(await File.ReadAllBytesAsync("photo.jpg"));
fileContent.Headers.ContentType = new MediaTypeHeaderValue("image/jpeg");
form.Add(fileContent, "image_file", "photo.jpg");
form.Add(new StringContent("auto"), "size");
form.Add(new StringContent("png"), "format");
var res = await client.PostAsync("https://bgcut.net/api/v1/remove", form);
if (res.IsSuccessStatusCode)
await File.WriteAllBytesAsync("result.png", await res.Content.ReadAsByteArrayAsync());
else
Console.WriteLine(await res.Content.ReadAsStringAsync());require 'net/http'
require 'uri'
uri = URI('https://bgcut.net/api/v1/remove')
req = Net::HTTP::Post.new(uri)
req['X-Api-Key'] = 'bgc_YOUR_API_KEY'
req.set_form([['image_file', File.open('photo.jpg')], ['size', 'auto'], ['format', 'png']], 'multipart/form-data')
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true, read_timeout: 120) { |http| http.request(req) }
if res.code == '200'
File.binwrite('result.png', res.body)
else
puts res.body
endpackage main
import (
"bytes"
"io"
"mime/multipart"
"net/http"
"os"
)
func main() {
var buf bytes.Buffer
w := multipart.NewWriter(&buf)
f, _ := os.Open("photo.jpg")
defer f.Close()
fw, _ := w.CreateFormFile("image_file", "photo.jpg")
io.Copy(fw, f)
w.WriteField("size", "auto")
w.Close()
req, _ := http.NewRequest("POST", "https://bgcut.net/api/v1/remove", &buf)
req.Header.Set("X-Api-Key", "bgc_YOUR_API_KEY")
req.Header.Set("Content-Type", w.FormDataContentType())
res, err := http.DefaultClient.Do(req)
if err != nil { panic(err) }
defer res.Body.Close()
if res.StatusCode == 200 {
out, _ := os.Create("result.png")
defer out.Close()
io.Copy(out, res.Body)
} else {
io.Copy(os.Stderr, res.Body)
}
}
ਪੈਰਾਮੀਟਰ
ਪੈਰਾਮੀਟਰ ਕਿਸਮ ਵੇਰਵਾ
image_filefile ਚਿੱਤਰ ਫ਼ਾਈਲ (multipart/form-data)। JPG, PNG, WebP, GIF, BMP, TIFF; ਵੱਧ ਤੋਂ ਵੱਧ 25 MB / 30 MP।
image_urlstring ਅੱਪਲੋਡ ਕਰਨ ਦੀ ਬਜਾਏ ਪ੍ਰਾਪਤ ਕੀਤੇ ਜਾਣ ਵਾਲੇ ਚਿੱਤਰ ਦਾ ਜਨਤਕ URL।
image_file_b64string Base64-ਇਨਕੋਡ ਕੀਤਾ ਚਿੱਤਰ (ਚਾਹੋ ਤਾਂ data: ਅਗੇਤਰ ਸਮੇਤ)।
sizeauto | preview | full preview = 640 px ਤੱਕ (ਤੁਹਾਡਾ ਮੁਫ਼ਤ ਮਾਸਿਕ ਕੋਟਾ ਵਰਤਦਾ ਹੈ, ਕੋਈ ਕ੍ਰੈਡਿਟ ਨਹੀਂ ਲੱਗਦਾ); full = ਮੂਲ ਰੈਜ਼ੋਲਿਊਸ਼ਨ (1 ਕ੍ਰੈਡਿਟ); auto (ਡਿਫ਼ਾਲਟ) = ਕ੍ਰੈਡਿਟ ਹੋਣ 'ਤੇ full, ਨਹੀਂ ਤਾਂ preview।
formatpng | jpg | webp ਆਉਟਪੁੱਟ ਫ਼ਾਰਮੈਟ। png ਪਾਰਦਰਸ਼ਤਾ ਬਰਕਰਾਰ ਰੱਖਦਾ ਹੈ; jpg ਨੂੰ bg_color (ਡਿਫ਼ਾਲਟ ਚਿੱਟਾ) 'ਤੇ ਸਮਤਲ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।
modelfast | hq | portrait lite (ਡਿਫ਼ਾਲਟ, ~6 ਸਕਿੰਟ, ਸਭ ਤੋਂ ਵਧੀਆ ਸੰਤੁਲਨ), fast (~0.5 ਸਕਿੰਟ, ਪ੍ਰੀਵਿਊ ਗੁਣਵੱਤਾ), hq (~15 ਸਕਿੰਟ, ਵੱਧ ਤੋਂ ਵੱਧ ਗੁਣਵੱਤਾ), portrait (~0.3 ਸਕਿੰਟ, ਸਿਰਫ਼ ਲੋਕਾਂ ਲਈ)।
bg_colorstring ਬੈਕਗ੍ਰਾਊਂਡ ਲਈ Hex ਰੰਗ, ਜਿਵੇਂ #ffffff। ਪਾਰਦਰਸ਼ੀ ਬੈਕਗ੍ਰਾਊਂਡ ਲਈ ਇਸਨੂੰ ਛੱਡ ਦਿਓ।
bg_blurnumber ਮੂਲ ਬੈਕਗ੍ਰਾਊਂਡ ਰੱਖੋ, ਪਰ ਇਸਨੂੰ ਪਿਕਸਲਾਂ ਵਿੱਚ ਦਿੱਤੇ ਇਸ ਰੇਡੀਅਸ (1–200) ਨਾਲ ਧੁੰਦਲਾ ਕਰੋ, ਜਿਵੇਂ ਪੋਰਟਰੇਟ-ਮੋਡ ਦਿੱਖ ਲਈ 25। ਇਹ bg_color ਨੂੰ ਓਵਰਰਾਈਡ ਕਰਦਾ ਹੈ।
cropboolean ਆਉਟਪੁੱਟ ਨੂੰ ਵਿਸ਼ੇ ਦੇ ਬਾਊਂਡਿੰਗ ਬਾਕਸ ਤੱਕ ਕ੍ਰੌਪ ਕਰੋ।
crop_margininteger ਕ੍ਰੌਪ ਕਰਦੇ ਸਮੇਂ ਵਿਸ਼ੇ ਦੇ ਆਲੇ-ਦੁਆਲੇ ਪਿਕਸਲਾਂ ਵਿੱਚ ਵਾਧੂ ਹਾਸ਼ੀਆ (0–200)।
roistring ਦਿਲਚਸਪੀ ਵਾਲਾ ਖੇਤਰ, x,y,w,h ਭਿੰਨਾਂ (0–1) ਵਜੋਂ। AI ਸਿਰਫ਼ ਇਸ ਆਇਤ ਦੇ ਅੰਦਰ ਦੇਖਦਾ ਹੈ; ਇਸ ਤੋਂ ਬਾਹਰ ਸਭ ਕੁਝ ਪਾਰਦਰਸ਼ੀ ਹੋ ਜਾਂਦਾ ਹੈ।
feathernumber ਕਿਨਾਰਿਆਂ ਨੂੰ ਪਿਕਸਲਾਂ ਵਿੱਚ ਦਿੱਤੇ ਇਸ ਰੇਡੀਅਸ (0–5) ਨਾਲ ਨਰਮ ਕਰੋ।
qualityinteger JPG/WebP ਗੁਣਵੱਤਾ 50–100 (ਡਿਫ਼ਾਲਟ 92)।
responsebinary | json binary (ਡਿਫ਼ਾਲਟ) ਚਿੱਤਰ ਵਾਪਸ ਕਰਦਾ ਹੈ; json ਮੈਟਾਡੇਟਾ ਅਤੇ base64 ਚਿੱਤਰ ਵਾਪਸ ਕਰਦਾ ਹੈ।
ਜਵਾਬ
ਸਫਲ ਬੇਨਤੀਆਂ ਚਿੱਤਰ ਦੇ ਬਾਈਟਾਂ ਅਤੇ ਇਹਨਾਂ ਹੈਡਰਾਂ ਨਾਲ HTTP 200 ਵਾਪਸ ਕਰਦੀਆਂ ਹਨ:
HTTP/1.1 200 OK
Content-Type: image/png
X-Credits-Charged: 1
X-Credits-Remaining: 149
X-Free-Remaining: 5
X-Width: 3000
X-Height: 2000
X-Image-Id: 1f3a…
X-Type: hd
response=json ਨਾਲ ਤੁਹਾਨੂੰ ਇਹ ਮਿਲਦਾ ਹੈ:
{
"ok": true,
"image": { "id": "1f3a…", "width": 3000, "height": 2000, "format": "png", "type": "hd", "bytes": 812345, "bbox": [120, 40, 2810, 1990], "data": "iVBORw0KGgo…" },
"credits_charged": 1,
"credits_remaining": 149,
"free_remaining": 5
}
GET /account
curl https://bgcut.net/api/v1/account -H "X-Api-Key: bgc_…"
{ "ok": true, "email": "[email protected] ", "credits": 149, "free_remaining": 5, "free_per_month": 5, "free_max_width": 640, "rate_limit_per_minute": 60 }
GET /images ਤੁਹਾਡੀਆਂ API ਕੁੰਜੀਆਂ ਨਾਲ ਪ੍ਰੋਸੈੱਸ ਕੀਤੇ ਆਖਰੀ 100 ਚਿੱਤਰ ਵਾਪਸ ਕਰਦਾ ਹੈ। ਇਹਨਾਂ ਵਿੱਚ ਬ੍ਰਾਊਜ਼ਰ ਵਿੱਚ ਚਿੱਤਰ ਸੁਧਾਰਨ ਲਈ ਐਡੀਟਰ URL ਵੀ ਸ਼ਾਮਲ ਹੁੰਦਾ ਹੈ।
ਗਲਤੀਆਂ
ਗਲਤੀਆਂ JSON ਰੂਪ ਵਿੱਚ ਮਿਲਦੀਆਂ ਹਨ, ਜਿਨ੍ਹਾਂ ਵਿੱਚ ਇੱਕ error ਕੋਡ ਅਤੇ ਆਸਾਨੀ ਨਾਲ ਪੜ੍ਹਨਯੋਗ ਸੁਨੇਹਾ ਹੁੰਦਾ ਹੈ:
{ "ok": false, "error": "insufficient_credits", "message": "No credits left. Buy credits at https://bgcut.net/pricing or request size=preview." }
HTTP error ਵੇਰਵਾ
400 bad_request / missing_image ਪੈਰਾਮੀਟਰ ਗੁੰਮ ਜਾਂ ਅਵੈਧ ਹਨ। 401 auth_required / invalid_key API ਕੁੰਜੀ ਗੁੰਮ, ਅਵੈਧ ਜਾਂ ਰੱਦ ਕੀਤੀ ਹੋਈ ਹੈ। 402 insufficient_credits / free_quota_exceeded ਕੋਈ ਕ੍ਰੈਡਿਟ ਨਹੀਂ (ਪੂਰੇ ਆਕਾਰ ਲਈ) ਜਾਂ ਮੁਫ਼ਤ ਕੋਟਾ ਖਤਮ (ਪ੍ਰੀਵਿਊ ਲਈ)। 422 too_large / bad_type / fetch_failed ਚਿੱਤਰ ਨੂੰ ਪੜ੍ਹਿਆ ਜਾਂ ਡਾਊਨਲੋਡ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ। 429 rate_limited ਬਹੁਤ ਜ਼ਿਆਦਾ ਬੇਨਤੀਆਂ – ਬੇਨਤੀਆਂ ਦੀ ਗਤੀ ਘਟਾਓ ਜਾਂ ਵੱਧ ਸੀਮਾਵਾਂ ਲਈ ਸਾਡੇ ਨਾਲ ਸੰਪਰਕ ਕਰੋ। 500 processing_failed ਸਾਡੇ ਪਾਸੇ ਪ੍ਰੋਸੈਸਿੰਗ ਅਸਫਲ ਰਹੀ – ਤੁਹਾਡੇ ਤੋਂ ਕੋਈ ਖਰਚਾ ਨਹੀਂ ਲਿਆ ਜਾਂਦਾ।
ਨਮੂਨਾ ਕੋਡ
ਸਾਰੇ ਨਮੂਨੇ ਇੱਕੋ ਐਂਡਪੁਆਇੰਟ ਵਰਤਦੇ ਹਨ। ਉਦਾਹਰਣਾਂ ਦਾ ਪੂਰਾ ਸੰਗ੍ਰਹਿ ਡਾਊਨਲੋਡ ਕਰੋ: bgcut-api-examples.zip
ਅਧਿਕਾਰਤ PHP SDK ਟਾਈਪ ਕੀਤੇ ਨਤੀਜਿਆਂ, ਗਲਤੀ ਕਲਾਸਾਂ ਅਤੇ ਚਲਾਉਣ ਲਈ ਤਿਆਰ ਉਦਾਹਰਣਾਂ ਵਾਲੀ ਓਪਨ-ਸੋਰਸ ਕਲਾਇੰਟ ਲਾਇਬ੍ਰੇਰੀ। MIT ਲਾਇਸੈਂਸ। composer require bgcut-net/bgcut-php
GitHub
ਸੀਮਾਵਾਂ
ਹਰ API ਕੁੰਜੀ ਲਈ ਪ੍ਰਤੀ ਮਿੰਟ 60 ਬੇਨਤੀਆਂ (ਮੰਗ ਕਰਨ 'ਤੇ ਵੱਧ ਸੀਮਾਵਾਂ ਉਪਲਬਧ)। ਪ੍ਰਤੀ ਚਿੱਤਰ ਵੱਧ ਤੋਂ ਵੱਧ 25 MB ਅਤੇ 30 ਮੈਗਾਪਿਕਸਲ; ਵੱਡੇ ਚਿੱਤਰਾਂ ਦਾ ਆਕਾਰ ਘਟਾ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ। ਪ੍ਰੋਸੈੱਸ ਕੀਤੇ ਚਿੱਤਰ 30 ਦਿਨਾਂ ਲਈ ਰੱਖੇ ਜਾਂਦੇ ਹਨ ਅਤੇ ਵੈੱਬ ਐਡੀਟਰ ਵਿੱਚ ਸੁਧਾਰੇ ਜਾ ਸਕਦੇ ਹਨ। ਅਸਫਲ ਬੇਨਤੀਆਂ ਲਈ ਕਦੇ ਵੀ ਖਰਚਾ ਨਹੀਂ ਲਿਆ ਜਾਂਦਾ; ਜੇ ਆਉਟਪੁੱਟ ਬਣਾਉਣ ਵਿੱਚ ਅਸਫਲਤਾ ਹੋਵੇ ਤਾਂ ਖਰਚਾ ਆਪਣੇ-ਆਪ ਵਾਪਸ ਕਰ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ।