发丝级 alpha 蒙版的背景移除
const url = 'https://api.stack.foldbun.com/v1/remove-background';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"image":{"id":"img_3b1f0c5e9a7d42c8b6e1f0a9d8c7b6a5f4e3d2c1b0a998877665544332211000"},"options":{"output":"cutout","format":"webp"}}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.stack.foldbun.com/v1/remove-background \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "image": { "id": "img_3b1f0c5e9a7d42c8b6e1f0a9d8c7b6a5f4e3d2c1b0a998877665544332211000" }, "options": { "output": "cutout", "format": "webp" } }'模型 birefnet(默认)。按图片计费。
1 至 128 个可打印 ASCII 字符。在同一账户内,密钥保留 24 小时:使用相同请求体重复请求,会返回原始响应(响应头 Idempotent-Replayed: true),且不会再次扣费或运行。相同密钥搭配不同请求体返回 409 idempotency_conflict。见概览。
图片和输出选项。
背景移除请求。
object
背景移除模型。
待处理的图片。
object
POST /v1/images(或之前的调用)返回的句柄:img_ 加清理后图片的 SHA-256。仅在上传它的账户内有效。
预留(后续提供)。目前返回 400 unsupported。
JPEG、PNG 或 WebP 文件的标准 base64;允许带 data: 前缀。
输出选项。
object
cutout:主体的 RGBA 图片。matte:8 位灰度 alpha 蒙版。
返回图片的编码。png:无损 PNG。webp:对 cutout,为有损 RGB(质量 90)加无损 alpha 通道(蒙版是精确的);对 matte,为灰度蒙版的无损 WebP(以灰色 RGB 存储,因此所有解码器都显示为灰色,红色通道即为蒙版)。WebP 抠图通常比 PNG 小约 10 倍(1791x1008 时约 200 kB,而 PNG 约 2 MB),且无可见差异,因此响应到达更快。
返回图片的长边,单位为像素。默认 2048。长边超过该值的图片会等比缩小到该值,不会放大;因此返回图片的长边为输入图片长边与 size 中较小的一个。
示例
{ "image": { "id": "img_3b1f0c5e9a7d42c8b6e1f0a9d8c7b6a5f4e3d2c1b0a998877665544332211000" }, "options": { "output": "cutout", "format": "webp" }}以 base64 图片形式返回的抠图结果或蒙版;使用 Accept: application/cbor 时为字节串。
object
调用 ID call_<uuid>;联系支持时应提供。
处理该调用的模型 ID。
坐标所对应的摆正后的原图。纯文本向量嵌入时不出现。
object
图片句柄:img_ 加清理后字节的 SHA-256。
摆正后的原图的宽度,单位为像素(已应用 EXIF 方向)。
摆正后的原图的高度,单位为像素(已应用 EXIF 方向)。
已存储图片的大小,单位为字节。
已存储图片的媒体类型(与上传的类型相同)。
本次调用扣除的额度。失败的调用,以及由每日包含额度覆盖的调用,为 0。内部账户只计量、不扣费,此时 cost 为该调用的价格。
调用后的账户余额,单位为额度(内部账户的余额不变)。
本次调用在服务器侧的耗时,单位为毫秒。queueMs 为从提交到 GPU 节点领取任务的时间(包括排队,以及节点故障后的重新排队);processingMs 为从节点领取任务到结果返回的时间(获取图片、推理,以及节点与服务器之间的往返)。inferenceMs、imageFetchMs 和 serverMs 对此作进一步细分。不包含客户端与 API 之间的网络时间。
object
从提交到 GPU 节点领取任务的毫秒数。
从节点领取任务到结果返回的毫秒数。
节点测得的 GPU 节点上的模型耗时,不含获取图片。不会大于 processingMs。节点未上报时不出现。
节点获取图片字节所用的时间。图片随任务一同发送,或节点无需获取(编码缓存命中)时为 0。节点未上报时不出现。
API 服务器内的总耗时:从收到请求到响应写出之前。包括读取请求体、图片准备、准入、queueMs、processingMs 和计费结算。仅在重放由旧版服务器存储的幂等响应时不出现。
该调用的计价方式。
object
该调用每个计价单位一行。
object
价目表中的计费单位,与 GET /v1/models 的 prices[].unit 相同(例如 encode_image、prompt、refine、image)。
使用的单位数。
单个单位的标价。
该行的价格:unitPrice * quantity,waived 时为 0。对未扣费(charged 为 false)的调用(试用、每日包含额度),各行仍显示标价。
节点已持有该编码(cache: hit)时,图片编码费为 true;此时 amount 为 0,原本适用的费用为 unitPrice * quantity。
该调用的价格(各行金额之和;capped 时削减到余额)。
是否从账户余额中扣费。Playground 试用调用,以及由每日包含额度覆盖的调用(此时设置了 pool 和 allowance)为 false;计费调用为 true。内部账户按标价计量、不扣费,此时 charged 为 false,total 为该调用的价格。
其每日包含额度覆盖了该调用的模型池(public 或 free)。计费调用(包括超出额度的调用)、试用调用和内部账户为 null。
pool 当日(UTC)的包含调用,计入本次调用。仅在设置了 pool 时出现。
object
当日(UTC)已用调用次数,包括本次。
每个 UTC 日包含的调用次数。
仅当价格超过余额、扣费被削减到余额时出现,且为 true。
与 options.format 一致。
返回图片的宽度,单位为像素。
返回图片的高度,单位为像素。
Base64 编码的 PNG 或 WebP,由 format 指明;CBOR 响应中为字节串。
示例
{ "image": { "contentType": "image/jpeg" }, "format": "png"}object
调用 ID call_<uuid>;联系支持时应提供。
处理该调用的模型 ID。
坐标所对应的摆正后的原图。纯文本向量嵌入时不出现。
object
图片句柄:img_ 加清理后字节的 SHA-256。
摆正后的原图的宽度,单位为像素(已应用 EXIF 方向)。
摆正后的原图的高度,单位为像素(已应用 EXIF 方向)。
已存储图片的大小,单位为字节。
已存储图片的媒体类型(与上传的类型相同)。
本次调用扣除的额度。失败的调用,以及由每日包含额度覆盖的调用,为 0。内部账户只计量、不扣费,此时 cost 为该调用的价格。
调用后的账户余额,单位为额度(内部账户的余额不变)。
本次调用在服务器侧的耗时,单位为毫秒。queueMs 为从提交到 GPU 节点领取任务的时间(包括排队,以及节点故障后的重新排队);processingMs 为从节点领取任务到结果返回的时间(获取图片、推理,以及节点与服务器之间的往返)。inferenceMs、imageFetchMs 和 serverMs 对此作进一步细分。不包含客户端与 API 之间的网络时间。
object
从提交到 GPU 节点领取任务的毫秒数。
从节点领取任务到结果返回的毫秒数。
节点测得的 GPU 节点上的模型耗时,不含获取图片。不会大于 processingMs。节点未上报时不出现。
节点获取图片字节所用的时间。图片随任务一同发送,或节点无需获取(编码缓存命中)时为 0。节点未上报时不出现。
API 服务器内的总耗时:从收到请求到响应写出之前。包括读取请求体、图片准备、准入、queueMs、processingMs 和计费结算。仅在重放由旧版服务器存储的幂等响应时不出现。
该调用的计价方式。
object
该调用每个计价单位一行。
object
价目表中的计费单位,与 GET /v1/models 的 prices[].unit 相同(例如 encode_image、prompt、refine、image)。
使用的单位数。
单个单位的标价。
该行的价格:unitPrice * quantity,waived 时为 0。对未扣费(charged 为 false)的调用(试用、每日包含额度),各行仍显示标价。
节点已持有该编码(cache: hit)时,图片编码费为 true;此时 amount 为 0,原本适用的费用为 unitPrice * quantity。
该调用的价格(各行金额之和;capped 时削减到余额)。
是否从账户余额中扣费。Playground 试用调用,以及由每日包含额度覆盖的调用(此时设置了 pool 和 allowance)为 false;计费调用为 true。内部账户按标价计量、不扣费,此时 charged 为 false,total 为该调用的价格。
其每日包含额度覆盖了该调用的模型池(public 或 free)。计费调用(包括超出额度的调用)、试用调用和内部账户为 null。
pool 当日(UTC)的包含调用,计入本次调用。仅在设置了 pool 时出现。
object
当日(UTC)已用调用次数,包括本次。
每个 UTC 日包含的调用次数。
仅当价格超过余额、扣费被削减到余额时出现,且为 true。
与 options.format 一致。
返回图片的宽度,单位为像素。
返回图片的高度,单位为像素。
Base64 编码的 PNG 或 WebP,由 format 指明;CBOR 响应中为字节串。
default
Section titled “default”错误信封。HTTP 状态码与 code 对应;只有 retryable: true 的错误才值得原样重复。失败的调用不收费。
| 状态码 | 错误码 |
|---|---|
| 400 | invalid_request, invalid_image(图片通过了上传检查,但无法解码), unsupported |
| 401 | unauthorized |
| 402 | insufficient_balance |
| 403 | model_locked |
| 404 | not_found, image_not_found |
| 409 | idempotency_conflict, request_in_progress |
| 413 | payload_too_large |
| 429 | rate_limited, daily_limit_reached, too_many_batches(均带有 Retry-After) |
| 500 | internal_error |
| 502 | upstream_error, bad_model_output |
| 503 | model_unavailable, model_busy, unavailable(均带有 Retry-After) |
| 504 | upstream_timeout |
model_unavailable 也用于唯一提供该模型的 GPU 节点短时失联:失联后约一分钟内,交互式调用立即返回该错误并带较短的 Retry-After(5 秒),同步和批量调用则继续排队到各自的截止时间,不会直接失败。
各错误码的含义和重试建议:错误。
所有错误响应的响应体。
object
错误。
object
稳定的、机器可读的错误码。应依据该字段而不是 message 判断。与 HTTP 状态码的对应关系见响应部分。
面向人的说明。措辞可能变化。
为 true 时,原样重复同一请求有可能成功。
建议重试前等待的毫秒数;无建议时为 0。
示例
{ "error": { "code": "model_busy", "message": "model sam3 is busy; retry shortly", "retryable": true, "retryAfterMs": 5000 }}重试前须等待的整秒数;出现在 429 和 503 响应中。
服务器生成的请求 ID(16 个十六进制字符);出现在每个响应中。联系支持时应提供该值。