API za odstranjevanje ozadja RemBG – dokumenti za razvijalce in vodnik za integracijo






OpenAPI · Igrišče v živo

Raziščite celoten API – zaženite prave zahteve v brskalniku

Brskajte po vsaki končni točki, parametrih in odzivih. Preizkusite zahteve s svojim ključem API, nato pa kadar koli zgrabite neobdelano specifikacijo na /api/openapi.

Zaženi interaktivno referenco

Namestitev rembg.js

latest npm versionGitHub starsnpm downloadslicenseGitHub issues

npm i @remove-background-ai/rembg.js
                        

API Reference for rembg.js

@remove-background-ai/rembg.js is a zero-config Node.js wrapper for the free Rembg API, enabling background removal with simple, customizable parameters.

Parameters for RemBG.js
ParameterTypeRequiredDefaultDescription
apiKeystring
Required

Your Rembg API key
inputImagestring | Buffer | { base64: string }
Required

Image file, buffer, or base64 payload
onDownloadProgress(event) => void
Optional

Hook for upload progress events
onUploadProgress(event) => void
Optional

Hook for download progress events
options.formatwebp (default) | png
Optional
webp
Specifies the output image format. Either "webp" (default) or "png"
options.returnBase64boolean
Optional
false
Return Base64 string instead of file
options.returnMaskboolean
Optional
false
Return only the alpha mask
options.wnumber
Optional

Target width (maintains aspect ratio)
options.hnumber
Optional

Target height (maintains aspect ratio)
options.exact_resizeboolean
Optional
false
Force exact width × height (may distort)
options.anglenumber
Optional
0
Rotation angle in degrees
options.expandboolean
Optional
true
Add padding so rotated images aren’t cropped
options.bg_colorstring
Optional
-
Optional solid background color in hex (e.g. #FFFFFFFF) or named color (e.g. "red", "blue")
  • Nastavitev vašega okolja: Zagotovite, da imate v korenu projekta datoteko .env, ki vsebuje vaš ključ API.

  • Uvoz potrebnih modulov: Začnite z uvozom funkcije rembg iz @remove-background-ai/rembg.js in modula dotenv za obdelavo spremenljivk okolja.

  • Konfiguriranje povratnih klicev napredka: Knjižnica ponuja povratne klice onDownloadProgress in onUploadProgress za spremljanje napredka operacij datotek. V navedenem primeru te dogodke beležimo neposredno v konzolo.

Zdaj pa si podrobneje oglejmo vzorec uporabe:


// script.mjs file

import  { rembg } from '@remove-background-ai/rembg.js';
import dotenv from 'dotenv';
// Load environment variables from .env file
dotenv.config();

// API_KEY will be loaded from the .env file
const API_KEY = process.env.API_KEY;

// log upload and download progress
const onDownloadProgress = console.log;
const onUploadProgress = console.log;
rembg({
    apiKey: API_KEY,
    inputImage: './input.png', //inputImage can be one of these: string | Buffer | { base64: string };
    onDownloadProgress,
    onUploadProgress
}).then(({ outputImagePath, cleanup }) => {
    console.log('✅🎉 background removed and saved under path=', outputImagePath);
    // if called, it will cleanup (remove from disk) your removed background image
    // cleanup();
});
					
						

Ne pozabite, da lahko funkcijo čiščenja pokličete, če želite po odstranitvi ozadja z diska odstraniti obdelano sliko.

Prikaz vrstice napredka

Pri integraciji storitve odstranjevanja v ozadju je pogosto koristno, če uporabnikom zagotovite povratne informacije o napredku njihove zahteve za nalaganje ali prenos. Da bi to olajšali, lahko definirate svoja lastna povratna klica onDownloadProgress in onUploadProgress. Oba povratna klica sprejemata AxiosProgressEvent kot parameter dogodka. Ko se zahteva nadaljuje, se ti povratni klici večkrat prikličejo, kar vam omogoča, da na primer prikažete vrstico napredka in prilagodite njeno dolžino glede na napredek.


 (base) root@DESKTOP-C0Q8KK7:~/rembg.js-test# node index.mjs
 {
   loaded: 65687,
   total: 68474,
   progress: 0.9592984198381868, <---- @95% progress 
   bytes: 65687,
   rate: undefined,
   estimated: undefined,
   upload: true  <---- upload progress
 }
 {
   loaded: 68474,
   total: 68474,
   progress: 1, <---- @100% progress 
   bytes: 2787,
   rate: undefined,
   estimated: undefined,
   upload: true <---- upload progress 
 }
 {
   loaded: 1002,
   total: 68824,
   progress: 0.014558874811112402, <---- @1% progress 
   bytes: 1002,
   rate: undefined,
   estimated: undefined,
   download: true <---- download progress 
 }
 {
   loaded: 68824,
   total: 68824,
   progress: 1, <---- @100% progress 
   bytes: 67822,
   rate: undefined,
   estimated: undefined,
   download: true <---- download progress
 }
 ✅🎉 background removed and saved under path=/tmp/rembg--3339-DBqqeJ2eOs4D-.png
					

Članstvo in uporaba dobropisov

Vrne oznako vašega načrta, vključena in predplačniška dobroimetja ter uporabo. Poizvedujete lahko po koledarskem mesecu UTC (podedovano), po obračunskem obdobju, usklajenem s Stripe (za spremljanje z obnovo) ali navedete znana obračunska obdobja. Preverjanje pristnosti samo s ključem API.

Za sheme, primere in preizkusno konzolo si oglejte isto končno točko v celotnem sklicu: Open API docs

Končna točka
GET https://www.rembg.com/api/membership-usage
Preverjanje pristnosti

Pošljite svoj API ključ: header x-api-key: YOUR_API_KEY_HERE (ustvari in upravljaj ključe v svojem profilu na rembg.com).

Parametri poizvedbe
ParameterVrstaOpis
yearnumberKoledarsko leto (1–9999). Z mesecem bere uporabnik ključev Redis:{uid}:app_usage:{year}:{month}. Če je izpuščen (in periodStartUnix ni uporabljen), je privzeto nastavljeno na trenutno leto UTC.
monthnumber (1–12)Koledarski mesec 1–12 (za ključe se uporablja konvencija UTC). Če je izpuščeno, je privzet trenutni mesec UTC.
periodStartUnixnumberČasovni žig Unix v sekundah: začetek obračunskega okna. Bere user:{uid}:app_usage:cycle:{periodStartUnix} in api_usage:cycle:…. Ni mogoče kombinirati z letom ali mesecem.
expandstringZastavice, ločene z vejicami. Vključite billing_cycle, da dodate predmet billingCycle: trenutno obdobje Stripe, ko billing_period_* obstaja v Redisu, sicer trenutni koledarski mesec UTC. Deluje tudi s periodStartUnix za določeno okno.
includeBillingCycle1 / trueEnako kot razširitev, ki vsebuje billing_cycle: nastavite na 1 ali true, da vključite predmet billingCycle.
listBillingCycles1 / trueNamenski način: listBillingCycles=1 ali true vrne samo { billingCycles: [...] }. Pregleda Redis za ciklične ključe za tega uporabnika; drugi parametri poizvedbe so pri tej zahtevi prezrti.

Ne posredujte periodStartUnix skupaj z letom ali mesecem — API vrne 400. Način listBillingCycles je ločen in ignorira druge parametre.

Seznam obračunskih obdobij

Uporabite to za zapolnitev spustnega menija preteklih in trenutnih naročniških oken (vsak vnos je periodStartUnix, ki ga lahko vrnete s periodStartUnix=…). Ugotovljeni so končni časi obdobja (začetek naslednjega obdobja − 1 ali Stripe current_period_end za aktivno obdobje).

curl --location 'https://www.rembg.com/api/membership-usage?listBillingCycles=1' \
  --header 'x-api-key: YOUR_API_KEY_HERE'

Primer odgovora

{
  "billingCycles": [
    {
      "periodStartUnix": 1774268612,
      "periodEndUnix": 1776947012,
      "appUsage": 120,
      "apiUsage": 880
    }
  ]
}

Najprej razvrščeno najnovejše obdobje. Obdobje se prikaže, če obstaja ključ uporabe cikla ali če je trenutni billing_period_start iz webhookov Stripe.

Objekt billingCycle

Prisoten, ko je nastavljena razširitev vključuje billing_cycle ali includeBillingCycle. Uporabite ga za nadzorne plošče: meja podaljšanja, uporaba v oknu in preostali vključeni krediti.

PoljeOpis
periodStartUnixZačetek obračunskega okna (unix sekunde). Ujema se s Stripe current_period_start, ko je račun sinhroniziran.
periodEndUnixKonec trenutnega okna (unix sekunde), tj. tik pred naslednjo obnovitvijo — Stripe current_period_end ob sinhronizaciji. Ni isto kot datum preklica naročnine.
appUsage / apiUsageUporaba vključenega kredita, šteta v tem oknu: splet/urejevalnik (aplikacija) v primerjavi s ključem API (api). usedIncludedCredits je enak njihovi vsoti.
includedCreditsVaše vključeno (načrtovano) dobroimetje, kot je shranjeno v Redis (enaka ideja kot krediti na najvišji ravni).
prepaidCreditsPredplačniško (kupljeno) stanje; ne ponastavi vsakega obračunskega obdobja.
usedIncludedCreditsSkupna vključena uporaba v oknu (aplikacija + API). Predplačniška poraba se tukaj ne prišteva.
remainingIncludedCreditsmax(0, includedCredits − usedIncludedCredits) za ta posnetek.
stripeBillingSyncedtrue, ko ima Redis billing_period_start/end od Stripe, tako da se okno ujema z vašo naročnino; false pomeni, da se je API za ta blok vrnil na koledarski mesec UTC.

Dokler webhooks Stripe ne zapišejo obračunskih obdobij za uporabnika, je lahko stripeBillingSynced napačen in okno billingCycle sledi koledarskemu mesecu UTC. Po sinhronizaciji se omejitve uporabe slikovnega API-ja uskladijo z istimi cikličnimi ključi.

Za »kredite, uporabljene pred naslednjo obnovitvijo«, pokličite z expand=billing_cycle in uporabite billingCycle.periodEndUnix kot mejo obnovitve, billingCycle.usedIncludedCredits (ali appUsage + apiUsage) in billingCycle.remainingIncludedCredits. Dodajte predplačniške kredite, če želite skupno razpoložljivo stanje.

Primeri (cURL)

Poraba za določen koledarski mesec UTC

curl --location 'https://www.rembg.com/api/membership-usage?year=2026&month=3' \
  --header 'x-api-key: YOUR_API_KEY_HERE'

Trenutni obračunski cikel + celoten blok obračunskega cikla (obnovitev poravnana ob sinhronizaciji)

# Current subscription window + usage (renewal-aligned when Stripe is synced)
curl --location 'https://www.rembg.com/api/membership-usage?expand=billing_cycle' \
  --header 'x-api-key: YOUR_API_KEY_HERE'

Eno zgodovinsko obračunsko obdobje po začetku obdobja (s seznama BillingCycles ali Stripe)

# Specific billing period by Stripe period start (unix seconds)
curl --location 'https://www.rembg.com/api/membership-usage?periodStartUnix=1774268612&expand=billing_cycle' \
  --header 'x-api-key: YOUR_API_KEY_HERE'
Primer JSON (z obračunskim ciklom)

App_usage in api_usage na najvišji ravni vedno odražata zahtevani koledarski mesec ali, ko je periodStartUnix nastavljen, števce tega cikla. Če je expand=billing_cycle izpuščen, je billingCycle odsoten.

{
  "membership": "Premium-20000",
  "credits": 18500,
  "prepaidCredits": 2000,
  "app_usage": 8500,
  "api_usage": 10000,
  "billingCycle": {
    "periodStartUnix": 1740441600,
    "periodEndUnix": 1743033599,
    "appUsage": 4200,
    "apiUsage": 5100,
    "includedCredits": 18500,
    "prepaidCredits": 2000,
    "usedIncludedCredits": 9300,
    "remainingIncludedCredits": 9200,
    "stripeBillingSynced": true
  }
}

Če je stripeBillingSynced nastavljen na true, se billingCycle ujema z uveljavljanjem v API-ju za odstranjevanje ozadja. Če je nastavljeno na false, se zanašajte na polja koledarskega meseca ali počakajte, da webhooki izpolnijo billing_period_* v Redisu.

Error Responses

All error responses return a JSON body with a status field matching the HTTP status code.

Single Error Response

HTTP/1.1 400 Bad Request

HTTP/1.1 400 Bad Request
Content-Type: application/json

{
  "error": "Image width (12000px) exceeds the maximum allowed width of 10000px.",
  "field": "image",
  "status": 400
}

HTTP/1.1 400 Bad Request

HTTP/1.1 400 Bad Request
Content-Type: application/json

{
  "error": "Multiple validation errors",
  "details": [
    { "field": "w", "message": "'w' must be an integer, got: 'abc'" },
    { "field": "angle", "message": "'angle' must be between -360 and 360 degrees, got: 500.0" }
  ],
  "status": 400
}
Error Reference
ScenarioStatusError Message
No image provided
400
No image file provided. Please include an 'image' field in your form data.
No file selected
400
No file selected. Please choose an image file to upload.
Unsupported file type
400
File type '.exe' is not supported. Allowed formats: webp, bmp, png, jpg, jpeg
Corrupt image
400
File does not appear to be a valid image (invalid file signature)
Empty file (0 bytes)
400
Uploaded file is empty (0 bytes).
File too large
400
File size (55.2 MB) exceeds the maximum allowed size of 50 MB.
Image too wide
400
Image width (12000px) exceeds the maximum allowed width of 10000px.
Image too tall
400
Image height (15000px) exceeds the maximum allowed height of 10000px.
Bad w or h value
400
'w' must be an integer, got: 'abc'
w or h out of range
400
'w' must be at least 1, got: -5
w or h above max
400
'w' must be at most 10000, got: 15000
Bad angle
400
'angle' must be a number, got: 'ninety'
Angle out of range
400
'angle' must be between -360 and 360 degrees, got: 500.0
Bad output format
400
Invalid format 'gif'. Allowed formats: PNG, JPEG, WEBP, BMP
Bad bg_color
400
Invalid color format '#12345'. Use hex format: #RGB, #RGBA, #RRGGBB, or #RRGGBBAA
mask + bg_color conflict
400
Cannot use 'mask=true' together with 'bg_color'. Choose one or the other.
Email not verified
403
Email address not verified – please check your inbox
Invalid API key
401
invalid api key
Both API key and user token sent
400
This is a mistake: Cannot use both API key and user token
Rate limit exceeded (short-term)
429
You're making requests too quickly, Please Upgrade or slow down.
Rate limit exceeded (daily, anonymous)
429
You've reached your daily limit. Please sign up for more access.
Rate limit exceeded (monthly, authenticated)
429
You've reached your monthly limit. Consider purchasing more credits.
Error Handling Guidelines
  • Check HTTP status code 400 to identify validation errors
  • Parse the error field for the error message
  • Check for the details array when handling multiple validation errors
  • Use the field property to map errors to specific request parameters