הסרת רקע ידנית לוקחת כמה דקות לכל תמונה. כדי לעשות את זה לכל העלאת מוצר, תמונת פרופיל או תמונה ממוזערת באפליקציה שלכם צריך API להסרת רקע: בקשת HTTP אחת נכנסת, תמונה גזורה ומוכנה יוצאת.
המדריך הזה מראה איך לשלב API כזה כמו שצריך. תקבלו קוד עובד ב־cURL, Python ו־JavaScript, את אפשרויות הפלט שכדאי להכיר, איך לטפל בתמונות איטיות ובמשימות בכמויות, ואיך לנסות שוב בלי לשלם פעמיים. הדוגמאות משתמשות ב־removebackground.dev, מוצר אחות שלנו, אבל הדפוסים מתאימים לכל ספק.
איך עובד API להסרת רקע
אתם שולחים תמונה, הספק מריץ מודל סגמנטציה שמפריד את האובייקט מהרקע, ומקבלים בחזרה תמונה חדשה. הליבה של התוצאה היא ערוץ אלפא: ערך לכל פיקסל שאומר כמה מהפיקסל שייך לאובייקט. פיקסלים אטומים לגמרי הם האובייקט, פיקסלים שקופים לגמרי הם רקע, והערכים שביניהם מטפלים בקצוות רכים כמו שיער, פרווה וזכוכית.
מתוך המסכה הזו, ה־API יכול להחזיר כמה דברים:
- גזירה שקופה, בדרך כלל PNG או WebP בלי רקע
- האובייקט על צבע אחיד, משוטח ל־JPG עבור מרקטפלייסים שדורשים רקע לבן
- המסכה עצמה, תמונה בגווני אפור שאפשר להשתמש בה בתהליך הקומפוזיציה שלכם
- גרסה חתוכה או מוקטנת, מותאמת לאובייקט ולגודל מדויק
הבקשה היא החלק הקל. שילוב בסביבת פרודקשן צריך גם להתמודד עם תמונות שלוקחות יותר זמן מהרגיל, אצוות גדולות, מגבלות קצב, ניסיונות חוזרים ושמירה על מפתח ה־API הרחק מהמשתמשים.
מה לבדוק ב־API להסרת רקע
לפני שכותבים קוד, בדקו את הנקודות האלה מול התמונות והתעבורה שלכם.
| קריטריון | מה לבדוק | למה זה חשוב |
|---|---|---|
| איכות הקצוות | שיער, פרווה, חפצים שקופים ורקעים עמוסים ב־20 עד 50 מהתמונות שלכם | ההבדל בין ספקים מתגלה במקרים הקשים |
| שיטות קלט | העלאת קובץ, URL ציבורי, base64, בייטים גולמיים | קובע אם אפשר לקרוא ל־API מ־worker של תור בלי להוריד קודם את התמונות |
| אפשרויות פלט | פורמט, צבע רקע, חיתוך, ריווח, גודל מדויק, פלט מסכה | חוסך שלב נוסף של עיבוד תמונה אצלכם |
| תמונות איטיות | מה קורה כשתמונה לוקחת יותר זמן מה־timeout של ה־HTTP שלכם | בלי מזהה משימה אתם עלולים לשלם פעמיים כשתנסו שוב |
| עבודה בכמויות | endpoint לאצוות, גודל אצווה, איך מדווחים כשלים חלקיים | קובע איך מעבדים ייבוא של קטלוגים |
| חיוב | חיוב לפי הצלחה או לפי בקשה, מנוי או קרדיטים, האם קרדיטים פגים | תמונות שנכשלו וניסיונות חוזרים מצטברים בהיקפים גדולים |
| מגבלות | גודל קובץ, רזולוציה, מגבלת קצב, זמן שמירת התוצאות | קובע את תכנון התור והאחסון שלכם |
| פרטיות | כמה זמן נשמרים העלאות ותוצאות, האם התמונות משמשות לאימון מודלים | לעיתים קרובות דרישה מחייבת של לקוחות |
שלב 1: צרו מפתח API
הירשמו ב־removebackground.dev וצרו מפתח בדף החשבון. חשבונות חדשים מקבלים 50 קרדיטים בחינם, מספיק כדי להריץ את הדוגמאות שלמטה ולבדוק על התמונות שלכם.
שמרו את המפתח במשתנה סביבה בשרת:
export REMOVEBG_API_KEY="your_api_key"
כל קריאה שולחת את המפתח בכותרת x-api-key, וכל קריאה צורכת את הקרדיטים של אותו חשבון. צרו מפתח נפרד לכל אפליקציה או סביבה, כדי שתוכלו לבטל אחד בלי לשבור את האחרים.
שלב 2: הסרת רקע עם cURL
ה־endpoint בזמן אמת הוא POST https://removebackground.dev/v1/remove. הבדיקה המהירה ביותר היא העלאת קובץ:
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
רוב התמונות הבודדות חוזרות מוכנות באותה תגובה, בדרך כלל תוך כמה שניות, כ־PNG שקוף ברזולוציה מלאה.
ה־endpoint מקבל את התמונה בארבע דרכים. שלחו אחת מהן:
| קלט | איך לשלוח |
|---|---|
| image_file | נתוני טופס multipart. JPG, PNG או WebP, עד 25 MB |
| image_url | כתובת http(s) ציבורית. ה־API מוריד אותה, עוקב אחרי עד 3 הפניות, עם timeout של 15 שניות |
| image_file_b64 | Base64 בגוף JSON, עם או בלי קידומת data:image, עד 25 MB אחרי פענוח |
| גוף גולמי | הבייטים של התמונה עם Content-Type image/jpeg, image/png, image/webp או application/octet-stream |
אם בקשה כוללת כמה מהם, image_file גובר, אחריו image_file_b64, אחריו image_url, ואחריו הגוף הגולמי. אפשר לשלוח אפשרויות כשדות טופס, מפתחות JSON או ערכי query string.
דבר אחד לשים לב אליו: -o שומר את הגוף בלי קשר לסטטוס. אם המפתח שגוי או שהתמונה לא תקינה, ה"PNG" שלכם הוא בעצם שגיאת JSON. בדקו את קוד הסטטוס לפני שסומכים על הקובץ.
שלב 3: טיפול ב־200, 202 ושגיאות ב־Python
API להסרת רקע לא יכול להבטיח שכל תמונה תסתיים בתוך בקשת HTTP אחת. כשהתור עמוס במיוחד ותמונה לוקחת יותר מכ־55 שניות, removebackground.dev מחזיר 202 Accepted עם מזהה משימה במקום התמונה. המשימה ממשיכה לרוץ, ואתם מביאים את התוצאה לפי המזהה.
| סטטוס | גוף | מה לעשות |
|---|---|---|
| 200 | התמונה (image/png, image/jpeg או image/webp) | שמרו אותה. השתמשו ב־Content-Type כדי לבחור את סיומת הקובץ |
| 202 | JSON עם id, status, status_url ו־result_url | חכו כמה שניות ואז בקשו את התוצאה ב־GET. אל תשלחו את התמונה שוב |
| 4xx או 5xx | JSON: {"error": {"code", "message"}} | קראו את הקוד. אל תשמרו את הגוף כתמונה |
הכלל החשוב: אף פעם אל תשלחו את התמונה שוב אחרי 202. זה מתחיל משימה שנייה ועלול לעלות קרדיט נוסף. הנה גרסת Python מלאה ששולחת את התמונה פעם אחת ומנסה שוב רק את הקריאות הבטוחות:
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: a retry with the same key returns the same job, never a second charge.
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 is the image; anything else raises
# 202: still processing. Wait for the same job.
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 /v1/jobs/{job_id} later.")
print(remove_background("https://example.com/photo.jpg"))
היא דורשת Python 3 ו־requests (pip install requests). שני פרטים קל לפספס. ראשית, עצירת הסקריפט לא עוצרת את המשימה: היא עדיין עשויה להסתיים ולהיות מחויבת, והתוצאה תופיע ב־Studio של החשבון שלכם. שנית, GET /v1/jobs/:id/result מחזיר 409 not_ready כל עוד המשימה רצה, אז התייחסו לזה כ"לחכות", לא ככישלון.
אותו תהליך ב־JavaScript (Node.js)
אותו תהליך ב־Node.js 18 ומעלה, עם fetch, FormData ו־Blob המובנים, והעלאת קובץ מקומי:
import { readFile, writeFile } from "node:fs/promises"
import { randomUUID } from "node:crypto"
const API = "https://removebackground.dev"
const KEY = process.env.REMOVEBG_API_KEY // server side only
const EXT = { "image/png": ".png", "image/jpeg": ".jpg", "image/webp": ".webp" }
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms))
async function save(res, stem) {
const mime = (res.headers.get("content-type") || "").split(";")[0]
if (res.status !== 200 || !EXT[mime]) {
throw new Error("HTTP " + res.status + ": " + (await res.text()).slice(0, 500))
}
const path = stem + EXT[mime]
await writeFile(path, Buffer.from(await res.arrayBuffer()))
return path
}
export async function removeBackground(filePath, stem = "result", maxWaitMs = 300000) {
const form = new FormData()
form.append("image_file", new Blob([await readFile(filePath)]), "upload")
form.append("format", "png")
const res = await fetch(API + "/v1/remove", {
method: "POST",
// Reuse the same Idempotency-Key if you retry this POST.
headers: { "x-api-key": KEY, "Idempotency-Key": randomUUID() },
body: form,
})
if (res.status !== 202) return save(res, stem)
const { id } = await res.json()
const deadline = Date.now() + maxWaitMs
while (Date.now() < deadline) {
await sleep(2000)
const result = await fetch(API + "/v1/jobs/" + id + "/result", {
headers: { "x-api-key": KEY },
})
if (result.status === 409) {
const body = await result.json()
if (body.error && body.error.code === "not_ready") continue
throw new Error("Job " + id + ": " + body.error.code)
}
return save(result, stem)
}
throw new Error("Job " + id + " is still running. Check /v1/jobs/" + id + " later.")
}
console.log(await removeBackground("photo.jpg"))
ה־API מקבל בקשות CORS, וזה שימושי לכלים ולבדיקות. זה לא הופך את הקריאה מדף אינטרנט שהמפתח שלכם נמצא בו לבטוחה. עוד על כך בפרק האבטחה שלמטה.
שלב 4: שליטה בפלט
רוב האפליקציות לא רוצות גזירה גולמית ברזולוציה מלאה. הן רוצות תמונת מוצר ריבועית על רקע לבן, תצוגה מקדימה קטנה או מסכה. כשמבקשים מה־API את הקובץ הסופי, נחסך שלב עיבוד נוסף. אלה האפשרויות של /v1/remove:
| פרמטר | ערכים | מה הוא עושה |
|---|---|---|
| format | png, jpg, webp | פורמט הפלט. ברירת המחדל png. ל־JPG אין שקיפות והוא משוטח על bg_color, או על לבן |
| bg_color | Hex (ffffff, #fff), rgb(255, 255, 255) או שם צבע | ממלא את הרקע. ברירת המחדל שקוף |
| size | preview, medium, hd, full | תקרת מגה־פיקסלים עם שמירה על יחס הממדים, בלי הגדלה: preview עד 0.25 MP, medium 1.5 MP, hd 4 MP, full הוא המקור (עד 25 MP) |
| crop | true, false או יחס כמו 1:1, 4:5, 16:9 | חותך סביב האובייקט. עם יחס, המסגרת מורחבת ליחס הזה סביב האובייקט |
| padding | פיקסלים, שבר או אחוז | ריווח שנוסף סביב האובייקט בזמן חיתוך, עד 500 px |
| channels | rgba, rgb, alpha | גזירה שקופה (ברירת מחדל), תמונה אטומה או מסכה בגווני אפור שבה האובייקט לבן |
| width, height | 1 עד 6000 | גודל פלט מדויק בפיקסלים, מוחל אחרי החיתוך. אף פעם לא נמתח |
| fit | contain, cover, scale-down | איך התמונה מותאמת כשמגדירים גם width וגם height |
| roi | x1 y1 x2 y2 ב־px או % | רק האובייקט שבתוך האזור הזה נשמר |
כל אפשרות עולה אותו קרדיט אחד, ופרמטרים לא מוכרים מתעלמים מהם בשקט, כך ששגיאת הקלדה לא תגרום לשגיאה. תמונה ריבועית למרקטפלייס עם המוצר במרכז ו־10% ריווח נראית כך:
curl -X POST https://removebackground.dev/v1/remove \
-H "x-api-key: $REMOVEBG_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
תגובה מוצלחת כוללת גם כותרות שימושיות. X-Credits-Remaining מציגה את היתרה אחרי התמונה. X-Matte-Confidence (0 עד 1) אומרת כמה המסכה חד־משמעית, ו־X-Matte-Ambiguous-Ratio נותנת את שיעור הפיקסלים הרכים, כמו שיער, זכוכית או טשטוש תנועה. רישום של שתי אלה בלוג מאפשר לסמן גזירות עם ביטחון נמוך לבדיקה אנושית במקום לבדוק כל תמונה.
שלב 5: עיבוד תמונות בכמויות
לייבוא קטלוגים ולעיבוד לאחור, אל תשלחו מאות בקשות בודדות. POST /v1/batch מכניס לתור עד 100 כתובות URL ציבוריות של תמונות כמשימה אחת, עם אותן אפשרויות כמו /v1/remove, ומחזיר 202 מיד:
import os
import time
import uuid
import requests
API = "https://removebackground.dev"
s = requests.Session()
s.headers["x-api-key"] = os.environ["REMOVEBG_API_KEY"]
urls = ["https://example.com/front.jpg", "https://example.com/back.jpg"]
job = s.post(f"{API}/v1/batch",
json={"image_urls": urls, "format": "png", "size": "hd"},
headers={"Idempotency-Key": str(uuid.uuid4())}, timeout=30)
job.raise_for_status()
job_id = job.json()["id"] # save it: it's how you resume after a restart
while True:
time.sleep(3)
status = s.get(f"{API}/v1/jobs/{job_id}", timeout=30).json()
if status["done"]:
break
print(status["status"], "credits charged:", status["credits_charged"])
for item in status["items"]:
if item["status"] != "succeeded":
print("failed:", item["input"], item.get("error"))
continue
img = s.get(item["result_url"], timeout=60)
with open(f"out-{item['position']}.{item['format']}", "wb") as f:
f.write(img.content)
כמה כללים מהתיעוד שכדאי לתכנן סביבם:
- סטטוס המשימה מסתיים כ־succeeded, partial (חלק מהתמונות נכשלו) או failed. לכל פריט ב־
itemsיש סטטוס משלו, ובמקרה של כישלון גם קוד שגיאה. - רשומות שאינן כתובות http(s) וכתובות כפולות מוסרות ולא מחויבות. כשאחד מהמספרים האלה גדול מ־0, התאימו את התוצאות לפי
inputולא לפי מיקום. - אפשר להחזיק לכל היותר 3 משימות אצווה פתוחות לחשבון. אצווה מפסיקה להיספר כש־
doneהוא true. - אם הקרדיטים נגמרים באמצע אצווה, התמונות שהסתיימו נשארות משולמות והשאר מסומנות כמדולגות עם out_of_credits, בלי חיוב.
- ל־API אין endpoint לביטול, אין webhooks ואין הורדת ZIP, ולכן הדפוס הוא בדיקה חוזרת (polling). קריאת משימה היא בחינם ולא כפופה למגבלת קצב.
מעדיפים סקריפט שאפשר להריץ כמו שהוא? המדריך לעיבוד באצוות עם Python עובר על תהליך מלא מתיקייה לתיקייה.
שלב 6: ניסיונות חוזרים בטוחים וחיוב צפוי
timeouts ברשת הם המקור לחיובים כפולים. הלקוח שלכם מוותר, מנסה שוב, ועכשיו יש שתי משימות לתמונה אחת. הפתרון הוא כותרת Idempotency-Key: כל מחרוזת ייחודית באורך של עד 255 תווים, למשל UUID, אחת לכל תמונה או אצווה. אם שולחים שוב את אותה בקשה עם אותו מפתח, מקבלים את המשימה שהבקשה הראשונה יצרה, עם הכותרת Idempotent-Replayed: true, ובלי חיוב חדש. שימוש חוזר במפתח עבור תמונה אחרת מחזיר 409 idempotency_key_reused.
| תגובה | מה לעשות |
|---|---|
| שגיאת רשת, timeout או 500 על POST | שלחו שוב את אותה בקשה עם אותו Idempotency-Key |
| 429 rate_limited | חכו את מספר השניות שב־Retry-After, ואז שלחו שוב עם אותו מפתח |
| 429 too_many_batches | חכו עד שאחת מ־3 האצוות הפתוחות שלכם תסתיים |
| 400, 413 או 422 | תקנו את הבקשה או את התמונה. שליחה חוזרת בלי שינוי תחזיר את אותה תשובה |
| 401 או 402 | תקנו את המפתח או טענו קרדיטים. אל תיכנסו ללולאה |
| 409 not_ready על תוצאה | חכו 2 שניות ובקשו שוב. אל תשלחו את התמונה מחדש |
| 410 result_unavailable | התוצאה השמורה נמחקה. עיבוד מחדש הוא משימה חדשה ועולה קרדיט אחד |
| 502 על POST | המשימה הזו נכשלה ולא חויבה. ניסיון חוזר הוא משימה חדשה |
החיוב פועל לפי כלל פשוט: קרדיט אחד כשתמונה מצליחה, כלום כשהיא נכשלת. בקשות שנדחו לפני העיבוד, תמונות שלא ניתן לקרוא וכשלים אחרי הניסיונות החוזרים של הספק עצמו הם בחינם, והורדה חוזרת של תוצאה מוכנה היא בחינם כל עוד היא שמורה.
מגבלות שצריך לתכנן סביבן
| מגבלה | ערך |
|---|---|
| קובץ תמונה | 25 MB, JPG, PNG או WebP, מזוהה לפי הבייטים של הקובץ |
| רזולוציית קלט | תמונות מעל 25 MP מוקטנות ל־25 MP לפני העיבוד |
| גודל פלט | רוחב וגובה, כל אחד מ־1 עד 6000 px |
| הורדת image_url | http(s) בלבד, timeout של 15 שניות, עד 3 הפניות. כתובות פרטיות וכתובות loopback נדחות |
| המתנה ב־POST /v1/remove | כ־55 שניות, ואז 202 עם מזהה משימה |
| גודל אצווה | 100 כתובות URL של תמונות לבקשה |
| אצוות פתוחות | 3 לחשבון |
| קצב בקשות | 60 בקשות בדקה לחשבון בכל ה־endpoints של POST יחד. אצווה נספרת פעם אחת, בלי קשר לגודלה |
| שמירת תוצאות | 48 שעות, ואז הן נמחקות |
אם אתם צריכים יותר מ־60 תמונות בדקה, ה־endpoint של האצוות הוא הפתרון: בקשה אחת מכסה עד 100 תמונות. שמרו את התוצאות ב־bucket משלכם מיד כשאתם מורידים אותן, כי אחרי 48 שעות קישורי התוצאות מחזירים 410. לפי התיעוד של הספק, תמונות שהועלו לא משמשות לאימון מודלים.
מעבר מה־API של remove.bg
האתר העצמאי וה־API בשירות עצמי של remove.bg מסתיימים ב־1 בדצמבר 2026, בשעה 09:00 CET. ה־API שלו עובר ל־Leonardo.Ai, וזה מחייב לשנות את השילוב שלכם. אם אתם מעדיפים לא לכתוב שום דבר מחדש, ל־removebackground.dev יש endpoint תואם remove.bg, והמעבר הוא שורה אחת:
| לפני | אחרי |
|---|---|
| https://api.remove.bg/v1.0/removebg | https://removebackground.dev/v1.0/removebg |
אתם שומרים על אותה כותרת X-Api-Key (עם מפתח של removebackground.dev), אותם שמות פרמטרים, אותן כותרות תגובה ואותו פורמט שגיאות:
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
הכירו את ההבדלים לפני המעבר:
- אין 202. ה־endpoint התואם מחכה עד 110 שניות ואז מחזיר timeout מסוג 503. המשימה ממשיכה לרוץ ומחויבת אם היא מצליחה, כך שניסיון חוזר עיוור של הבקשה הזו מתחיל משימה שנייה.
- אין מפתחות idempotency ב־endpoint הזה. אם אתם צריכים ניסיונות חוזרים בטוחים, עברו עם הזמן ל־
/v1/remove. - חלק מהאפשרויות מתקבלות אבל לא משפיעות: type ו־type_level (האובייקט מזוהה אוטומטית), semitransparency ואפשרויות הצל (לא מתווספים צללים).
- כל גודל עולה קרדיט אחד, כולל רזולוציה מלאה.
מדריך המעבר כולל קוד לפני ואחרי עבור cURL, Python, Node ו־PHP, וגם שלבים עבור Zapier, Make ו־n8n.
שמרו את מפתח ה־API מחוץ לצד הלקוח
זו הטעות שעולה כסף אמיתי. אם המפתח שלכם נמצא בדף אינטרנט, באפליקציה, במאגר קוד ציבורי או בכתובת URL, כל אחד יכול לקרוא אותו ולבזבז את הקרדיטים שלכם.
- כדי לאפשר למשתמשים שלכם להסיר רקעים, העבירו את התמונות שלהם דרך ה־backend שלכם וקראו ל־API משם.
- הוסיפו ב־backend הזה התחברות משלכם ומגבלות הוצאה לכל משתמש.
- השתמשו במפתח אחד לכל אפליקציה או סביבה.
- אם מפתח דלף, בטלו אותו בדף החשבון. הוא מפסיק לעבוד מיד. הספק שומר רק hash של כל מפתח, אז צרו מפתח חדש במקום לנסות לשחזר את הישן.
דוגמה: גזירות לתמונות ממוזערות ביוטיוב
אם אתם בונים כלים ליוצרים, תמונות ממוזערות הן שימוש מתבקש. תמונה ממוזערת נראית בעיקר בגודל קטן, ולכן הגזירה צריכה לשאת אותה: פנים או מוצר אחד, גדולים, עם קצה ברור מול רקע פשוט. YouTube ממליץ על 3840 x 2160 px ביחס 16:9 עם רוחב מינימלי של 640 px, ומקבל JPG או PNG עד 50 MB מהמחשב, אבל רק 2 MB מהאפליקציה.
בצד ה־API זו קריאה אחת שמחזירה PNG שקוף חתוך סביב האובייקט, מוכן להנחה על קנבס 16:9:
curl -X POST https://removebackground.dev/v1/remove \
-H "x-api-key: $REMOVEBG_API_KEY" \
-F 'image_file=@me.jpg' \
-F 'crop=true' -F 'padding=5%' \
-o me-cutout.png
צלמו תמונת סטילס לגזירה במקום לקחת פריים מהסרטון, כי פריימים מטושטשים לעיתים קרובות מתנועה, והשאירו את הפינה הימנית התחתונה פנויה, כי שם YouTube מציג את אורך הסרטון. הדף על תמונות ממוזערות ליוטיוב מכסה את צד העיצוב, והמדריך שלנו להשגת 1,000 המנויים הראשונים מסביר למה תמונות ממוזערות חשובות כל כך.
הסרת רקע מתוך ChatGPT, Claude או Cursor
לא כל משימה דורשת קוד. removebackground.dev מפעיל גם שרת MCP בכתובת https://removebackground.dev/mcp, כך שאפשר להעלות תמונה ב־ChatGPT, Claude, Cursor, VS Code או n8n ולבקש להסיר את הרקע. ב־Claude Code זו פקודה אחת:
claude mcp add --transport http removebackground https://removebackground.dev/mcp
אחר כך הקלידו /mcp ב־Claude Code כדי להתחבר. השרת חושף שלושה כלים: remove_background, get_job להסרות שלוקחות יותר מכמה שניות, ו־check_credits. כל תמונה עולה קרדיט אחד, כמו ב־API.
כמה זה עולה
removebackground.dev עובד בתשלום לפי שימוש, בלי מנוי. הקרדיטים לא פגים, תמונות שנכשלו לא מחויבות, וחשבונות חדשים מקבלים 50 קרדיטים בחינם. דרך ה־API, קרדיט אחד הוא הסרת רקע מוצלחת אחת ברזולוציה מלאה.
| חבילה | קרדיטים | מחיר | לתמונה |
|---|---|---|---|
| Starter | 4,000 | $17 | $0.0043 |
| Pro | 15,000 | $49 | $0.0033 |
| Scale | 40,000 | $99 | $0.0025 |
המחירים בדולר אמריקאי (USD), וקרדיטים שלא נוצלו ניתנים להחזר תוך 30 יום. תמחור לכמויות מעל Scale זמין לפי בקשה. ראו את דף המחירים לפרטים העדכניים.
לסיכום
שילוב טוב של API להסרת רקע מסתכם בכמה הרגלים: שמרו את המפתח בשרת, בדקו את הסטטוס לפני ששומרים את הגוף, חכו למשימה במקום לשלוח שוב אחרי 202, שלחו Idempotency-Key עם כל POST, והשתמשו ב־endpoint של האצוות לעבודה בכמויות.
התיעוד המלא, כולל מפרט OpenAPI 3.1, נמצא בתיעוד ה־API. אם אתם עובדים גם עם וידאו ולא רק עם תמונות, ההשוואה שלנו בין APIs לתמלול YouTube ומדריך השילוב של המרת דיבור לטקסט משתמשים באותם דפוסי פרודקשן עבור טקסט.
שאלות נפוצות
מה זה API להסרת רקע?+
זה endpoint של HTTP שמקבל תמונה ומחזיר את אותה תמונה בלי הרקע, בדרך כלל כ־PNG עם רקע שקוף. אתם שולחים קובץ, כתובת URL או base64, והספק מריץ בשבילכם את מודל הסגמנטציה.
איך מסירים רקע מתמונה ב־Python?+
השתמשו בספריית requests כדי לשלוח את התמונה ב־POST ל־API עם המפתח בכותרת, ושמרו את גוף התגובה לקובץ כשהסטטוס הוא 200. אם ה־API יכול להחזיר 202 על תמונות איטיות, בדקו את כתובת התוצאה של המשימה במקום לשלוח את התמונה שוב. דוגמת ה־Python במדריך הזה מטפלת בשני המקרים.
כמה עולה API להסרת רקע?+
זה תלוי בספק. removebackground.dev גובה קרדיט אחד לכל תמונה שהצליחה, עם חבילות קרדיטים מ־$17 עבור 4,000 קרדיטים ($0.0043 לתמונה) ועד $99 עבור 40,000 קרדיטים ($0.0025 לתמונה). אין מנוי, הקרדיטים לא פגים, תמונות שנכשלו לא מחויבות, וחשבונות חדשים מקבלים 50 קרדיטים בחינם.
אפשר להמשיך להשתמש בקוד של remove.bg אחרי שה־API של remove.bg ייסגר?+
ה־API בשירות עצמי של remove.bg מסתיים ב־1 בדצמבר 2026, בשעה 09:00 CET. ל־removebackground.dev יש endpoint תואם remove.bg, כך שמשנים את הכתובת מ־https://api.remove.bg/v1.0/removebg ל־https://removebackground.dev/v1.0/removebg ומשתמשים במפתח של removebackground.dev באותה כותרת X-Api-Key.
אפשר לקרוא ל־API להסרת רקע ישירות מהדפדפן?+
לא כדאי. כל אחד יכול לקרוא מפתח API שנשלח בתוך דף אינטרנט או אפליקציה. העבירו את התמונות דרך ה־backend שלכם, שמרו את המפתח שם, והוסיפו התחברות ומגבלות הוצאה משלכם למשתמשים.
איך מקבלים PNG שקוף במקום רקע לבן?+
בקשו פלט PNG או WebP והשאירו את צבע הרקע לא מוגדר. JPG לא יכול לשמור שקיפות, ולכן תוצאה ב־JPG תמיד משוטחת על צבע אחיד.