Seedance 2.5 is live — 30-second cinematic video with native audio & real-person references
背景削除API:実用画像1枚のコスト計算
2026/09/03

背景削除API:実用画像1枚のコスト計算

背景削除 API の実勢レートから始めて、却下された出力、再試行、ストレージ、レビュー工数を足し、実用画像 1 枚あたりの本当のコストを出します。

2026年9月3日時点におけるmj-v7-remove-bg背景削除API料金は88クレジット、つまり1リクエストあたり$0.088です。これはリクエスト予算の正しい出発点です。しかし、実用的な1枚の切り抜きのコストではありません。

完成した画像でも、ハロが見える、ハンドル開口が失われる、影が潰れる、次のサービスが処理できないフォーマットで届くなど、様々な問題が起こり得ます。このガイドでは、ルートの呼び出し方、安全なポーリング、確定料金の確認、そして実際にレビューに合格した画像1枚のコストを計算する方法を示します。

TL;DR

  • ライブ計算機は2026年9月3日に**mj-v7-remove-bg1リクエストあたり88クレジット($0.088)**を返しました。1クレジット=$0.001です。[1]
  • リクエストは公開HTTP(S)URLをちょうど1つ受け入れます。プロンプト、解像度、速度フラグ、親タスクIDは受け入れません。[2]
  • 動作は非同期です:1回送信し、返されたタスクIDを保存して、タスクエンドポイントをポーリングします。ポーリングはクレジットを消費しません。[3]
  • 予算は合計確定料金 / 承認出力数で計算してください。受け入れ率80%の場合、$0.088/リクエストは1枚あたり$0.11になります。
  • usage.credits: 0の失敗タスクは返金されました。チームが悪いエッジで却下した完成結果は、それでも完了した作業なので、実用画像の計算に含めてください。[3]
  • ボリュームをコミットする前に、自分のカタログから引いた小さいテストセットを実行してください。きれいな製品写真1枚では、髪、ガラス、低コントラスト、または穴のあるオブジェクトについてはほとんど情報になりません。

なぜ表示価格だけでは実際のコストを判断できないのか

アプリで何千枚ものアップロード画像から背景を削除する場合、価格、輪郭の品質、応答時間、解像度、ファイルの受け渡しがすべて結果に影響します。この条件で各サービスをどう比較すべきでしょうか。表示価格だけでは判断できません。実用的な計算は、もっと具体的です:

実用画像のコスト = API合計料金 / レビュー合格画像数

この分母が判断を変えます。細かいエッジを傷つけるような安いエンドポイントは、再試行と手作業による修正を含めると、より高価なものより最終的にコストがかかる可能性があります。

現在の背景削除APIの料金が何を買うか

ライブのMidjourney V7モデルページはRemove BGを軽い編集として表示しています。現在のリクエスト計算は全クレジットで行われ、必要なペイロードのライブ計算は88クレジットです。[1]1クレジット=$0.001なので、予算に**$0.088**を使用してください。

リクエスト数88クレジットでのAPI小計数字が仮定するもの
1$0.0881つの完了削除リクエスト
10$0.8810個の完了リクエスト(受け入れレビュー前)
100$8.80却下された完了出力がない
1,000$88.00ストレージ、レビュー、変換コストがない
10,000$880.00同じ料金、100%受け入れ出力率

詳細な価格ラベルで$0.0873と表示されているのを見かけるかもしれません。クレジット残高の照合にこの分数を使用しないでください。公開価格表と計算機は支払い可能単位を88全クレジットまたは$0.088として表示します。大規模実行の前にライブモデルページを再度確認してください。料金は変更される可能性があります。

API小計は呼び出しの周りの作業を除外しています:

  • サービスが取得できるURLでソースをホストする;
  • 結果をダウンロードして保存する;
  • 透明度、寸法、ファイル互換性を検証する;
  • 手動レビューまたは自動品質チェック;
  • 受け入れ基準を満たさない完了出力;
  • サイズ変更、色補正、影の再構築、または後の合成。

プロトタイプの場合、これらのコストは無視できるかもしれません。カタログスケールでは、APIラインアイテムと同じスプレッドシートに属します。

1つのソースURL、プロンプトなし、親タスクなし

mj-v7-remove-bgは他のMidjourney V7編集操作よりもシンプルです。前のジェネレーションから連鎖しません。image_urlsで既に持っている画像を送信してください。[2]

フィールド必須受け入れられた値
modelはいmj-v7-remove-bg
image_urlsはいちょうど1つの公開HTTP(S)画像URLを含む配列
prompt受け入れられない送信しないでください
model_params受け入れられない速度、タスクID、編集オプションなし
size / resolution受け入れられないルートは出力サイズ制御を提供しません

スキーマは厳密です。別の画像モデルからコピーされたフィールドを追加することは無害なNo-Opではありません。リクエストを無効にします。Base64文字列、data:URL、ローカルパス、認証ブラウザのみのリンクも間違った入力です。制御できるストレージにソースをアップロードし、クッキーやログインなしでロードすることを確認してください。

完全なcURLリクエストは次のとおりです:

curl https://reapi.ai/api/v1/images/generations \
  -H "Authorization: Bearer $REAPI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "mj-v7-remove-bg",
    "image_urls": [
      "https://your-cdn.example/catalog/source-product.png"
    ]
  }'

有効な送信はprocessing状態のタスクレコードを返します。そのidを保存してください。最終画像はPOST応答には到着しません。

1回送信してから期限付きでポーリング

最も安全な初心者実装は2つの別々のアクション:ジョブを作成するPOSTに続いて、その状態を読む限定GET。ポーリングループ内にPOSTを配置しないでください。

このNode.jsサンプルは2.5秒ごとにポーリングし、15分のローカル期限を使用します。タスク参照は2~3秒のペースを推奨し、インフライトタスク読み取りがキャッシュされるため、ポーリング速度が上がるとリクエスト圧力が増加しても画像が早く終わらないことを説明しています。[3]

const API_BASE = 'https://reapi.ai/api/v1';
const API_KEY = process.env.REAPI_API_KEY;
const sourceUrl = process.argv[2];

if (!API_KEY) throw new Error('Set REAPI_API_KEY');
if (!sourceUrl) throw new Error('Pass one public source image URL');

const headers = {
  Authorization: `Bearer ${API_KEY}`,
  'Content-Type': 'application/json',
};

async function readJson(response) {
  const body = await response.json();
  if (!response.ok) {
    const code = body.error?.code ?? response.status;
    const message = body.error?.message ?? 'Request failed';
    throw new Error(`${code}: ${message}`);
  }
  return body;
}

const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));

async function getTask(taskId) {
  for (let attempt = 0; attempt < 4; attempt += 1) {
    let response;
    try {
      response = await fetch(`${API_BASE}/tasks/${taskId}`, {
        headers: { Authorization: `Bearer ${API_KEY}` },
        signal: AbortSignal.timeout(15_000),
      });
    } catch (error) {
      if (attempt === 3) throw error;
      await sleep(1000 * 2 ** attempt);
      continue;
    }

    if (response.status === 429) {
      const seconds = Number(response.headers.get('retry-after'));
      await response.body?.cancel();
      await sleep(Number.isFinite(seconds) ? seconds * 1000 : 5000);
      continue;
    }

    if ([502, 503, 504].includes(response.status)) {
      await response.body?.cancel();
      await sleep(1000 * 2 ** attempt);
      continue;
    }

    return readJson(response);
  }

  throw new Error(`Task ${taskId} could not be read after transient errors`);
}

async function removeBackground(imageUrl) {
  const submitted = await readJson(
    await fetch(`${API_BASE}/images/generations`, {
      method: 'POST',
      headers,
      body: JSON.stringify({
        model: 'mj-v7-remove-bg',
        image_urls: [imageUrl],
      }),
      signal: AbortSignal.timeout(30_000),
    })
  );

  const deadline = Date.now() + 15 * 60 * 1000;

  while (Date.now() < deadline) {
    await sleep(2500);
    const task = await getTask(submitted.id);

    if (task.status === 'completed') {
      const urls = task.output?.image_urls ?? [];
      if (urls.length === 0) {
        throw new Error('Task completed without an image URL');
      }
      return {
        taskId: task.id,
        imageUrls: urls,
        credits: task.usage?.credits,
      };
    }

    if (task.status === 'failed') {
      const code = task.error?.code ?? 'UNKNOWN_TASK_ERROR';
      const message = task.error?.message ?? 'Background removal failed';
      const credits = task.usage?.credits ?? 'unknown';
      throw new Error(
        `${code}: ${message}; task=${task.id}; settled_credits=${credits}`
      );
    }
  }

  throw new Error(`Polling deadline reached for task ${submitted.id}`);
}

removeBackground(sourceUrl)
  .then(console.log)
  .catch((error) => {
    console.error(error.message);
    process.exitCode = 1;
  });

実行します:

REAPI_API_KEY=rk_live_xxx node remove-background.mjs \
  https://your-cdn.example/catalog/source-product.png

本番環境では、Submitハンドラーから戻る前にデータベースにタスクIDを書き込みます。ワーカーはプロセス再起動後のポーリングを再開できます。APIキーをサーバーに保持します。ブラウザJavaScriptまたはモバイルアプリバンドルに配置しないでください。

実際に失敗したライブリクエストのコスト

2026年9月3日にこのガイドをチェック中に、自分のマグカップ写真を使用してmj-v7-remove-bgリクエストを送信しました。 APIは厳密なペイロードをタスク task_01a065b32dbe771eb5babd28de9b38d9として受け入れましたが、後にfailed状態で終了しました エラーコード80003と メッセージService authentication failedが出ました。出力を返さず usage.credits: 0だったので、確定コストは $0で、$0.088ではありませんでした。

成功した例を作るためだけに同じリクエストを再送信しませんでした。この1回の実行はタスクと返金パスを確認します。それ以上のカットアウト品質、ファイルタイプ、寸法、アルファサポート、または通常の完了時間については説明されていません。上記の88クレジット数は完了するリクエストのライブ計算のままです。送信カウントに公開レートを掛ける代わりに、常に終了タスクを読んでください。[3]

リクエスト価格を実用画像1枚のコストに変換

達成したいパーセンテージではなく、受け入れルールから始めてください。その後、出荷する予定の作業負荷からのサンプルに対してパーセンテージを測定します。

背景削除APIコストファネル:送信リクエストから切り出しレビューを経て承認画像へ

各完了リクエストが1つの候補を生成する場合、計画式は:

実用画像コスト = $0.088 / 受け入れ率

下の表はシナリオを含み、測定されたモデル品質ではありません:

想定受け入れ率1,000承認画像のためのリクエストAPI小計実用画像あたりのコスト
100%1,000$88.000$0.0880
95%1,053$92.664$0.0927
90%1,112$97.856$0.0979
80%1,250$110.000$0.1100
50%2,000$176.000$0.1760

分子に確定タスクデータを使用してください。タスク応答はusage.creditsを各状態で公開します。processingプラス0は請求がまだ確定していないことを意味します。completedは請求されたクレジットを示します。failedプラス0は予約がリファンドされたことを意味します;正の値は文書化された料金が保持されたことを意味します。[3]

この区別は2つの会計エラーを防ぎます。リファンドされたプロバイダーエラーを支払われた出力としてカウントしないでください。完了したが不格好な切り出しを支出から削除しないでください。それでも支払われたリクエストを消費しました。

テスト前に「実用的」が何を意味するかを決定する

ビジュアルグラムスは繰り返し可能なベンチマークには曖昧すぎます。サンプルを送信する前に短い評価基準を書き、各結果に同じチェックを適用してください。

透明度とエッジ整合性

ダウンロードされたファイルをアルファチェッカーボードを表示するツールで開きます。白い背景は透明度ではありません。完全なシルエットを100%と400%で検査します ズームして白または暗いハロ、欠落ピクセル、古い背景のチャンク。

穴、細かい詳細、困難な材質

ハンドル開口、ストラップ、スポーク、ルースヘア、ファー、葉のサンプルを追加してください。透明包装、光沢金属、低コントラストの実装を追加してください 真の実装に表示される場合、オブジェクトのエッジ。白の暗いマグを渡すモデルは依然として失敗可能性があります 透明ボトルまたはベージュの淡いオブジェクト。

製品の詳細と影

ラベル、印刷されたテキスト、細い取り付けと製品アウトラインが変更されなかったことを確認してください。コンタクトシャドウを保持、柔らかく、または削除すべきかを決定してください。異なる宛先には異なる答えが必要なため、「シャドウ削除」は自動的に合格ではありません。

ファイル契約

MIMEタイプ、拡張子、幅、高さ、バイトサイズ、アルファ存在、返されたURL数を記録してください。パブリック契約はoutput.image_urlsを返しますが、この操作については特定の拡張子またはピクセルサイズを約束しません。 パイプラインの次のAPI、設計ツール、またはマーケットプレースインポーターに対してリアルファイルをテストしてください。

有用なパイロットは難しいケースを代表するのに十分な大きさで、簡単なものだけではありません。10~30の自社所有画像は明らかな互換性の問題を公開できます。最終 調達ベンチマークは実カタログの配布に従うべきです。

コストループを作成せずにエラーを再試行

再試行ルールはエラーを使用する必要があります。フラストレーションではなく。パブリックエラー参照 無効な入力、認証、残高不足、レート制限を分離します、 容量障害、および終末的なワークフロー障害。[4]

結果やることは
HTTP 400、401、402、または404リクエスト、認証情報、残高、またはタスクIDを修正します。変更なしで再試行しないでください。
HTTP 429Retry-Afterを待ってから、同じ読み取りまたはセーフ操作を再試行します。
HTTP 502、503、または504指数関数的にバックオフして試行を限定します。
タスクfailed再送信するかどうかを決定する前にerror.codeusage.creditsを読みます。
タスクcompleted、QA失敗ソースを変更または画像を手作業による修正にルーティング;支払い再試行を制限します。

自動ポーリング再試行の外側にSubmitアクションを保持します。POSTがタスクIDを返すとすぐに、以降のすべてのチェックはそのタスクのGETである必要があります。評価基準に失敗した完了画像の場合、2番目の同一リクエストは同じエッジ問題を再現する可能性があります。入力クロップ、コントラスト、または前処理を変更する方が 無制限の再試行より有用です。

タスクが完了するとすぐにアクセプト済みファイルを自分のストレージにダウンロードしてください。 タスクドキュメントはURLがCDN上で再ホストされていると言いますが、長期保持を保証しません。[3]

ホストルートか公式Midjourney API

mj-v7-remove-bgはreAPIを通じて公開されるホストルートです。説明すべきではありません Midjourney's公式パブリックAPI。Midjourney's現在のコミュニティ ガイドラインは一般的にAPIを提供しないと言い、不正な オートメーション禁止以外の場合 稀で明示的に許可されたケース。[5]

この区別は調達時に重要です。ホストサービスの自身の 契約と利用可能な使用条件をレビューしてください。モデルラベルが 公式ベンダー関係を作成すると仮定する代わりに。別々のガイドMidjourney has an API? covers that question in detail; this article stays focused on the callable route and its cost.

FAQ

mj-v7-remove-bgは前のMidjourneyタスクが必要ですか?

いいえ。これは直接画像編集です。image_urlsで1つの公開画像URLを渡します。 task_idまたはmodel_paramsを送信しないでください。[2]

Base64画像を送信できますか?

いいえ。リクエストスキーマは1つの公開HTTP(S)URLを受け入れます。最初ファイルをアップロードしてから、URL、サービスはブラウザセッションなしでフェッチできます。

現在の価格は$0.0873または$0.088ですか?

請求見積もりに$0.088を使用してください。操作は詳細な表示で$0.0873として表示される可能性がありますが、ライブ計算機は88全クレジットを返し、1クレジット=$0.001です。[1]

1つのリクエストで4つの背景削除画像が返されますか?

その仮定に基づいて予算を立てないでください。リクエストあたり4つの画像は基本 Midjourney V7ジェネレーション。ダイレクトRemove BG契約は1つのソース画像を取得 画像URLの配列を返しますが、4つのカットアウトは約束しません。チェック テスト中のターミナルタスクの配列の長さ。[2]

APIは常に透明なPNGを返しますか?

現在のパブリック契約は画像URLを約束し、特定の拡張子ではなく、 MIMEタイプまたはアルファチャネル保証。リアル結果をダウンロードしてアルファをチェックしてください PNGのみのダウンストリームワークフローを構築する前に。

ポーリングはクレジットをコストしますか?

いいえ。タスクをポーリングするとクレジットを消費しません。2~3秒ごとにポーリングします アプリケーションに適した期限で停止します。[3]

失敗した背景削除タスクは請求されますか?

ターミナルタスクでusage.creditsを読みます。ゼロクレジットの失敗タスク 完全に払い戻されました。一般的なタスク契約は正の保持料金を許可します いくつかのモデル固有の生成後セキュリティケースでは、ステータスだけから請求を推測しないでください。[3]

1,000実用画像のコストは何ですか?

100%受け入れ率で、現在のレートで1,000リクエストが$88。80%で 受け入れ、1,000実用的なファイルに到達するには1,250リクエスト、$110コストがかかります。 ストレージとレビューの前に。測定されたパイロットで仮定レートを置き換えてください。

表示価格ではなく、合格画像あたりのコストで選ぶ

現在の背景削除 API は、リクエスト単位なら 88 credits、つまり $0.088 と明快です。ただし、本番利用の判断はそこから始まります。アプリが必要とする輪郭品質とファイル仕様を実データで確かめ、各タスクの確定使用量を読み取り、総支出を一定の基準に合格した出力数で割ってください。

まず Midjourney V7 API リファレンスを確認し、所有する画像で小規模な試験を行い、実装中はタスクのポーリングに関するリファレンスを参照できるようにします。これで、未検証の見出し価格ではなく、説明可能な「使用可能な画像 1 枚あたりのコスト」を算出できます。

参考文献

  1. reAPI. Midjourney V7 model page and live pricing. Retrieved September 3, 2026 from reapi.ai/models/midjourney-v7
  2. reAPI. Midjourney V7 API reference. Retrieved September 3, 2026 from reapi.ai/docs/midjourney-v7
  3. reAPI. Tasks: polling, usage, output, and refund semantics. Retrieved September 3, 2026 from reapi.ai/docs/api/tasks
  4. reAPI. API error codes and retry guidance. Retrieved September 3, 2026 from reapi.ai/docs/api/errors
  5. Midjourney. Community Guidelines: unauthorized automation and third-party apps. Retrieved September 3, 2026 from docs.midjourney.com/hc/en-us/articles/32013696484109-Community-Guidelines