ממשק API להסרת רקע של RemBG - מסמכים למפתחים ומדריך שילוב
חקור את ה-API המלא - הפעל בקשות אמיתיות בדפדפן שלך
עיין בכל נקודת קצה, פרמטרים ותגובות. נסה בקשות עם מפתח ה-API שלך, ואז תפוס את המפרט הגולמי ב-/api/openapi בכל עת.
הפעל הפניה אינטראקטיביתהתקנה של rembg.js
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
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| apiKey | string | Required | – | Your Rembg API key |
| inputImage | string | 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.format | webp (default) | png | Optional | webp | Specifies the output image format. Either "webp" (default) or "png" |
| options.returnBase64 | boolean | Optional | false | Return Base64 string instead of file |
| options.returnMask | boolean | Optional | false | Return only the alpha mask |
| options.w | number | Optional | – | Target width (maintains aspect ratio) |
| options.h | number | Optional | – | Target height (maintains aspect ratio) |
| options.exact_resize | boolean | Optional | false | Force exact width × height (may distort) |
| options.angle | number | Optional | 0 | Rotation angle in degrees |
| options.expand | boolean | Optional | true | Add padding so rotated images aren’t cropped |
| options.bg_color | string | Optional | - | Optional solid background color in hex (e.g. #FFFFFFFF) or named color (e.g. "red", "blue") |
הגדרת הסביבה שלך: ודא שיש לך קובץ .env בשורש הפרויקט שלך המכיל את מפתח ה-API שלך.
ייבוא המודולים הדרושים: התחל בייבוא הפונקציה rembg מ-@remove-background-ai/rembg.js ומהמודול dotenv לטיפול במשתני סביבה.
הגדרת התקדמות התקשרות חוזרת: הספרייה מציעה התקשרויות ב-DownloadProgress ו-onUploadProgress כדי לעקוב אחר התקדמות פעולות הקבצים. בדוגמה המצורפת, אנו רושמים אירועים אלה ישירות לקונסולה.
כעת, בואו נסתכל מקרוב על שימוש לדוגמה:
// 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();
});
זכור, ניתן לקרוא לפונקציית הניקוי אם ברצונך להסיר את התמונה המעובדת מהדיסק שלך לאחר הסרת הרקע.
מציג את סרגל ההתקדמות
בעת שילוב שירות הסרת רקע, לעתים קרובות מועיל לספק למשתמשים משוב על התקדמות בקשת ההעלאה או ההורדה שלהם. כדי להקל על זה, אתה יכול להגדיר התקשרות חוזרת של onDownloadProgress ו-onUploadProgress משלך. שתי ההתקשרויות הללו מקבלות את AxiosProgressEvent כפרמטר אירוע. ככל שהבקשה מתקדמת, שיחות חוזרות אלו מופעלות מספר פעמים, מה שמאפשר לך, למשל, להציג סרגל התקדמות ולהתאים את אורכו על סמך ההתקדמות.
(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
Curl
# Full example: upload an image and remove its background with all optional parameters curl -X POST "https://api.rembg.com/rmbg" -H "x-api-key: YOUR_API_KEY_HERE" # your personal API key -F "image=@/path/to/image.jpg" # input image file -F "format=webp" # output format: webp (default) or png -F "w=800" # target width in pixels (maintains aspect ratio unless exact_resize=true) -F "h=600" # target height in pixels -F "exact_resize=false" # true = force exact w × h, may distort -F "mask=false" # true = return only the alpha mask instead of full image -F "bg_color=#ffffffff" # optional solid background color (RGBA hex) -F "angle=0" # rotate the image by given degrees after processing -F "expand=true" # add padding so rotated images don’t get cropped
HTTP
POST /rmbg HTTP/1.1
Host: api.rembg.com
x-api-key: YOUR_API_KEY_HERE
Content-Type: multipart/form-data; boundary=----BOUNDARY
------BOUNDARY
Content-Disposition: form-data; name="image"; filename="image.jpg"
Content-Type: image/jpeg
<binary data of your image goes here>
------BOUNDARY
Content-Disposition: form-data; name="format"
webp
------BOUNDARY
Content-Disposition: form-data; name="w"
800
------BOUNDARY
Content-Disposition: form-data; name="h"
600
------BOUNDARY
Content-Disposition: form-data; name="exact_resize"
false
------BOUNDARY
Content-Disposition: form-data; name="mask"
false
------BOUNDARY
Content-Disposition: form-data; name="bg_color"
#ffffffff
------BOUNDARY
Content-Disposition: form-data; name="angle"
0
------BOUNDARY
Content-Disposition: form-data; name="expand"
true
------BOUNDARY--
Python Requests
import requests
# Endpoint URL for the background-removal API
url = "https://api.rembg.com/rmbg"
# Required API key header
headers = {
"x-api-key": "YOUR_API_KEY_HERE"
}
# The image file to process (opened in binary mode)
files = {
"image": open("/path/to/image.jpg", "rb")
}
# Optional form fields supported by your backend.
# Adjust values as needed; any of these can be omitted.
data = {
"format": "webp", # Output format: "webp" (default) or "png"
"w": 800, # Target width (maintains aspect ratio unless exact_resize is true)
"h": 600, # Target height
"exact_resize": "false", # "true" forces exact w×h, may distort
"mask": "false", # "true" returns only the alpha mask
"bg_color": "#ffffffff", # Optional solid background color (RGBA hex)
"angle": 0, # Rotation angle in degrees
"expand": "true", # Add padding so rotated images aren’t cropped
}
# Send the POST request with headers, file, and extra form data
response = requests.post(url, headers=headers, files=files, data=data)
# Handle the response
if response.status_code == 200:
# Save the processed image to disk
with open("output.webp", "wb") as f:
f.write(response.content)
print("Background removed successfully → saved as output.webp")
else:
# Print error details if the request failed
print("Error:", response.status_code, response.text)
שימוש בחברות ובקרדיטים
מחזיר את תווית התוכנית שלך, יתרות אשראי כלולות ושולמות מראש, ושימוש. אתה יכול לבצע שאילתות לפי חודש קלנדרי של UTC (מדור קודם), לפי תקופת חיוב מיושרת פסים (למעקב באמצעות חידוש), או לרשום תקופות חיוב ידועות. בצע אימות באמצעות מפתח ה-API שלך בלבד.
לסכימות, דוגמאות ומסוף ניסיון, ראה את אותה נקודת קצה בהפניה המלאה: פתח מסמכי API
נקודת קצה
GET https://www.rembg.com/api/membership-usageאימות
שלח את מפתח ה-API שלך: כותרת x-api-key: YOUR_API_KEY_HERE (צור ונהל מפתחות בפרופיל שלך ב-rembg.com).
פרמטרי שאילתה
| פרמטר | סוג | תיאור |
|---|---|---|
| year | number | שנה קלנדרית (1–9999). עם חודש, קורא Redis keys user:{uid}:app_usage:{year}:{month}. אם מושמט (ולא נעשה שימוש ב-periodStartUnix), ברירת המחדל היא שנת UTC נוכחית. |
| month | number (1–12) | חודש קלנדרי 1-12 (מוסכמה של UTC המשמשת למפתחות). אם מושמט, ברירת המחדל היא חודש UTC הנוכחי. |
| periodStartUnix | number | חותמת זמן Unix בשניות: תחילת חלון חיוב. קורא משתמש:{uid}:app_usage:cycle:{periodStartUnix} ו-api_usage:cycle:…. לא ניתן לשלב עם שנה או חודש. |
| expand | string | דגלים מופרדים בפסיקים. כלול billing_cycle כדי להוסיף אובייקט billingCycle: תקופת Stripe נוכחית כאשר billing_period_* קיימת ב-Redis, אחרת החודש הקלנדרי הנוכחי של UTC. עובד גם עם periodStartUnix עבור חלון ספציפי. |
| includeBillingCycle | 1 / true | זהה להרחבה המכילה billing_cycle: מוגדר ל-1 או true כדי לכלול את אובייקט billingCycle. |
| listBillingCycles | 1 / true | מצב ייעודי: listBillingCycles=1 או true מחזיר רק { billingCycles: [...] }. סורק את Redis עבור מפתחות מחזור עבור משתמש זה; מתעלמים מפרמטרי שאילתה אחרים בבקשה זו. |
אל תעבור את periodStartUnix יחד עם שנה או חודש - ה-API מחזיר 400. מצב listBillingCycles נפרד ומתעלם מפרמים אחרים.
רשימת תקופות חיוב
השתמש בזה כדי לאכלס תפריט נפתח של חלונות מנויים קודמים ונוכחיים (כל ערך הוא periodStartUnix שאתה יכול להעביר בחזרה עם periodStartUnix=...). ניתן להסיק את זמני סיום התקופה (תחילת התקופה הבאה - 1, או Stripe current_period_end עבור התקופה הפעילה).
curl --location 'https://www.rembg.com/api/membership-usage?listBillingCycles=1' \ --header 'x-api-key: YOUR_API_KEY_HERE'
תגובה לדוגמה
{
"billingCycles": [
{
"periodStartUnix": 1774268612,
"periodEndUnix": 1776947012,
"appUsage": 120,
"apiUsage": 880
}
]
}מיון התקופה החדשה ביותר תחילה. נקודה מופיעה אם יש מפתח שימוש במחזור או אם זה ה-billing_period_start הנוכחי מ-Stripe webhooks.
האובייקט billingCycle
קיים כאשר הרחבה כוללת billing_cycle או includeBillingCycle מוגדרת. השתמש בו עבור לוחות מחוונים: גבול חידוש, שימוש בחלון ושאר הקרדיטים הכלולים.
| שדה | תיאור |
|---|---|
| periodStartUnix | תחילת חלון החיוב (יוניקס שניות). מתאים ל-Stripe current_period_start כאשר החשבון מסונכרן. |
| periodEndUnix | סוף החלון הנוכחי (יוניקס שניות), כלומר ממש לפני החידוש הבא - Stripe current_period_end כאשר מסונכרן. לא זהה לתאריך ביטול המנוי. |
| appUsage / apiUsage | שימוש כלול באשראי נספר בחלון זה: אינטרנט/עורך (אפליקציה) לעומת מפתח API (API). usedIncludedCredits שווה לסכום שלהם. |
| includedCredits | קצבת האשראי הכלולה (בתוכנית) שלך כפי שמאוחסנת ב-Redis (אותו רעיון כמו זיכויים ברמה העליונה). |
| prepaidCredits | יתרה ששולמה מראש (קנויה); אינו מאפס כל תקופת חיוב. |
| usedIncludedCredits | סך כל השימוש בחלון (אפליקציה + API). צריכה בתשלום מראש לא מתווספת כאן. |
| remainingIncludedCredits | max(0, includedCredits − usedIncludedCredits) עבור תמונת מצב זו. |
| stripeBillingSynced | נכון כאשר ל-Redis יש billing_period_start/end מ-Stripe כך שהחלון תואם את המנוי שלך; false פירושו שה-API ירד חזרה לחודש קלנדרי UTC עבור הבלוק הזה. |
עד ש-Stripe webhooks כתבו תקופות חיוב עבור המשתמש, stripeBillingSynced עשוי להיות שקרי וחלון ה-billingCycle עוקב אחר החודש הקלנדרי של UTC. לאחר הסנכרון, מגבלות השימוש בממשק ה-API של התמונה מתיישרות עם אותם מקשי מחזור.
עבור "זיכויים בשימוש לפני החידוש הבא", התקשר עם expand=billing_cycle והשתמש ב-billingCycle.periodEndUnix כגבול החידוש, billingCycle.usedIncludedCredits (או appUsage + apiUsage), וב-billingCycle.remainingIncludedCredits. הוסף אשראי מראש אם אתה רוצה יתרה פנויה כוללת.
דוגמאות (cURL)
שימוש עבור חודש קלנדרי ספציפי UTC
curl --location 'https://www.rembg.com/api/membership-usage?year=2026&month=3' \ --header 'x-api-key: YOUR_API_KEY_HERE'
מחזור חיוב נוכחי + חסימת מחזור חיוב מלאה (מיושר לחידוש בעת סנכרון)
# 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'
חלון חיוב היסטורי אחד לפי תחילת תקופה (מתוך listBillingCycles או 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'
דוגמה JSON (עם מחזור חיובים)
app_usage ו-api_usage ברמה העליונה משקפים תמיד את החודש הקלנדרי המבוקש או, כאשר periodStartUnix מוגדר, את המונים של המחזור הזה. כאשר expand=billing_cycle מושמט, billingCycle נעדר.
{
"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
}
}כאשר stripeBillingSynced נכון, billingCycle תואם את האכיפה על ממשק ה-API להסרת הרקע. כששקר, הסתמכו על שדות חודש קלנדרי או המתן עד שה-webhooks יאכלס billing_period_* ב-Redis.
Error Responses
All error responses return a JSON body with a status field matching the HTTP status code.
Multiple Validation Errors Response
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
| Scenario | Status | Error 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
errorfield for the error message - Check for the
detailsarray when handling multiple validation errors - Use the
fieldproperty to map errors to specific request parameters