背景削除API · ガイド

APIで画像の背景を削除する方法:背景透過PNGを自動で作成

背景削除APIの開発者向けガイド:リクエストを1回送るだけで背景透過PNGが返ってきます。動くcURL、Python、JavaScriptのコードに加え、一括処理、リトライ、制限、そしてremove.bgのセルフサービスAPI終了への対応方法も紹介します。

2026年10月24日 更新 · 12分で読めます

写真の背景を手作業で削除すると、1枚あたり数分かかります。アプリにアップロードされるすべての商品画像、プロフィール写真、サムネイルで同じことをするには、背景削除APIが必要です。HTTPリクエストを1回送れば、切り抜き済みの画像が返ってきます。

このガイドでは、背景削除APIを正しく組み込む方法を紹介します。動くcURL、Python、JavaScriptのコード、知っておくべき出力オプション、時間のかかる画像や一括処理の扱い方、二重課金にならないリトライの方法を解説します。コード例では姉妹製品のremovebackground.devを使っていますが、考え方はどのプロバイダーにも当てはまります。

背景削除APIの仕組み

画像を送ると、プロバイダーが被写体と背景を分離するセグメンテーションモデルを実行し、新しい画像が返ってきます。結果の中心になるのはアルファチャンネルです。これはピクセルごとの値で、各ピクセルがどの程度被写体に属するかを示します。完全に不透明なピクセルが被写体、完全に透明なピクセルが背景で、その中間の値が髪の毛、毛皮、ガラスのような柔らかい輪郭を表現します。

このマットから、APIはいくつかの形式で結果を返せます:

  • 背景透過の切り抜き画像:通常は背景を削除したPNGまたはWebP
  • 単色背景の被写体:白背景が必須のマーケットプレイス向けにJPGに合成したもの
  • マスクそのもの:独自の合成パイプラインで使えるグレースケール画像
  • 切り抜きまたはリサイズ版:被写体に合わせてトリミングし、指定サイズに収めたもの

リクエスト自体は簡単な部分です。本番環境の組み込みでは、通常より時間がかかる画像、大量のバッチ、レート制限、リトライ、そしてAPIキーをユーザーから隠すことにも対応する必要があります。

背景削除APIを選ぶときのポイント

コードを書く前に、自分の画像とトラフィックに照らして次の点を確認しましょう。

基準確認すること重要な理由
輪郭の品質自分の画像20〜50枚で、髪の毛、毛皮、透明な物体、ごちゃごちゃした背景を試すプロバイダーの差は難しいケースで現れる
入力方法ファイルアップロード、公開URL、base64、生のバイト画像を先にダウンロードせずにキューワーカーから呼び出せるかが決まる
出力オプションフォーマット、背景色、切り抜き、余白、指定サイズ、マスク出力自分側での2回目の画像処理を省ける
時間のかかる画像画像の処理がHTTPタイムアウトより長くかかった場合の挙動ジョブIDがないと、リトライ時に二重に支払う可能性がある
一括処理バッチ用エンドポイント、バッチサイズ、一部失敗の報告方法カタログ取り込みの処理方法が決まる
課金成功ごとかリクエストごとか、サブスクリプションかクレジットか、クレジットの有効期限大量処理では失敗した画像やリトライの費用がかさむ
制限ファイルサイズ、解像度、レート制限、結果の保存期間キューとストレージの設計が決まる
プライバシーアップロードと結果の保存期間、画像がモデルの学習に使われるか顧客から必須要件として求められることが多い

ステップ1:APIキーを作成する

removebackground.devでサインアップし、アカウントページでキーを作成します。新規アカウントには50クレジットが無料で付与され、以下のコード例を実行したり、自分の画像で試したりするには十分です。

キーはサーバーの環境変数に保存します:

export REMOVEBG_API_KEY="your_api_key"

すべての呼び出しはx-api-keyヘッダーでキーを送り、そのアカウントのクレジットを消費します。アプリや環境ごとに別のキーを作成しておけば、1つを無効にしても他に影響しません。

ステップ2:cURLで背景を削除する

リアルタイム用のエンドポイントは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です。

エンドポイントは4つの方法で画像を受け付けます。いずれか1つを送ってください:

入力送り方
image_fileマルチパートのフォームデータ。JPG、PNG、WebPで最大25 MB
image_url公開されたhttp(s)のURL。APIがダウンロードし、リダイレクトは最大3回まで追跡、タイムアウトは15秒
image_file_b64JSON本文内のbase64。data:imageプレフィックスの有無は問わず、デコード後で最大25 MB
生の本文Content-Typeをimage/jpeg、image/png、image/webp、application/octet-streamにした画像のバイト

1つのリクエストに複数含まれている場合は、image_file、image_file_b64、image_url、生の本文の順に優先されます。オプションはフォームフィールド、JSONのキー、クエリ文字列のいずれでも送れます。

注意点が1つあります。-oはステータスに関係なく本文を保存します。キーが間違っていたり画像が無効だったりすると、その「PNG」の中身は実はJSONのエラーです。ファイルを信用する前にステータスコードを確認してください。

ステップ3:Pythonで200、202、エラーを処理する

背景削除APIは、すべての画像が1回のHTTPリクエスト内で処理し終わるとは保証できません。キューが異常に混雑していて画像の処理に約55秒以上かかる場合、removebackground.devは画像の代わりにジョブIDを付けて202 Acceptedを返します。ジョブは処理を続けているので、IDを使って結果を取得します。

ステータス本文すべきこと
200画像(image/png、image/jpeg、image/webp)保存する。Content-Typeでファイル拡張子を決める
202id、status、status_url、result_urlを含むJSON数秒待ってから結果をGETする。画像は再送しない
4xxまたは5xxJSON:{"error": {"code", "message"}}codeを確認する。本文を画像として保存しない

一番大事なルールは202の後に画像を再送しないことです。再送すると2つ目のジョブが始まり、2クレジット目がかかる可能性があります。画像を1回だけ送り、安全な呼び出しだけをリトライする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)が必要です。見落としやすい点が2つあります。1つ目に、スクリプトを止めてもジョブは止まりません。ジョブはそのまま完了して課金される可能性があり、結果はアカウントのStudioに表示されます。2つ目に、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リクエストを受け付けるので、ツールやテストには便利です。ただし、キーを含めたWebページから呼び出しても安全というわけではありません。詳しくは後述のセキュリティのセクションで説明します。

ステップ4:出力をコントロールする

ほとんどのアプリが欲しいのは、フル解像度の切り抜きそのものではありません。白背景の正方形の商品画像、小さなプレビュー、あるいはマスクです。最終的なファイルをAPIに直接要求すれば、2回目の処理を省けます。/v1/removeで使えるオプションは次のとおりです:

パラメータ値機能
formatpng, jpg, webp出力フォーマット。デフォルトはpng。JPGは透明度がなく、bg_colorまたは白に合成される
bg_color16進数(ffffff、#fff)、rgb(255, 255, 255)、または色名背景を塗りつぶす。デフォルトは透明
sizepreview, medium, hd, fullアスペクト比を保ったメガピクセルの上限で、拡大はしない:previewは最大0.25 MP、mediumは1.5 MP、hdは4 MP、fullは元のサイズ(最大25 MP)
croptrue、false、または1:1、4:5、16:9のような比率被写体に合わせてトリミングする。比率を指定すると、被写体を中心にその比率まで枠を広げる
paddingピクセル、小数、またはパーセント切り抜き時に被写体の周りに追加する余白。最大500 px
channelsrgba, rgb, alpha背景透過の切り抜き(デフォルト)、不透明な画像、または白が被写体のグレースケールマスク
width, height1〜6000ピクセル単位の正確な出力サイズで、切り抜きの後に適用される。引き伸ばしはしない
fitcontain, cover, scale-downwidthとheightの両方を指定したときの画像の収め方
roix1 y1 x2 y2(pxまたは%)この領域内の被写体だけを残す

どのオプションも同じ1クレジットで、不明なパラメータは何も言わずに無視されるため、タイプミスしてもエラーにはなりません。商品を中央に配置し、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は髪の毛、ガラス、モーションブラーなどの柔らかいピクセルの割合を示します。この2つを記録しておけば、すべての画像をチェックする代わりに、確信度の低い切り抜きだけを人の確認に回せます。

ステップ5:画像を一括処理する

カタログの取り込みや過去データの処理では、単体のリクエストを何百回も送らないでください。POST /v1/batchは最大100件の公開画像URLを1つのジョブとしてキューに入れ、/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)のURLでない項目と重複したURLは除外され、課金されません。どちらかの件数が0より大きい場合は、位置ではなくinputで結果を照合してください。
  • 1つのアカウントで同時に開けるバッチジョブは最大3件です。doneがtrueになると、そのバッチはカウントされなくなります。
  • バッチの途中でクレジットがなくなった場合、完了した画像は課金されたままで、残りはout_of_creditsとしてskippedになり、料金はかかりません。
  • APIにはキャンセル用のエンドポイント、Webhook、ZIPダウンロードがないため、ポーリングが基本のパターンです。ジョブの読み取りは無料で、レート制限もありません。

そのまま実行できるスクリプトが欲しい場合は、Pythonでの一括処理ガイドでフォルダからフォルダへの完全なワークフローを紹介しています。

ステップ6:安全にリトライし、課金を予測可能にする

二重課金はネットワークのタイムアウトから生まれます。クライアントが諦めてリトライすると、1枚の画像に対してジョブが2つできてしまいます。解決策はIdempotency-Keyヘッダーです。UUIDなど255文字以内の一意の文字列を、画像またはバッチごとに1つ使います。同じキーで同じリクエストを再送すると、最初のリクエストが作成したジョブがIdempotent-Replayed: trueヘッダー付きで返され、新たな課金は発生しません。別の画像に同じキーを再利用すると、409 idempotency_key_reusedが返されます。

レスポンスすべきこと
POSTでのネットワークエラー、タイムアウト、500同じIdempotency-Keyで同じリクエストを再送する
429 rate_limitedRetry-Afterの秒数だけ待ち、同じキーで再送する
429 too_many_batches開いている3件のバッチのいずれかが完了するまで待つ
400、413、422リクエストまたは画像を修正する。そのまま再送しても同じ結果になる
401または402キーを修正するか、クレジットをチャージする。ループしない
結果取得での409 not_ready2秒待って再度問い合わせる。画像を再送信しない
410 result_unavailable保存された結果は削除済み。再処理は新しいジョブとなり1クレジットかかる
POSTでの502そのジョブは失敗しており課金されていない。1回のリトライは新しいジョブになる

課金のルールはシンプルです。画像が成功したら1クレジット、失敗したら無料です。処理前に拒否されたリクエスト、読み取れない画像、プロバイダー側のリトライ後の失敗は無料で、完了した結果の再ダウンロードも保存されている間は無料です。

設計時に考慮すべき制限

制限値
画像ファイル25 MB、JPG、PNG、WebP。ファイルのバイトから判定
入力解像度25 MPを超える画像は処理前に25 MPに縮小される
出力サイズ幅と高さはそれぞれ1〜6000 px
image_urlのダウンロードhttp(s)のみ、タイムアウト15秒、リダイレクトは最大3回。プライベートアドレスとループバックアドレスは拒否される
POST /v1/removeでの待機約55秒、その後ジョブID付きで202
バッチサイズ1リクエストあたり画像URL 100件
開いているバッチアカウントあたり3件
リクエストレートPOSTエンドポイント全体でアカウントあたり毎分60リクエスト。バッチはサイズにかかわらず1回とカウント
結果の保存48時間、その後削除

毎分60枚を超える画像を処理したい場合は、batchエンドポイントを使いましょう。1リクエストで最大100枚を処理できます。結果はダウンロードしたらすぐに自社のバケットに保存してください。48時間を過ぎると結果のリンクは410を返します。プロバイダーのドキュメントによると、アップロードされた画像はモデルの学習には使われません。

remove.bg APIからの移行

remove.bgの単体WebサイトとセルフサービスAPIは2026年12月1日 09:00 CETに終了します。APIはLeonardo.Aiに移行し、組み込みの変更が必要になります。何も書き直したくない場合は、removebackground.devにremove.bg互換のエンドポイントがあり、移行は1行で済みます:

変更前変更後
https://api.remove.bg/v1.0/removebghttps://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はありません。 互換エンドポイントは最大110秒待ち、その後503タイムアウトを返します。ジョブは処理を続け、成功すれば課金されるため、そのリクエストをむやみにリトライすると2つ目のジョブが始まります。
  • このエンドポイントには冪等性キーがありません。安全なリトライが必要なら、徐々に/v1/removeへ移行してください。
  • 一部のオプションは受け付けられますが無視されます: typeとtype_level(被写体は自動で検出されます)、semitransparency、影のオプション(影は追加されません)。
  • サイズにかかわらず常に1クレジットで、フル解像度も含みます。

移行ガイドには、cURL、Python、Node、PHPの変更前と変更後のコードに加え、Zapier、Make、n8nの手順も載っています。

APIキーをクライアントに置かない

これは実際にお金を失うミスです。キーがWebページ、モバイルアプリ、公開リポジトリ、URLに含まれていると、誰でもそれを読み取ってあなたのクレジットを使えてしまいます。

  • 自社のユーザーに背景削除を提供するなら、画像をバックエンド経由で送り、そこからAPIを呼び出してください。
  • そのバックエンドに独自のログインとユーザーごとの利用上限を追加してください。
  • アプリや環境ごとに1つのキーを使ってください。
  • キーが漏れたら、アカウントページで無効にしてください。すぐに使えなくなります。プロバイダーは各キーのハッシュだけを保存しているため、古いキーを復元しようとせず、新しいキーを作成してください。

例:YouTubeサムネイル用の切り抜き

クリエイター向けのツールを作っているなら、サムネイルはわかりやすい用途です。サムネイルはほとんどが小さいサイズで見られるので、切り抜きが主役になります。顔や商品を1つだけ大きく、シンプルな背景に対してくっきりした輪郭で配置します。YouTubeは16:9で3840 x 2160 px、最小幅640 pxを推奨しており、パソコンからはJPGまたはPNGで最大50 MBまで受け付けますが、モバイルアプリからは2 MBまでです。

API側は1回の呼び出しで、被写体に合わせてトリミングされた背景透過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は右下に動画の長さを表示するので、右下の角は空けておきましょう。デザイン面はYouTubeサムネイルのページで、サムネイルがなぜそれほど重要かは最初の1,000人の登録者を獲得するガイドで解説しています。

ChatGPT、Claude、Cursorから背景を削除する

すべての作業にコードが必要なわけではありません。removebackground.devはhttps://removebackground.dev/mcpでMCPサーバーも提供しているので、ChatGPT、Claude、Cursor、VS Code、n8nで写真をアップロードして背景の削除を頼めます。Claude Codeならコマンド1つです:

claude mcp add --transport http removebackground https://removebackground.dev/mcp

その後、Claude Codeで/mcpと入力してサインインします。サーバーは3つのツールを提供します:remove_background、数秒以上かかる削除処理のためのget_job、そしてcheck_creditsです。料金はAPIと同じく画像1枚につき1クレジットです。

料金

removebackground.devはサブスクリプションなしの従量課金制です。クレジットに有効期限はなく、失敗した画像は無料で、新規アカウントには50クレジットが無料で付与されます。APIでは、1クレジットでフル解像度の背景削除が1回成功します。

パッククレジット価格1枚あたり
Starter4,000$17$0.0043
Pro15,000$49$0.0033
Scale40,000$99$0.0025

価格は米ドルで、未使用のクレジットは30日以内なら返金できます。Scaleを超える大口向けの料金はリクエストに応じて用意されています。最新の詳細は料金ページをご覧ください。

まとめ

しっかりした背景削除の組み込みは、いくつかの習慣に集約されます。キーはサーバーに置く、本文を保存する前にステータスを確認する、202の後は再送せずにジョブを待つ、すべてのPOSTにIdempotency-Keyを付ける、そして大量処理にはbatchエンドポイントを使うことです。

OpenAPI 3.1仕様を含む完全なリファレンスはAPIドキュメントにあります。画像だけでなく動画も扱うなら、YouTube文字起こしAPIの比較と音声認識APIの組み込みガイドで、テキスト向けに同じ本番環境のパターンを紹介しています。

よくある質問

背景削除APIとは何ですか?+

画像を受け取り、背景を削除した同じ画像を返すHTTPエンドポイントです。通常は背景が透明なPNGで返されます。ファイル、URL、base64のいずれかを送ると、プロバイダーがセグメンテーションモデルを実行してくれます。

Pythonで画像の背景を削除するには?+

requestsライブラリを使い、キーをヘッダーに入れて画像をAPIにPOSTし、ステータスが200ならレスポンス本文をファイルに保存します。処理に時間がかかる画像でAPIが202を返す場合は、画像を再送せずにジョブの結果URLをポーリングします。このガイドのPythonコード例は両方のケースに対応しています。

背景削除APIの料金はいくらですか?+

プロバイダーによって異なります。removebackground.devは成功した画像1枚につき1クレジットで、クレジットパックは4,000クレジットで$17(1枚あたり$0.0043)から40,000クレジットで$99(1枚あたり$0.0025)まであります。サブスクリプションはなく、クレジットに有効期限はなく、失敗した画像は無料で、新規アカウントには50クレジットが無料で付与されます。

remove.bgのAPIが終了した後も、remove.bg用のコードを使い続けられますか?+

remove.bgのセルフサービスAPIは2026年12月1日 09:00 CETに終了します。removebackground.devにはremove.bg互換のエンドポイントがあるため、URLをhttps://api.remove.bg/v1.0/removebgからhttps://removebackground.dev/v1.0/removebgに変更し、同じX-Api-Keyヘッダーでremovebackground.devのキーを使うだけです。

背景削除APIをブラウザから直接呼び出してもいいですか?+

おすすめしません。Webページやアプリに含まれるAPIキーは誰でも読み取れます。画像は自社のバックエンド経由で送り、キーはそこに保管し、ユーザー向けに独自のログインと利用上限を設けてください。

白背景ではなく背景透過PNGを取得するには?+

PNGまたはWebPでの出力を指定し、背景色は指定しないでください。JPGは透明度を保存できないため、JPGの結果は常に単色の背景に合成されます。

関連記事

今すぐ無料でトランスクリプトの抽出を開始

数秒でYouTubeの動画をテキストに変換します。クレジットカードは必要ありません。

YOUTUBETRANSCRIPT.DEVをお試しください →
APIで画像の背景を削除する方法【cURL・Python・JS】