去背 API:一次請求,回傳完成的 PNG。
上傳檔案、傳送公開的圖片 URL,或提供 base64。大多數單張圖片會在同一 HTTP 響應中返回處理結果,通常只需幾秒。如果某張圖片耗時較長,你會收到一個任務 id,用它獲取結果即可,無需重新發送圖片。批次處理由批次端點完成。
每張成功的圖片 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(透明,全解析度)快速開始
複製、貼上,替換 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,最後是原始請求體。這些示例從 REMOVEBG_API_KEY 環境變數讀取金鑰(用 export REMOVEBG_API_KEY=… 設定);注意要使用雙引號,這樣 shell 才會替換變數。
curl -X POST https://removebackground.dev/v1/remove \
-H "x-api-key: $REMOVEBG_API_KEY" \
-F 'image_file=@photo.jpg' \
-o photo-no-bg.pngMultipart 表單資料,欄位為 image_file。JPG、PNG 或 WebP,最大 25 MB。
每個示例都會把響應體儲存為檔案。只有狀態碼為 200 時,該檔案才是圖片;參見處理響應。
處理響應
大多數單張圖片會在同一響應中返回處理結果。當佇列異常繁忙、某張圖片耗時超過約 55 秒時,你會收到 202 Accepted 和一個任務 id。任務會繼續執行:用該 id 獲取結果。重新發送圖片會建立第二個任務,並可能多消耗一個點數。
| 狀態碼 | 響應體 | 如何處理 |
|---|---|---|
200 | 圖片(image/png、image/jpeg 或 image/webp) | 儲存它。根據 Content-Type 選擇副檔名。 |
202 | JSON:{ id, status, status_url, result_url } | 不是圖片。等待幾秒,然後對 result_url 發起 GET 請求。不要重新發送圖片。 |
4xx / 5xx | JSON:{ "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(見下文)。
身份驗證
在 x-api-key 請求頭中傳送你的 API 金鑰。在你的帳戶頁面建立和撤銷金鑰;每次呼叫都會消耗該帳戶的點數。所有端點都位於 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 鍵或查詢字串引數;你也可以直接 POST 原始圖片位元組,並設定 Content-Type: image/jpeg、image/png、image/webp 或 application/octet-stream。最大 25 MB。各輸入方式詳見傳送圖片。
| 引數 | 型別 | 說明 |
|---|---|---|
image_file | file | 圖片(JPG、PNG 或 WebP),以 multipart 表單資料傳送。 |
image_file_b64 | string | base64 格式的圖片,可帶或不帶 data:image/…;base64, 字首(解碼後最大 25 MB)。適合在 JSON 中使用。 |
image_url | string | 圖片的公開 http(s) URL。我們會下載它(最多 3 次重定向,15 s)。如果同時傳送多個,優先使用 image_file,其次是 image_file_b64,然後是 image_url,最後是原始請求體。 |
format | png | jpg | webp | 輸出格式。預設為 png。JPG 不支援透明:會以 bg_color 或白色作為底色合成。 |
bg_color | 顏色 | 填充背景:十六進位制(ffffff、#fff)、rgb(255, 255, 255),或 white、black、red、green、blue、yellow、gray / grey。transparent(預設)保持透明。 |
size | preview | medium | hd | full | 畫素上限(百萬畫素),保持寬高比,絕不放大:preview ≤ 0.25 MP,medium ≤ 1.5 MP,hd ≤ 4 MP,full(預設)為原始解析度(最高 25 MP)。設定了 width 或 height 時忽略。 |
crop | true | false | W:H | 裁剪到主體的邊界框。指定寬高比(1:1、4:5、4:3、16:9…)時,邊界框會圍繞主體擴充套件(絕不縮小)到該比例;超出原圖的區域為透明(或 bg_color)。預設為 false。 |
padding | px | 小數 | % | 配合 crop 使用:每邊增加的邊距。0.1 或 10% = 主體寬度(左/右)和高度(上/下)的十分之一;"10%,7.5%" 分別設定水平和垂直邊距;24px(或大於 1 的純整數)表示畫素,最大 500。預設為 0。 |
channels | rgba | rgb | alpha | rgba(預設):透明去背。rgb:不透明,以 bg_color 或白色作為底色合成。alpha:灰度 PNG 蒙版(白色 = 主體),尺寸和裁剪與去背相同。type=mask 仍可作為 alpha 的別名使用。 |
width / height | 1–6000 | 精確的輸出尺寸(畫素),在裁剪之後應用(覆蓋 size)。只設置其中一個時,另一個按寬高比自動計算。絕不拉伸。 |
roi | x1 y1 x2 y2 | 感興趣區域,單位為 px 或 %(例如 0% 0% 50% 100%)。僅保留區域內的主體;區域外的一切都會成為背景。座標基於原始圖片。預設:整張圖片。 |
fit | contain | cover | scale-down | 配合 width 和 height 使用。contain(預設):完整放入並居中,其餘部分透明(或 bg_color)。cover:填滿整個框,圍繞主體裁掉溢位部分。scale-down:類似 contain,但絕不放大。 |
選項按以下順序應用:roi,size(或之後的 width/height),crop + padding + 寬高比,width/height + fit,然後是 channels 或背景顏色,最後是 format。所有選項都只消耗同樣的 1 點數。未知引數會被忽略。
示例:白底高畫質 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,輸出 Alpha 蒙版
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.png200 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-Confidence | 0–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 秒內未完成(例如佇列異常繁忙時),你會收到 202 和 JSON { id, status, status_url, result_url }(以及 Location 和 Retry-After: 2)。輪詢 status_url 直到 done 為 true,然後下載 result_url。只有圖片處理成功時才扣費一次。沒有 Idempotency-Key 時不要重新發送圖片:那會建立第二個任務。完整示例參見處理響應。
GET /v1/jobs/:id
由 /v1/remove 或 /v1/batch 建立的任務的狀態。使用同一個金鑰;你只能看到自己的任務。
| 欄位 | 含義 |
|---|---|
status | queued、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)。任務仍在執行時返回 409 not_ready 和 Retry-After: 2;如果圖片失敗,則返回該圖片自身的錯誤。
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)。立即返回 202 和 { id, status, total, invalid, duplicates, status_url }。輪詢任務,然後獲取每個條目的 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 金鑰。與 /v1/remove 使用相同的佇列、相同的每張成功圖片 1 點數、相同的輸出品質。遷移指南。
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 超時。任務會繼續執行,成功時扣費,因此重試該請求會建立第二個任務。
| 引數 | 狀態碼 | 說明 |
|---|---|---|
image_file / image_file_b64 / image_url | 支援 | 支援 multipart、urlencoded 或 JSON 請求體。JPG、PNG 或 WebP,最大 25 MB。 |
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 或主體的 % 表示,1–4 個 CSS 風格的值("10% 20%" = 垂直、水平);每邊最多 500px 或 50%。 |
roi | 支援 | "x1 y1 x2 y2",單位為 px 或 %:僅保留區域內的主體。 |
scale / position | 支援 | scale 為 10%–100% 或 original;position 為 center、original 或 "x% y%"。 |
channels | 支援 | rgba(去背)或 alpha(灰度蒙版)。 |
bg_color | 支援 | 十六進位制顏色,帶或不帶 #(81d4fa),或顏色名稱。8 位十六進位制值會保留顏色並丟棄其 alpha。 |
bg_image_url / bg_image_file | 支援 | 去背會疊加在你的背景圖片上,背景圖片以 cover 方式適配輸出尺寸。 |
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)。 |
402 | insufficient_credits:請在價格頁面充值。 |
403 | auth_failed:X-Api-Key 缺失或無效。 |
429 | rate_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 端點)
失敗的圖片從不扣費。
| 狀態碼 | 錯誤碼 | 含義 |
|---|---|---|
400 | missing_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 無法使用。 |
401 | unauthorized | x-api-key 缺失、錯誤或已撤銷。 |
402 | insufficient_credits, out_of_credits | 你的餘額為零。請在價格頁面充值。 |
404 | not_found | 沒有該任務(或該任務不屬於你)。 |
409 | not_ready, canceled, idempotency_key_reused | 任務仍在執行時呼叫了 GET …/result(2 s 後重試)、任務已被取消,或 Idempotency-Key 被用於不同的請求。 |
410 | result_unavailable | 結果已被刪除或已過期。 |
413 | too_large | 圖片超過 25 MB。 |
422 | processing_failed, invalid_image, missing_upload | 該檔案不是可讀取的圖片。不扣費。 |
429 | rate_limited, too_many_batches | 超出每個帳戶的請求頻率限制(等待 Retry-After),或你已有 3 個批次任務正在執行。 |
502 | model_unavailable, upstream_error, … | 多次重試後仍無法處理該圖片。不扣費。 |
503 | server_paused, unavailable | API 已暫停(上線前)或暫時不可用。請稍後重試。 |
批次完整流程
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. 輪詢任務
每隔幾秒呼叫 GET /v1/jobs/:id,直到 done 為 true。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 沒有取消端點、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 是獨立的任務。 |
| 批次處理過程中點數用完 | 已完成的圖片照常計費;其餘圖片標記為已跳過(out_of_credits),不扣費。購買點數後,把剩餘的 URL 作為新批次傳送。 |
何時重試
| 發生了什麼 | 如何處理 |
|---|---|
| GET /v1/jobs/:id 或 …/result 失敗(網路錯誤、5xx) | 可以放心重試:讀取任務不會建立新工作,也不會扣費。重試之間稍作退避。 |
| GET …/result 返回 409 not_ready | 等待 Retry-After(2 s)後再次請求。不要重新提交圖片。 |
| GET …/result 返回 410 result_unavailable | 儲存的結果已被刪除。重新處理圖片會建立新任務,並消耗 1 點數。 |
| POST 返回 400、413 或 422 | 先修正請求或圖片;原樣重新發送會得到相同的結果。 |
| POST 返回 401 或 402 | 修正金鑰或充值。不要迴圈重試。 |
| POST 返回 429 rate_limited | 等待 Retry-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 超時表示任務仍在執行。) |
| 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 | — |
| 輸出尺寸 | 寬度和高度均為 1–6000 px | 400 invalid_width / invalid_height |
| image_url 下載 | 僅限 http(s),15 s 超時,最多 3 次重定向;私有地址、迴環地址和鏈路本地地址在每次重定向時都會被拒絕 | 400 invalid_url · fetch_failed · fetch_timeout |
| 在 POST /v1/remove 中等待 | 約 55 s,之後返回 202 和任務 id | 202 |
| 批次大小 | 每個 POST /v1/batch 最多 100 個圖片 URL | 400 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。 |
| 我的指令碼超時了,但圖片出現在作品庫中 | 你停止等待後任務仍在繼續執行。請用任務 id 獲取結果,而不是重新發送。 |
| 一張圖片被扣了兩次費 | 它在沒有 Idempotency-Key 的情況下被髮送了兩次(通常是超時後的自動重試)。每張圖片使用一個鍵,並在重試時複用。 |
| URL 在我的瀏覽器中能開啟,但 API 無法獲取 | 該主機可能需要 Cookie 或登入、遮蔽伺服器訪問、重定向超過 3 次、耗時超過 15 s,或簽名 URL 已過期。請改為上傳檔案。 |
| 我的批次中途停止了 | 檢視任務中的 items[]:失敗的條目帶有錯誤碼;帶 out_of_credits 的已跳過條目表示餘額已用完。 |
| 某個選項似乎不起作用 | 未知的引數名會被靜默忽略。請對照參數列檢查拼寫。在 /v1.0/removebg 上,部分 remove.bg 選項會被接受但忽略(參見該表)。 |
| 背景不是透明的 | JPG 不支援透明。請使用 format=png 或 webp,並且不要設定 bg_color。 |
| 結果連結返回 410 | 儲存的結果已被刪除。重新處理需消耗 1 點數。 |