રિયલ-ટાઇમ API

બેકગ્રાઉન્ડ રિમૂવલ API: એક રિક્વેસ્ટ મોકલો, તૈયાર PNG મેળવો.

ફાઇલ અપલોડ કરો, પબ્લિક ઇમેજ URL મોકલો, અથવા base64 આપો. મોટા ભાગની એકલ ઇમેજ એ જ HTTP રિસ્પોન્સમાં તૈયાર થઈને પાછી આવે છે, સામાન્ય રીતે થોડી સેકન્ડમાં. જો કોઈને વધુ સમય લાગે, તો ઇમેજ ફરી મોકલ્યા વગર પરિણામ મેળવવા તમને એક job id મળે છે. બલ્ક માટે batch એન્ડપૉઇન્ટ છે.

દરેક સફળ ઇમેજ પર 1 ક્રેડિટ · નિષ્ફળ ઇમેજ મફત · કી તમારા એકાઉન્ટમાં

$ curl -X POST https://removebackground.dev/v1/remove \
    -H "x-api-key: $REMOVEBG_API_KEY" \
    -F 'image_file=@dog.jpg' -o dog.png

← 200 OK · image/png · સામાન્ય રીતે થોડી સેકન્ડ
  dog.png સેવ થયું (ટ્રાન્સપરન્ટ, ફુલ રિઝોલ્યુશન)
1 તમારી ઇમેજ2 એક HTTP રિક્વેસ્ટ3 રિસ્પોન્સમાં PNG

ઝડપી શરૂઆત

કૉપી કરો, પેસ્ટ કરો, YOUR_API_KEY બદલો. દરેક ઉદાહરણ પરિણામ સીધું ફાઇલમાં સેવ કરે છે, અને JavaScript તથા Python વાળાં ઉદાહરણ 202 ની રાહ પણ જુએ છે.

curl -X POST https://removebackground.dev/v1/remove \
  -H 'x-api-key: YOUR_API_KEY' \
  -F 'image_file=@photo.jpg' \
  -o photo-no-bg.png

તમારી ઇમેજ મોકલો

POST /v1/remove ચાર માંથી કોઈપણ રીતે ઇમેજ લે છે. તેમાંથી એક મોકલો; જો કોઈ રિક્વેસ્ટમાં એકથી વધુ હોય, તો image_file ને પ્રાથમિકતા મળે છે, પછી image_file_b64, પછી image_url, પછી raw બૉડી. આ ઉદાહરણો તમારી કી REMOVEBG_API_KEY એન્વાયર્નમેન્ટ વેરિએબલમાંથી વાંચે છે (export REMOVEBG_API_KEY=… વડે સેટ કરો); ડબલ ક્વોટ્સ પર ધ્યાન આપો, તેનાથી શેલ વેલ્યૂ ભરી દે છે.

curl -X POST https://removebackground.dev/v1/remove \
  -H "x-api-key: $REMOVEBG_API_KEY" \
  -F 'image_file=@photo.jpg' \
  -o photo-no-bg.png

Multipart ફૉર્મ ડેટા, ફીલ્ડ image_file. JPG, PNG અથવા WebP, 25 MB સુધી.

દરેક ઉદાહરણ બૉડીને ફાઇલમાં સેવ કરે છે. સ્ટેટસ 200 હોય ત્યારે જ તે ફાઇલ ઇમેજ હોય છે; જુઓ રિસ્પોન્સ સંભાળો.

રિસ્પોન્સ સંભાળો

મોટા ભાગની એકલ ઇમેજ એ જ રિસ્પોન્સમાં તૈયાર થઈને પાછી આવે છે. જ્યારે કતાર અસામાન્ય રીતે વ્યસ્ત હોય અને કોઈ ઇમેજને લગભગ 55 સેકન્ડથી વધુ સમય લાગે, ત્યારે તેના બદલે તમને job id સાથે 202 Accepted મળે છે. જોબ ચાલુ રહે છે: id વડે તેનું પરિણામ મેળવો. ઇમેજ ફરી મોકલવાથી બીજી જોબ શરૂ થશે અને બીજી ક્રેડિટ વપરાઈ શકે છે.

સ્ટેટસબૉડીશું કરવું
200ઇમેજ (image/png, image/jpeg અથવા image/webp)તેને સેવ કરો. ફાઇલ એક્સ્ટેન્શન પસંદ કરવા Content-Type નો ઉપયોગ કરો.
202JSON: { id, status, status_url, result_url }આ ઇમેજ નથી. થોડી સેકન્ડ રાહ જુઓ, પછી result_url પર GET કરો. ઇમેજ ફરી ન મોકલો.
4xx / 5xxJSON: { "error": { "code", "message" } }આ ઇમેજ નથી. કોડ વાંચો (એરર જુઓ) અને બૉડીને ચિત્ર તરીકે સેવ ન કરો.

એક સંપૂર્ણ ઉદાહરણ

તૈયાર ઇમેજ, 202, નિષ્ફળ જોબ અને લોકલ સમય મર્યાદા સંભાળે છે. તે ઇમેજ એક જ વાર મોકલે છે અને ફક્ત સુરક્ષિત સ્ટેટસ ચેક જ ફરી અજમાવે છે.

import os
import time
import uuid

import requests

API = "https://removebackground.dev"
KEY = os.environ["REMOVEBG_API_KEY"]  # keep the key on your server
EXT = {"image/png": ".png", "image/jpeg": ".jpg", "image/webp": ".webp"}


def save(res, stem):
    """Save an image response with the right extension; raise on anything else."""
    mime = res.headers.get("Content-Type", "").split(";")[0]
    if res.status_code != 200 or mime not in EXT:
        raise RuntimeError(f"HTTP {res.status_code}: {res.text[:500]}")
    path = stem + EXT[mime]
    with open(path, "wb") as f:
        f.write(res.content)
    return path


def remove_background(image_url, stem="result", max_wait=300):
    s = requests.Session()
    s.headers["x-api-key"] = KEY

    # One key per image: resending with the same key returns the same job, never a second
    # charge, so this POST is safe to retry after a timeout or a dropped connection.
    idem = {"Idempotency-Key": str(uuid.uuid4())}
    for attempt in range(3):
        try:
            res = s.post(f"{API}/v1/remove", data={"image_url": image_url}, headers=idem, timeout=(10, 120))
            break
        except requests.ConnectionError:
            if attempt == 2:
                raise
            time.sleep(2)
    if res.status_code != 202:
        return save(res, stem)  # 200 = the image; anything else raises

    # 202: still processing. Wait for the same job; never send the image again.
    job_id = res.json()["id"]
    deadline = time.monotonic() + max_wait
    while time.monotonic() < deadline:
        time.sleep(2)  # the API sends Retry-After: 2
        res = s.get(f"{API}/v1/jobs/{job_id}/result", timeout=30)
        if res.status_code == 409 and res.json()["error"]["code"] == "not_ready":
            continue
        return save(res, stem)  # the image, or the job's own error
    raise TimeoutError(f"Job {job_id} is still running. Check it later at /v1/jobs/{job_id}.")


print(remove_background("https://example.com/photo.jpg"))

Python 3 અને requests જરૂરી છે (pip install requests).

  • તમારી સ્ક્રિપ્ટ અટકાવવાથી જોબ અટકતી નથી; તે હજી પૂર્ણ થઈ શકે છે અને ચાર્જ લાગી શકે છે. તેનું પરિણામ તમારા સ્ટુડિયોમાં દેખાશે.
  • સમય મર્યાદા તમારી પસંદગી છે, અમારું વચન નથી; મોટા ભાગની ઇમેજ થોડી સેકન્ડમાં પૂર્ણ થાય છે.
  • remove.bg-કૉમ્પેટિબલ એન્ડપૉઇન્ટ અલગ રીતે વર્તે છે: તે ક્યારેય 202 આપતો નથી (નીચે જુઓ).

ઑથેન્ટિકેશન

તમારી API કી x-api-key હેડરમાં મોકલો. તમારા એકાઉન્ટ પેજ પર કી બનાવો અને રદ કરો; દરેક કૉલ તે એકાઉન્ટની ક્રેડિટ વાપરે છે. બધા એન્ડપૉઇન્ટ https://removebackground.dev હેઠળ છે અને CORS રિક્વેસ્ટ સ્વીકારે છે, પણ CORS થી વેબ પેજમાં કી મૂકવી સુરક્ષિત બનતી નથી: તેને તમારા સર્વર પર રાખો (જુઓ સુરક્ષા). એરર JSON માં હોય છે: { "error": { "code": "…", "message": "…" } }.

સંપૂર્ણ કૉન્ટ્રૅક્ટ OpenAPI 3.1 (openapi.json) તરીકે પ્રકાશિત છે, ક્લાયન્ટ જનરેટર, Postman અથવા ટેસ્ટ માટે; AI કોડિંગ આસિસ્ટન્ટ llms.txt થી શરૂ કરી શકે છે.

POST /v1/remove

રિયલ-ટાઇમ. એક ઇમેજનું બેકગ્રાઉન્ડ દૂર કરો. સામાન્ય રીતે તૈયાર ઇમેજ જ રિસ્પોન્સ બૉડી હોય છે (image/png, image/jpeg અથવા image/webp), સામાન્ય રીતે થોડી સેકન્ડ પછી. પેરામીટર ફૉર્મ ફીલ્ડ, JSON કી અથવા query-string વેલ્યૂ હોઈ શકે છે; તમે Content-Type: image/jpeg, image/png, image/webp અથવા application/octet-stream સાથે raw ઇમેજ બાઇટ્સ પણ POST કરી શકો છો. વધુમાં વધુ 25 MB. દરેક ઇનપુટ રીત માટે જુઓ તમારી ઇમેજ મોકલો.

પેરામીટરટાઇપવર્ણન
image_filefileઇમેજ (JPG, PNG અથવા WebP), multipart ફૉર્મ ડેટા તરીકે.
image_file_b64stringbase64 તરીકે ઇમેજ, data:image/…;base64, પ્રીફિક્સ સાથે કે વગર (ડીકોડ કર્યા પછી 25 MB). JSON માંથી મોકલવા માટે સરળ.
image_urlstringઇમેજનું પબ્લિક http(s) URL. અમે તેને ડાઉનલોડ કરીએ છીએ (3 સુધી રીડાયરેક્ટ, 15 s). એકથી વધુ મોકલાય તો image_file ને પ્રાથમિકતા મળે છે, પછી image_file_b64, પછી image_url, પછી raw બૉડી.
formatpng | jpg | webpઆઉટપુટ ફૉર્મેટ. ડિફૉલ્ટ png. JPG માં ટ્રાન્સપરન્સી નથી: તેને bg_color પર, અથવા સફેદ પર મૂકવામાં આવે છે.
bg_colorરંગબેકગ્રાઉન્ડ ભરો: hex (ffffff, #fff), rgb(255, 255, 255), અથવા white, black, red, green, blue, yellow, gray / grey. transparent (ડિફૉલ્ટ) તેને ટ્રાન્સપરન્ટ રાખે છે.
sizepreview | medium | hd | fullમેગાપિક્સેલ મર્યાદા, ઍસ્પેક્ટ રેશિયો જળવાય છે, ક્યારેય મોટું કરાતું નથી: preview ≤ 0.25 MP, medium ≤ 1.5 MP, hd ≤ 4 MP, full (ડિફૉલ્ટ) મૂળ રિઝોલ્યુશન (25 MP સુધી). width અથવા height સેટ હોય ત્યારે અવગણાય છે.
croptrue | false | W:Hસબ્જેક્ટના બાઉન્ડિંગ બૉક્સ સુધી કાપો. ઍસ્પેક્ટ રેશિયો (1:1, 4:5, 4:3, 16:9…) સાથે, બૉક્સને સબ્જેક્ટની આસપાસ તે રેશિયો સુધી મોટું કરાય છે (ક્યારેય નાનું નહીં); ફોટાની બહારનો વિસ્તાર ટ્રાન્સપરન્ટ (અથવા bg_color) હોય છે. ડિફૉલ્ટ false.
paddingpx | અપૂર્ણાંક | %crop સાથે: દરેક બાજુએ ઉમેરાતું માર્જિન. 0.1 અથવા 10% = સબ્જેક્ટની પહોળાઈ (ડાબે/જમણે) અને ઊંચાઈ (ઉપર/નીચે) નો દસમો ભાગ; "10%,7.5%" આડું અને ઊભું અલગ સેટ કરે છે; 24px (અથવા 1 થી મોટી પૂર્ણ સંખ્યા) પિક્સેલ છે, 500 સુધી. ડિફૉલ્ટ 0.
channelsrgba | rgb | alphargba (ડિફૉલ્ટ): ટ્રાન્સપરન્ટ કટ-આઉટ. rgb: અપારદર્શક, bg_color અથવા સફેદ પર મૂકેલું. alpha: ગ્રેસ્કેલ PNG માસ્ક (સફેદ = સબ્જેક્ટ), કટ-આઉટ જેટલી જ સાઇઝ અને ક્રૉપ. type=mask હજી પણ alpha ના બીજા નામ તરીકે કામ કરે છે.
width / height1–6000પિક્સેલમાં ચોક્કસ આઉટપુટ સાઇઝ, crop પછી લાગુ થાય છે (size ને ઓવરરાઇડ કરે છે). ફક્ત એક આપો તો બીજી ઍસ્પેક્ટ રેશિયો મુજબ ગોઠવાય છે. ક્યારેય ખેંચાતું નથી.
roix1 y1 x2 y2રસનો વિસ્તાર, px અથવા % માં (દા.ત. 0% 0% 50% 100%). ફક્ત તેની અંદરનો સબ્જેક્ટ રખાય છે; બહારનું બધું બેકગ્રાઉન્ડ બને છે. કોઓર્ડિનેટ મૂળ ઇમેજ મુજબ છે. ડિફૉલ્ટ: આખી ઇમેજ.
fitcontain | cover | scale-downwidth અને height સાથે. contain (ડિફૉલ્ટ): અંદર સમાય, વચ્ચે, બાકીનું ટ્રાન્સપરન્ટ (અથવા bg_color). cover: બૉક્સ ભરે, સબ્જેક્ટની આસપાસનો વધારાનો ભાગ ક્રૉપ કરીને. scale-down: contain જેવું, પણ ક્યારેય મોટું નહીં.

વિકલ્પો આ ક્રમમાં લાગુ થાય છે: roi, size (અથવા પછી width/height), crop + padding + ઍસ્પેક્ટ રેશિયો, width/height + fit, પછી channels અથવા બેકગ્રાઉન્ડ રંગ, પછી format. દરેક વિકલ્પ માટે એ જ 1 ક્રેડિટ. અજાણ્યાં પેરામીટર અવગણાય છે.

ઉદાહરણ: સફેદ પર HD JPG, 40 px પૅડિંગ સાથે સબ્જેક્ટ મુજબ ક્રૉપ

curl -X POST https://removebackground.dev/v1/remove \
  -H 'x-api-key: YOUR_API_KEY' \
  -F 'image_file=@product.jpg' \
  -F 'bg_color=ffffff' \
  -F 'format=jpg' \
  -F 'size=hd' \
  -F 'crop=true' \
  -F 'padding=40' \
  -o product-no-bg.jpg

ઉદાહરણ: માર્કેટપ્લેસ માટે ચોરસ ઇમેજ, 10% પૅડિંગ સાથે સબ્જેક્ટ વચ્ચે

curl -X POST https://removebackground.dev/v1/remove \
  -H 'x-api-key: YOUR_API_KEY' \
  -F 'image_file=@product.jpg' \
  -F 'crop=1:1' -F 'padding=10%' \
  -F 'width=1000' -F 'height=1000' \
  -F 'format=jpg' -F 'bg_color=white' \
  -o product-square.jpg

ઉદાહરણ: base64 ઇનપુટ, આલ્ફા માસ્ક આઉટપુટ

printf '{"image_file_b64":"%s","channels":"alpha"}' "$(base64 < portrait.jpg | tr -d '\n')" > request.json

curl -X POST https://removebackground.dev/v1/remove \
  -H 'x-api-key: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  --data-binary @request.json \
  -o portrait-mask.png

200 OK

ઇમેજ બાઇટ્સ, આ હેડર સાથે:

હેડરઅર્થ
X-Image-Width / X-Image-Heightપરિણામની સાઇઝ પિક્સેલમાં (X-Width / X-Height તરીકે પણ મોકલાય છે).
X-Request-IDતમે X-Request-ID મોકલ્યો હોય તો તે, નહીંતર બનાવેલો id. સપોર્ટનો સંપર્ક કરો ત્યારે તે જણાવો.
X-Processing-Time-Msરિક્વેસ્ટમાં લાગેલો સમય (X-Processing-Ms તરીકે પણ).
X-Matte-Confidence0–1: માસ્ક કેટલું સ્પષ્ટ છે (પિક્સેલ પર |2a − 1| ની સરેરાશ, a = alpha). 1 ની નજીક એટલે સ્વચ્છ કટ-આઉટ; ઓછી વેલ્યૂ એટલે ઘણી નરમ અથવા અનિશ્ચિત કિનારીઓ.
X-Matte-Ambiguous-Ratioજેમનો alpha 0.1 અને 0.9 ની વચ્ચે હોય તેવા પિક્સેલનું પ્રમાણ (વાળ, કાચ, મોશન બ્લર). રિવ્યૂ માટે ઇમેજને ચિહ્નિત કરવામાં ઉપયોગી.
X-Credits-Remainingઆ ઇમેજ પછી તમારું બૅલેન્સ.
X-Removal-Idસંગ્રહિત પરિણામનો id.
X-Job-Idરિક્વેસ્ટ પાછળની જોબનો id (/v1/jobs/:id સાથે વાપરી શકાય).

202 Accepted (લાંબી કતાર માટે વૈકલ્પિક વ્યવસ્થા)

જો ઇમેજ લગભગ 55 સેકન્ડમાં તૈયાર ન થાય, ઉદાહરણ તરીકે જ્યારે કતાર અસામાન્ય રીતે વ્યસ્ત હોય, ત્યારે તમને JSON { id, status, status_url, result_url } સાથે 202 મળે છે (ઉપરાંત Location અને Retry-After: 2). done true થાય ત્યાં સુધી status_url પોલ કરો, પછી result_url ડાઉનલોડ કરો. ચાર્જ એક જ વાર લાગે છે, ફક્ત ઇમેજ સફળ થાય ત્યારે. Idempotency-Key વગર ઇમેજ ફરી ન મોકલો: તેનાથી બીજી જોબ શરૂ થાય છે. સંપૂર્ણ ઉદાહરણ માટે જુઓ રિસ્પોન્સ સંભાળો.

GET /v1/jobs/:id

/v1/remove અથવા /v1/batch વડે બનેલી જોબનું સ્ટેટસ. એ જ કી; તમે ફક્ત તમારી પોતાની જોબ જ જુઓ છો.

ફીલ્ડઅર્થ
statusqueued, processing, succeeded, partial, failed અથવા canceled
doneચલાવવાનું કંઈ બાકી ન રહે ત્યારે true
total, succeeded, failed, skippedઇમેજની સંખ્યા
credits_chargedઆ જોબે વાપરેલી ક્રેડિટ (દરેક સફળ ઇમેજ પર 1)
status_url, result_urlક્યાં પોલ કરવું, અને ક્યાંથી ડાઉનલોડ કરવું
items[]દરેક ઇમેજ માટે: position, input, status, error { code, message }, અને સફળ થાય તો removal_id, width, height, format, result_url

GET /v1/jobs/:id/result

પૂર્ણ થયેલી જોબની ઇમેજ બાઇટ્સ, /v1/remove જેવા જ હેડર સાથે. ?item=N બૅચ જોબની એક ઇમેજ પસંદ કરે છે (ડિફૉલ્ટ 0). જોબ ચાલુ હોય ત્યારે Retry-After: 2 સાથે 409 not_ready, અથવા નિષ્ફળ જાય તો ઇમેજની પોતાની એરર આપે છે.

POST /v1/batch

100 જેટલા ઇમેજ URL ને એક જોબ તરીકે કતારમાં મૂકો: JSON { "image_urls": ["https://…", …], "format": "jpg", "bg_color": "ffffff", "size": "hd", "crop": "1:1", "padding": "10%" }, /v1/remove જેવા જ વિકલ્પો સાથે (channels, width, height અને fit પણ). તરત જ { id, status, total, invalid, duplicates, status_url } સાથે 202 આપે છે. જોબ પોલ કરો, પછી દરેક આઇટમનું result_url મેળવો. સફળ થતી દરેક ઇમેજ પર 1 ક્રેડિટ; દરેક એકાઉન્ટ દીઠ વધુમાં વધુ 3 બૅચ જોબ ખુલ્લી. ઉદાહરણ રિસ્પોન્સ સાથેની વિગતવાર સમજ બૅચ, શરૂથી અંત સુધી માં.

remove.bg-કૉમ્પેટિબલ એન્ડપૉઇન્ટ

remove.bg નું સેલ્ફ-સર્વ API 1 December 2026, 09:00 CET એ બંધ થાય છે (જાહેરાત). હાલનાં remove.bg ઇન્ટિગ્રેશન અહીં એક લાઇન બદલીને કામ કરે છે: https://api.remove.bg/v1.0/removebg → https://removebackground.dev/v1.0/removebg, એ જ X-Api-Key હેડરમાં removebackground.dev કી સાથે. એ જ કતાર, દરેક સફળ ઇમેજ પર એ જ 1 ક્રેડિટ, /v1/remove જેવી જ આઉટપુટ ગુણવત્તા. માઇગ્રેશન ગાઇડ.

POST /v1.0/removebg

remove.bg નાં પેરામીટર નામ સાથે Multipart, urlencoded અથવા JSON બૉડી. ઇમેજ બાઇટ્સ અને remove.bg ના હેડર સાથે જવાબ આપે છે, અથવા તમે Accept: application/json મોકલો ત્યારે { "data": { "result_b64", "foreground_top", "foreground_left", "foreground_width", "foreground_height" } }. એરર remove.bg નું માળખું વાપરે છે: { "errors": [{ "title", "code", "detail" }] }. /v1/remove થી વિપરીત, તે ક્યારેય 202 આપતો નથી: તે 110 સેકન્ડ સુધી રાહ જુએ છે, પછી 503 timeout આપે છે. જોબ ચાલુ રહે છે અને સફળ થાય તો ચાર્જ થાય છે, એટલે તે રિક્વેસ્ટ ફરી મોકલવાથી બીજી જોબ શરૂ થાય છે.

પેરામીટરસ્ટેટસનોંધ
image_file / image_file_b64 / image_urlસપોર્ટેડMultipart, urlencoded અથવા JSON બૉડી. 25 MB સુધીની JPG, PNG અથવા WebP.
sizeસપોર્ટેડauto, full, 4k અને 50MP મૂળ રિઝોલ્યુશન આપે છે (25 MP સુધી); preview, small અને regular ≈ 0.25 MP; medium 1.5 MP; hd 4 MP. હંમેશાં 1 ક્રેડિટ.
formatસપોર્ટેડauto (ટ્રાન્સપરન્ટ હોય તો PNG, નહીંતર JPG), png, jpg, webp અને zip (color.jpg + alpha.png).
crop / crop_marginસપોર્ટેડસબ્જેક્ટના px અથવા %, CSS જેવી 1–4 વેલ્યૂ ("10% 20%" = ઊભું, આડું); દરેક બાજુએ વધુમાં વધુ 500px અથવા 50%.
roiસપોર્ટેડpx અથવા % માં "x1 y1 x2 y2": ફક્ત એ વિસ્તારની અંદરનો સબ્જેક્ટ જ રાખવામાં આવે છે.
scale / positionસપોર્ટેડscale 10%–100% અથવા original; position center, original અથવા "x% y%".
channelsસપોર્ટેડrgba (કટ-આઉટ) અથવા alpha (ગ્રેસ્કેલ માસ્ક).
bg_colorસપોર્ટેડ# સાથે કે વગર હેક્સ (81d4fa), અથવા રંગનું નામ. 8-અંકનો હેક્સ રંગ રાખે છે અને તેનો આલ્ફા કાઢી નાખે છે.
bg_image_url / bg_image_fileસપોર્ટેડકટ-આઉટને તમારી બેકગ્રાઉન્ડ ઇમેજ પર મૂકવામાં આવે છે, આઉટપુટ સાઇઝ મુજબ cover-fit કરીને.
Accept: application/jsonસપોર્ટેડપાછું આપે છે { data: { result_b64, foreground_top, foreground_left, foreground_width, foreground_height } }.
type / type_levelસ્વીકારાય છે, અવગણાય છેસબ્જેક્ટ આપમેળે ઓળખાય છે; X-Type હંમેશાં "other" હોય છે.
semitransparencyસ્વીકારાય છે, અવગણાય છેનરમ કિનારીઓ અને અર્ધ-પારદર્શક ભાગ મૉડલના મૅટમાંથી જેમ આવે તેમ જ રહે છે.
shadow_type / shadow_opacity / add_shadowસ્વીકારાય છે, અવગણાય છેકોઈ પડછાયો ઉમેરવામાં આવતો નથી.
લાંબી ચાલતી રિક્વેસ્ટતફાવતઅમે 110 સેકન્ડ સુધી રાહ જોઈએ છીએ; ત્યાં સુધીમાં ઇમેજ તૈયાર ન થાય તો તમને ફરી પ્રયાસ કરી શકાય તેવો 503 મળે છે (પૂર્ણ ન થાય ત્યાં સુધી ચાર્જ નહીં).

ઉદાહરણ

curl -H "X-Api-Key: $REMOVEBG_API_KEY" \
  -F 'image_file=@photo.jpg' -F 'size=auto' \
  -F 'crop=true' -F 'crop_margin=10%' -F 'bg_color=ffffff' \
  -o no-bg.jpg https://removebackground.dev/v1.0/removebg

રિસ્પોન્સ હેડર

હેડરઅર્થ
X-Width / X-Heightપરિણામની સાઇઝ, પિક્સેલમાં.
X-Credits-Chargedઆ ઇમેજે વાપરેલી ક્રેડિટ: હંમેશાં 1 (નિષ્ફળ ઇમેજ માટે 0).
X-Typeહંમેશાં "other" (સબ્જેક્ટની ઓળખ આપમેળે થાય છે).
X-Foreground-Top / -Left / -Width / -Heightપરિણામમાં સબ્જેક્ટનું બાઉન્ડિંગ બૉક્સ, પિક્સેલમાં.
X-Request-IDતમારો X-Request-ID પાછો આપે છે, અથવા બનાવેલો id. વધારાનું.
X-Matte-Confidence / X-Matte-Ambiguous-Ratioમાસ્ક કેટલું સ્વચ્છ છે (0–1), અને નરમ પિક્સેલનું પ્રમાણ. વધારાનું: રિવ્યૂ માટે ઇમેજને ચિહ્નિત કરવામાં ઉપયોગી.

એરર

સ્ટેટસઅર્થ
400અમાન્ય પેરામીટર અથવા ઇમેજ (invalid_size, invalid_crop_margin, missing_source, file_too_large, unknown_foreground જેવા કોડ).
402insufficient_credits: કિંમત પેજ પર ટોપ-અપ કરો.
403auth_failed: X-Api-Key ખૂટે છે અથવા અમાન્ય છે.
429rate_limit_exceeded.
500 / 503પ્રોસેસિંગ નિષ્ફળ થયું, સમય પૂરો થયો અથવા સર્વિસ થોડા સમય માટે ઉપલબ્ધ નથી. ફરી પ્રયાસ કરો; નિષ્ફળ ઇમેજ મફત છે.

GET /v1.0/account

remove.bg ના એકાઉન્ટ માળખામાં તમારું બૅલેન્સ: { "data": { "attributes": { "credits": { "total", "subscription": 0, "payg", "enterprise": 0 }, "api": { "free_calls": 0, "sizes": "all" } } } }. બધી ક્રેડિટ જરૂર મુજબ ખરીદેલી છે અને તેની ક્યારેય મુદત પૂરી થતી નથી, એટલે total બરાબર payg. તમારી X-Api-Key સાથે GET https://removebackground.dev/v1.0/account કરો.

એરર (/v1 એન્ડપૉઇન્ટ)

નિષ્ફળ ઇમેજ ક્યારેય ચાર્જ થતી નથી.

સ્ટેટસકોડઅર્થ
400missing_image, invalid_url, invalid_body, invalid_json, invalid_image_b64, invalid_format, invalid_bg_color, invalid_size, invalid_crop, invalid_padding, invalid_type, invalid_channels, invalid_width, invalid_height, invalid_fit, invalid_roi, fetch_failed, fetch_timeout, rejected, too_many_images, invalid_imagesરિક્વેસ્ટ અથવા ઇમેજ URL વાપરી શકાય તેમ નથી.
401unauthorizedx-api-key ખૂટે છે, ખોટી છે અથવા રદ થયેલી છે.
402insufficient_credits, out_of_creditsતમારું બૅલેન્સ ખાલી છે. કિંમત પેજ પર ટોપ-અપ કરો.
404not_foundઆવી કોઈ જોબ નથી (અથવા તે તમારી નથી).
409not_ready, canceled, idempotency_key_reusedજોબ ચાલુ હોય ત્યારે GET …/result (2 s પછી ફરી પ્રયાસ કરો), જોબ રદ થઈ, અથવા Idempotency-Key બીજી રિક્વેસ્ટ માટે ફરી વપરાઈ.
410result_unavailableપરિણામ ડિલીટ થઈ ગયું અથવા તેની મુદત પૂરી થઈ.
413too_largeઇમેજ 25 MB થી મોટી છે.
422processing_failed, invalid_image, missing_uploadફાઇલ વાંચી શકાય તેવી ઇમેજ નથી. ચાર્જ થયો નથી.
429rate_limited, too_many_batchesએકાઉન્ટ દીઠ રિક્વેસ્ટ મર્યાદા વટાવી (Retry-After રાહ જુઓ), અથવા તમારી 3 બૅચ જોબ પહેલેથી ચાલુ છે.
502model_unavailable, upstream_error, …રીટ્રાય પછી પણ અમે ઇમેજ પ્રોસેસ કરી શક્યા નહીં. ચાર્જ થયો નથી.
503server_paused, unavailableAPI થોભાવેલું છે (લૉન્ચ પહેલાં) અથવા થોડા સમય માટે ઉપલબ્ધ નથી. પછી ફરી પ્રયાસ કરો.

બૅચ, શરૂથી અંત સુધી

1. સબમિટ કરો

curl -X POST https://removebackground.dev/v1/batch \
  -H "x-api-key: $REMOVEBG_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{ "image_urls": ["https://example.com/front.jpg", "https://example.com/back.jpg"], "format": "png", "size": "hd" }'

100 જેટલા પબ્લિક ઇમેજ URL, ઉપરાંત /v1/remove ના કોઈપણ વિકલ્પો. ઉપરના બે પ્લેસહોલ્ડર URL જો વાસ્તવિક ઇમેજ હોત તો વધુમાં વધુ 2 ક્રેડિટ લાગત. જવાબ તરત જ આવે છે:

202 Accepted
{
  "id": "3f6c2a9e-8d1b-4c7a-9e2f-5b8d0a1c4e77",
  "status": "queued",
  "total": 2,
  "invalid": 0,
  "duplicates": 0,
  "status_url": "https://removebackground.dev/v1/jobs/3f6c2a9e-8d1b-4c7a-9e2f-5b8d0a1c4e77"
}

invalid એવી એન્ટ્રી ગણે છે જે http(s) URL નથી અને duplicates પુનરાવર્તનો ગણે છે; બંને છોડી દેવાય છે અને ક્યારેય ચાર્જ થતાં નથી. id સેવ કરી રાખો: રીસ્ટાર્ટ પછી જોબ ફરી પકડવા માટે તે જ કામ લાગે છે.

2. જોબ પોલ કરો

done true ન થાય ત્યાં સુધી દર થોડી સેકન્ડે GET /v1/jobs/:id કરો. status queued થી processing માં જાય છે, પછી succeeded, partial (કેટલીક ઇમેજ નિષ્ફળ) અથવા failed તરીકે પૂર્ણ થાય છે. જે આઇટમ ફરી અજમાવાઈ રહી હોય તે retrying બતાવે છે.

{
  "id": "3f6c2a9e-…",
  "status": "partial",
  "done": true,
  "total": 2, "succeeded": 1, "failed": 1, "skipped": 0,
  "credits_charged": 1,
  "items": [
    { "position": 0, "input": "https://example.com/front.jpg", "status": "succeeded",
      "removal_id": "…", "width": 1600, "height": 1200, "format": "png",
      "result_url": "https://removebackground.dev/v1/jobs/3f6c2a9e-…/result?item=0" },
    { "position": 1, "input": "https://example.com/back.jpg", "status": "failed",
      "error": { "code": "fetch_failed", "message": "…" } }
  ]
}

3. દરેક પરિણામ ડાઉનલોડ કરો

દરેક સફળ આઇટમ માટે GET /v1/jobs/:id/result?item=N (અથવા તેનું result_url વાપરો). item એ શૂન્યથી શરૂ થતી position છે. અમાન્ય અને પુનરાવર્તિત URL દૂર થયા પછી પોઝિશન તમારી યાદીને અનુસરે છે, એટલે જ્યારે આમાંથી કોઈ ગણતરી 0 થી વધુ હોય, ત્યારે પરિણામો ઇન્ડેક્સથી નહીં પણ input થી મેળવો.

  • done true થાય પછી બૅચ 3 ખુલ્લા બૅચની મર્યાદામાં ગણાતો નથી.
  • API માં કોઈ cancel એન્ડપૉઇન્ટ, webhook કે ZIP ડાઉનલોડ નથી. બલ્ક પેજ પરથી શરૂ કરેલા બૅચ ત્યાં જ રદ કરી શકાય છે અથવા ZIP તરીકે ડાઉનલોડ કરી શકાય છે.

રીટ્રાય, ડુપ્લિકેટ અને બિલિંગ

Idempotency-Key મોકલો અને રીટ્રાયમાં બે વાર ચાર્જ નહીં લાગે. POST /v1/remove અથવા POST /v1/batch માં Idempotency-Key હેડર ઉમેરો (255 અક્ષર સુધીની કોઈપણ અનન્ય સ્ટ્રિંગ, જેમ કે UUID), દરેક ઇમેજ અથવા બૅચ માટે એક કી. જો તમે એ જ કી સાથે એ જ રિક્વેસ્ટ ફરી મોકલો, તો પહેલી રિક્વેસ્ટે બનાવેલી જોબ જ મળે છે, Idempotent-Replayed: true સાથે: કોઈ નવી જોબ નહીં અને કોઈ નવો ચાર્જ નહીં, ભલે પહેલી રિક્વેસ્ટ હજી ચાલુ હોય. અલગ ઇમેજ અથવા વિકલ્પો સાથે એ જ કી વાપરો તો જવાબ 409 idempotency_key_reused આવે છે. કી તમારા એકાઉન્ટની છે અને તેની મુદત પૂરી થતી નથી.

કી વગર, દરેક POST નવી જોબ બનાવે છે, અને સફળ થતી દરેક જોબ પર 1 ક્રેડિટ લાગે છે (remove.bg-કૉમ્પેટિબલ POST /v1.0/removebg માં કી નથી). જોબ વાંચવી (GET /v1/jobs/…) હંમેશાં મફત છે અને વારંવાર કરવી સુરક્ષિત છે.

IDEMPOTENCY_KEY=$(uuidgen)   # one per image; send the same one on every retry

curl -X POST https://removebackground.dev/v1/remove \
  -H "x-api-key: $REMOVEBG_API_KEY" \
  -H "Idempotency-Key: $IDEMPOTENCY_KEY" \
  -F 'image_file=@photo.jpg' \
  -o photo-no-bg.png

શેમાં ક્રેડિટ લાગે છે

પરિસ્થિતિચાર્જ
પ્રોસેસિંગ પહેલાં જ રિક્વેસ્ટ નકારાઈ (ખોટી કી, ખોટો વિકલ્પ, ખૂબ મોટી, ક્રેડિટ પૂરી)મફત.
ઇમેજ પ્રોસેસ થઈ શકતી નથી (422 અમાન્ય ઇમેજ, અમારા રીટ્રાય પછી 502)મફત.
ઇમેજ સફળ થાય છે1 ક્રેડિટ, એક જ વાર, સફળ થાય ત્યારે ચાર્જ થાય છે. અમારા પોતાના આંતરિક રીટ્રાય વધારાનો ચાર્જ ઉમેરતા નથી.
તમને 202 મળે છેહજી કંઈ નહીં. જોબ ચાલુ રહે છે અને સફળ થાય તો જ 1 ક્રેડિટ ચાર્જ થાય છે.
રાહ જોતી વખતે તમારા ક્લાયન્ટનો ટાઇમઆઉટ થાય છે અથવા કનેક્શન તૂટે છેજોબ ચાલુ રહે છે અને સફળ થાય તો ચાર્જ થાય છે. પરિણામ તમારા સ્ટુડિયોમાં દેખાય છે.
તમે એ જ Idempotency-Key સાથે એ જ રિક્વેસ્ટ બે વાર મોકલો છોએક જોબ, વધુમાં વધુ 1 ક્રેડિટ. પુનરાવર્તનને એ જ જોબ મળે છે (હેડર Idempotent-Replayed: true).
તમે કી વગર એ જ ઇમેજ બે વાર મોકલો છોબે અલગ જોબ; સફળ થતી દરેક પર 1 ક્રેડિટ.
તમે તૈયાર પરિણામ ફરી ડાઉનલોડ કરો છોમફત, સંગ્રહિત હોય ત્યાં સુધી જેટલી વાર જોઈએ તેટલી વાર.
બૅચ આંશિક રીતે સફળ થાય છેસફળ થયેલી દરેક ઇમેજ પર 1 ક્રેડિટ; જોબ પરનું credits_charged કુલ બતાવે છે.
બૅચમાં એ જ URL બે વાર છેએક બૅચની અંદરનાં પુનરાવર્તનો કતારમાં મૂકતાં પહેલાં જ છોડી દેવાય છે અને ક્યારેય ચાર્જ થતાં નથી. અલગ અલગ બૅચમાં સરખા URL અલગ જોબ છે.
બૅચ દરમિયાન ક્રેડિટ પૂરી થઈ જાય છેપહેલેથી પૂર્ણ થયેલી ઇમેજની ચૂકવણી રહે છે; બાકીની skipped (out_of_credits) તરીકે ચિહ્નિત થાય છે અને મફત છે. ક્રેડિટ ખરીદો, પછી બાકીના URL નવા બૅચ તરીકે મોકલો.

ક્યારે ફરી પ્રયાસ કરવો

શું થયુંશું કરવું
GET /v1/jobs/:id અથવા …/result નિષ્ફળ જાય છે (નેટવર્ક એરર, 5xx)ફરી પ્રયાસ કરવો સુરક્ષિત છે: જોબ વાંચવાથી ક્યારેય નવું કામ કે ચાર્જ બનતો નથી. પ્રયાસો વચ્ચે થોડું થોભો.
GET …/result નો જવાબ 409 not_readyRetry-After (2 s) રાહ જુઓ અને ફરી પૂછો. ઇમેજ ફરી સબમિટ ન કરો.
GET …/result નો જવાબ 410 result_unavailableસંગ્રહિત પરિણામ ડિલીટ થઈ ગયું છે. ઇમેજ ફરી પ્રોસેસ કરવી એ નવી જોબ છે અને તેમાં 1 ક્રેડિટ લાગે છે.
POST નો જવાબ 400, 413 અથવા 422પહેલાં રિક્વેસ્ટ અથવા ઇમેજ સુધારો; ફેરફાર વગર મોકલવાથી એ જ જવાબ મળશે.
POST નો જવાબ 401 અથવા 402કી સુધારો અથવા ટોપ-અપ કરો. લૂપમાં ન ફસાઓ.
POST નો જવાબ 429 rate_limitedRetry-After માં આપેલી સેકન્ડ રાહ જુઓ, પછી ફરી મોકલો (એ જ Idempotency-Key સાથે). મિનિટમાં 60 થી વધુ ઇમેજ? POST /v1/batch વાપરો: 100 જેટલી ઇમેજ માટે એક રિક્વેસ્ટ.
POST /v1/batch નો જવાબ 429 too_many_batchesતમારા 3 ખુલ્લા બૅચમાંથી એક પૂર્ણ થાય ત્યાં સુધી રાહ જુઓ (તેને પોલ કરો), પછી સબમિટ કરો.
POST /v1/… નો જવાબ 503 (unavailable, server_paused)કોઈ જોબ બની નથી. થોડી રાહ જોઈને ફરી પ્રયાસ કરો. (remove.bg-કૉમ્પેટિબલ એન્ડપૉઇન્ટ અલગ છે: તેના 503 timeout નો અર્થ છે કે જોબ હજી ચાલુ છે.)
POST /v1/remove નો જવાબ 502તે જોબ નિષ્ફળ ગઈ અને ચાર્જ થઈ નથી. એક રીટ્રાય એટલે નવી જોબ.
POST નો ટાઇમઆઉટ થાય, કનેક્શન તૂટે, અથવા તમને 500 મળેIdempotency-Key હોય તો: એ જ કી સાથે એ જ રિક્વેસ્ટ ફરી મોકલો; તમને મૂળ જોબ મળશે. કી ન હોય તો, જોબ કદાચ પહેલેથી બની ગઈ હોય અને ચાર્જ થઈ શકે: પહેલાં તમારો સ્ટુડિયો તપાસો.
POST નો જવાબ 409 idempotency_key_reusedતે કી પહેલેથી બીજી ઇમેજ અથવા વિકલ્પો માટે વપરાઈ ગઈ છે. દરેક નવી ઇમેજ માટે નવી કી બનાવો.

મર્યાદાઓ અને સ્ટોરેજ

મર્યાદાવેલ્યૂમર્યાદા વટાવે ત્યારે એરર
ઇમેજ ફાઇલ25 MB (25 × 1024 × 1024 બાઇટ્સ); JPG, PNG અથવા WebP, ફાઇલના બાઇટ્સ પરથી ઓળખાય છે413 too_large · 422 processing_failed
Base64 / JSON બૉડીડીકોડ કર્યા પછી 25 MB (રિક્વેસ્ટ બૉડી લગભગ ત્રીજા ભાગ જેટલી મોટી હોઈ શકે)413 too_large
ઇનપુટ રિઝોલ્યુશન25 MP થી મોટી ઇમેજ પ્રોસેસિંગ પહેલાં 25 MP સુધી નાની કરાય છે—
આઉટપુટ સાઇઝwidth અને height દરેક 1–6000 px400 invalid_width / invalid_height
image_url ડાઉનલોડફક્ત http(s), 15 s ટાઇમઆઉટ, 3 સુધી રીડાયરેક્ટ; ખાનગી, loopback અને link-local સરનામાં દરેક રીડાયરેક્ટ પર નકારાય છે400 invalid_url · fetch_failed · fetch_timeout
POST /v1/remove માં રાહલગભગ 55 s, પછી job id સાથે 202202
બૅચની સાઇઝદરેક POST /v1/batch માં 100 ઇમેજ URL400 too_many_images
ખુલ્લા બૅચદરેક એકાઉન્ટ દીઠ 3 અપૂર્ણ મલ્ટિ-ઇમેજ જોબ (એકલ ઇમેજ ગણાતી નથી)429 too_many_batches
રિક્વેસ્ટ દરદરેક એકાઉન્ટ દીઠ મિનિટમાં 60 રિક્વેસ્ટ, POST /v1/remove, /v1/batch અને /v1.0/removebg મળીને. બૅચ, ગમે તેટલી સાઇઝનો હોય, એક જ વાર ગણાય છે. જોબ વાંચવા પર કોઈ મર્યાદા નથી429 rate_limited (Retry-After સાથે)

પરિણામો કેટલો સમય રખાય છે

દરેક પરિણામ બન્યા પછી 48 કલાક સુધી તમારા એકાઉન્ટમાં ખાનગી રીતે સંગ્રહિત રહે છે, પછી ડિલીટ કરવામાં આવે છે. ત્યાં સુધી તમે તેને GET /v1/jobs/:id/result વડે અથવા તમારા સ્ટુડિયોમાંથી મફતમાં ફરી ડાઉનલોડ કરી શકો છો. તે પછી પરિણામની લિંકનો જવાબ 410 result_unavailable આવે છે; ઇમેજ ફરી પ્રોસેસ કરવી એ નવી જોબ છે. ઇમેજ ગયા પછી પણ જોબ સ્ટેટસના રેકોર્ડ વાંચી શકાય છે. અપલોડ કેવી રીતે સંભાળાય છે તે માટે ગોપનીયતા નીતિ જુઓ; અમે મૉડલને તાલીમ આપવા તમારી ઇમેજ વાપરતા નથી.

સુરક્ષા

તમારી API કી તમારા નિયંત્રણ હેઠળના સર્વર પર રાખો. તેને બ્રાઉઝર કોડ, મોબાઇલ ઍપ, પબ્લિક રિપોઝિટરી કે URL માં ન મૂકો. તમારા પોતાના યુઝર્સને બેકગ્રાઉન્ડ દૂર કરવા દેવા, તેમની ઇમેજ તમારા બૅકએન્ડ દ્વારા મોકલો, અને ત્યાં તમારું પોતાનું સાઇન-ઇન અને ખર્ચ મર્યાદા ઉમેરો.

  • API માં CORS ચાલુ છે જેથી તે ટૂલ અને સર્વર-સાઇડ કોડમાંથી કામ કરે. તેનો અર્થ એ નથી કે વેબ પેજમાં કી મૂકવી સુરક્ષિત છે: ત્યાં કોઈપણ તેને વાંચી શકે છે.
  • એકાઉન્ટ પરની બધી કી એ જ ક્રેડિટ બૅલેન્સ વાપરે છે. તમારા એકાઉન્ટ પેજ પર દરેક ઍપ અથવા એન્વાયર્નમેન્ટ માટે અલગ કી બનાવો, જેથી એકને રદ કરવાથી બીજી બંધ ન થાય.
  • જો કોઈ કી લીક થાય, તો તરત જ એકાઉન્ટ પેજ પર તેને રદ કરો (તે તરત કામ કરતી બંધ થઈ જાય છે) અને નવી બનાવો. અમે દરેક કીનો ફક્ત હૅશ સંગ્રહિત કરીએ છીએ, એટલે તે તમને ફરી બતાવી શકતા નથી.

સમસ્યા નિવારણ

લક્ષણશું થઈ રહ્યું છે
મારું PNG ખૂલતું નથીબૉડી JSON હતી (202 જોબ અથવા એરર), ઇમેજ નહીં. સેવ કરતા પહેલાં HTTP સ્ટેટસ અને Content-Type તપાસો.
મારી સ્ક્રિપ્ટનો ટાઇમઆઉટ થયો પણ ઇમેજ સ્ટુડિયોમાં દેખાય છેતમે રાહ જોવાનું બંધ કર્યા પછી પણ જોબ ચાલુ રહી. ફરી મોકલવાને બદલે તેના job id વડે મેળવો.
એક ઇમેજ માટે મારી પાસેથી બે વાર ચાર્જ લેવાયોતે Idempotency-Key વગર બે વાર મોકલાઈ હતી (ઘણી વાર ટાઇમઆઉટ પછી આપમેળે થતો રીટ્રાય). દરેક ઇમેજ માટે એક કી મોકલો અને રીટ્રાયમાં તે જ ફરી વાપરો.
URL મારા બ્રાઉઝરમાં ખૂલે છે પણ API તેને મેળવી શકતું નથીહોસ્ટને કદાચ કૂકીઝ કે લૉગિનની જરૂર હોય, સર્વરને બ્લૉક કરતું હોય, 3 થી વધુ વાર રીડાયરેક્ટ કરતું હોય, 15 s થી વધુ સમય લેતું હોય, અથવા સાઇન કરેલા URL ની મુદત પૂરી થઈ હોય. તેના બદલે ફાઇલ અપલોડ કરો.
મારો બૅચ અધવચ્ચે અટકી ગયોજોબમાં items[] જુઓ: નિષ્ફળ આઇટમમાં એરર કોડ હોય છે; out_of_credits સાથેની skipped આઇટમનો અર્થ છે કે બૅલેન્સ પૂરું થઈ ગયું.
કોઈ વિકલ્પ કંઈ કરતો હોય એવું લાગતું નથીઅજાણ્યાં પેરામીટર નામ ચૂપચાપ અવગણાય છે. પેરામીટર ટેબલ સાથે સ્પેલિંગ મેળવી જુઓ. /v1.0/removebg પર, remove.bg ના કેટલાક વિકલ્પો સ્વીકારાય છે પણ અવગણાય છે (તે ટેબલ જુઓ).
બેકગ્રાઉન્ડ ટ્રાન્સપરન્ટ નથીJPG ટ્રાન્સપરન્ટ હોઈ શકતું નથી. format=png અથવા webp વાપરો અને bg_color સેટ ન કરો.
પરિણામની લિંક 410 આપે છેસંગ્રહિત પરિણામ ડિલીટ થઈ ગયું છે. ફરી પ્રોસેસ કરવામાં 1 ક્રેડિટ લાગે છે.