Seedance 2.5 is live — 30-second cinematic video with native audio & real-person references
背景移除 API 定价:每张有效图片的实际成本
2026/09/03

背景移除 API 定价:每张有效图片的实际成本

从实时 88 信用的背景移除 API 费率出发,加上被拒输出、重试、存储和评审成本,精确计算每张通过评审图片的真实单价。

截至 2026 年 9 月 3 日,mj-v7-remove-bg背景移除 API 定价为 88 信用,或每次完成请求 $0.088。这是制定请求预算的正确起点,但不一定就是一张有用成品的成本。

完成的图片仍可能有光晕、丢失把手开口、压平阴影,或处于后续服务无法接受的格式。本指南展示如何调用路由、安全轮询、检查结算费用,以及计算真正通过评审的图片的成本。

核心要点

  • 在 2026 年 9 月 3 日,实时评估器显示88 信用($0.088)每次完成的 mj-v7-remove-bg 请求。一信用等于 $0.001。[1]
  • 该请求只需要一个公开的 HTTP(S) URL。不需要提示词、分辨率、速度或父任务 ID。[2]
  • 操作是异步的:提交一次,保存返回的任务 ID,然后轮询任务端点。轮询不消耗信用。[3]
  • 结算总成本 / 接受输出数 而非提交文件数来制定预算。在 80% 的接受率下,一次 $0.088 的请求变成每张有用图片 $0.11
  • 使用 usage.credits: 0 的失败任务已退款。被团队因边缘质量不佳而拒收的完成结果仍是已完成工作,应纳入接受图片的计算中。[3]
  • 在提交大量任务前,先从自己的目录中抽取一个小测试集。一张干净的产品照说明不了太多——涉及头发、玻璃、低对比度或有孔物体时情况会大不相同。

为什么标价很少就是有用的数字

如果你的应用要为数千张上传图片移除背景,该如何比较不同服务?价格、边缘质量、响应时间、分辨率和文件交接都会影响最终结果,单看标价回答不了这个问题。真正有用的计算更具体:

每张有用图片的成本 = API 总结算成本 / 通过评审的图片数

这个分母改变了决策。便宜但会损伤细边的端点,计入重试和手动修复后,成本可能超过价格更高的方案。

当前背景移除 API 价格涵盖什么

Midjourney V7 模型页列出了 Remove BG 作为一项轻量级编辑。当前请求估计以整数信用结算,所需载荷的实时估计为 88 信用。[1]因为一信用等于 $0.001,预算中使用 $0.088

请求数88 信用的 API 小计这个数字假设
1$0.088一次完成移除请求
10$0.88十次完成请求,接受评审前
100$8.80没有完成输出被拒
1,000$88.00没有存储、评审或转换成本
10,000$880.00同样费率和 100% 接受输出率

你可能在详细价格标签中看到 $0.0873 这样的分数。不要用这个分数来调节信用余额。公开定价表和估算器显示可支付单位为 88 整数信用,或 $0.088。大批量运行前再查一次实时模型页,因为定价可能变化。

API 小计不包括调用周围的工作:

  • 在服务可以获取的 URL 处托管源;
  • 下载并存储结果;
  • 验证透明度、尺寸和文件兼容性;
  • 人工评审或自动化质量检查;
  • 未能通过接受规则的完成输出;
  • 调整大小、色彩校正、阴影重构或后期合成。

对原型来说,这些成本可能微不足道。在目录规模上,它们应出现在与 API 行项目相同的电子表格中。

单个源 URL,无提示词和无父任务

mj-v7-remove-bg 比其他 Midjourney V7 编辑操作更简单。它不链接前一次生成。在 image_urls 中发送你已有的图像。[2]

字段必需接受的值
modelmj-v7-remove-bg
image_urls包含恰好一个公开 HTTP(S) 图像 URL 的数组
prompt不接受不要发送
model_params不接受没有速度、任务 ID 或编辑选项
size / resolution不接受路由未暴露输出大小控制

架构严格。从另一模型复制的字段加入不是无害无操作;它使请求无效。Base64 字符串、data: URL、本地路径和需要身份验证的浏览器专用链接也是错误输入。上传源到你控制的存储,确认它在没有 Cookie 或登录的情况下加载。

这是完整的 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 响应中到达。

提交一次,然后以截止时间轮询

最安全的初学者实现有两个独立的操作:一个创建作业的 POST,后跟有界的 GET 请求读取其状态。不要把 POST 放在轮询循环内。

这个 Node.js 示例每 2.5 秒轮询一次,使用 15 分钟的本地截止时间。任务参考建议每两到三秒一次的节奏,并解释在途任务读取被缓存,所以更快轮询增加请求压力而不会使图像更快完成。[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

在生产中,在从提交处理程序返回前将任务 ID 写入数据库。工作进程然后可在进程重启后恢复轮询。将 API 密钥保存在服务器;永远不要将其放在浏览器 JavaScript 或移动应用包中。

一次失败的实时请求实际成本了多少

我们在 2026 年 9 月 3 日查看本指南时提交了一个 mj-v7-remove-bg 请求,使用了一个自有马克杯照片。API 接受了严格载荷作为任务 task_01a065b32dbe771eb5babd28de9b38d9,但它后来以 failed 状态结束,错误代码为 80003,消息为 Service authentication failed。它没有返回输出,usage.credits: 0,所以其结算成本为 $0,而不是 $0.088。

我们没有重新提交未改变的请求只是为了制造一个成功的示例。这次单独的运行确认了任务和退款路径;它对成品质量、文件类型、尺寸、alpha 支持或正常完成时间没有说明。上面的 88 信用数字仍然是完成请求的实时估计。总是读取终端任务而不是用提交计数乘以广告费率。[3]

将请求价格转换为每张有用图片的成本

从接受规则开始,而不是希望达到的百分比。然后在你打算发送的工作负载样本上测量百分比。

背景移除 API 成本漏斗从提交请求通过成品评审到接受图片

如果每个完成请求产生一个候选,规划等式是:

有用图片成本 = $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.creditsprocessing 加零意味着计费尚未结算。completed 显示计费信用。failed 加零意味着预留被退款;正值意味着保留了已记录的费用。[3]

这个区别防止两个计算错误。不要把退款的提供商故障计入已支付输出,也不要从支出中抹去完成但丑陋的成品。它仍然消耗了已支付的请求。

在测试前定义"有用"的含义

视觉扫一眼太模糊不清,无法重复基准化。在提交样本前写一个简短的评分标准,然后对每个结果应用相同的检查。

透明度和边缘完整性

在显示 alpha 棋盘的工具中打开下载的文件。白色背景不是透明度。以 100% 和 400% 缩放检查完整轮廓是否有白色或深色光晕、丢失的像素和旧背景块。

孔、细节和困难材料

包含带手柄开口、带子、辐条、散落头发、皮毛和树叶的例子。如果这些出现在真实目录中,添加玻璃、半透明包装、光泽金属和低对比主体边。一个在白色背景上通过深色马克杯的模型,仍可能在透明瓶子或米色上的浅色物体上失败。

产品细节和阴影

确认标签、印刷文本、细附件和产品轮廓没有改变。确定是否应保留、柔和或移除接触阴影。不同的目标需要不同的答案,所以"阴影已移除"不自动是通过。

文件合约

记录 MIME 类型、扩展名、宽度、高度、字节大小、alpha 存在和返回 URL 数。公开合约返回 output.image_urls,但它不承诺此操作的特定扩展名或像素大小。针对管道中下一个 API、设计工具或市场导入器测试真实文件。

有用的试点足够大以代表困难情况,不只是简单的。十到三十个自有图像可以暴露明显的不兼容性。最终采购基准应跟随真实目录的分布。

重试故障而不创建成本循环

重试规则应使用错误,而不是沮丧。公开错误参考分离了无效输入、身份验证、余额不足、速率限制、容量故障和终端工作流失败。[4]

结果要做什么
HTTP 400, 401, 402, 或 404修复请求、凭证、余额或任务 ID。不要重复未改变的。
HTTP 429等待 Retry-After,然后重试相同读取或安全操作。
HTTP 502, 503, 或 504指数退避并限制尝试。
任务 failed决定是否重新提交前先读 error.codeusage.credits
任务 completed,QA 失败改变源或将图像路由到手动清理;限制付费重试。

保持提交操作在自动轮询重试外。一旦 POST 返回任务 ID,之后每次检查都应该是那个任务的 GET。对于未能通过评分的完成图像,第二个相同请求可能重现相同边缘问题。改变输入裁剪、对比度或预处理比无限重试更有用。

在任务完成后立即下载接受的文件到你自己的存储。任务文档说输出 URL 重新托管在 CDN 上,但不保证长期保留。[3]

托管路由对比官方 Midjourney API

mj-v7-remove-bg 是通过 reAPI 暴露的托管路由。它不应被描述为 Midjourney 的官方公开 API。Midjourney 的当前社区指南说它一般不提供 API,并禁止未授权的自动化,除了极少数明确授予的情况。[5]

这个区别在采购期间很重要。审查托管服务自己的合约和可接受使用条款,而不是假设模型标签创建了官方供应商关系。单独的指南Midjourney 有 API 吗?详细介绍了这个问题;本文保持专注于可调用路由及其成本。

常见问题

mj-v7-remove-bg 需要前一个 Midjourney 任务吗?

不需要。这是直接图像编辑。在 image_urls 中传递一个公开图像 URL;不要发送 task_idmodel_params[2]

我可以发送 base64 图像吗?

不可以。请求架构接受一个公开 HTTP(S) URL。首先上传文件,然后发送服务可以在没有浏览器会话的情况下获取的 URL。

当前价格是 $0.0873 还是 $0.088?

用 $0.088 来做计费估计。操作在详细显示中可能显示为 $0.0873,但实时估算器返回 88 整数信用,一信用等于 $0.001。[1]

一个请求返回四张背景移除的图像吗?

不要以这个假设来制定预算。四张图片每请求描述基础 Midjourney V7 生成。直接 Remove BG 合约接受一个源图像并返回图像 URL 数组,但它不承诺四个成品。在试点中检查终端任务的数组长度。[2]

API 总是返回透明 PNG 吗?

当前公开合约承诺图像 URL,而不是特定扩展名、MIME 类型或 alpha 通道保证。下载真实结果并在构建 PNG 专用下游工作流前验证 alpha。

轮询需要信用吗?

不需要。轮询任务不消耗信用。每两到三秒轮询一次并在适合应用的截止时间停止。[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. 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