AI 一句话对接
把下面这句话复制给 AI 编程助手(Claude Code、Cursor、Codex 等),它会读取本文档并完成接口对接。
请帮我对接这个接口,接口说明文档为 https://api.tecmz.com/m/CloudGeneral/RMBG20
模型说明
模型 ID:RMBG20
通用模型
价格:1算力点/次
基于 BRIA RMBG-2.0(BiRefNet 架构)的高精度背景移除模型,上传一张图片即可自动分离主体并输出透明背景图片,保留发丝、毛发、半透明玻璃等细腻边缘,适用于人像、商品图、动物、Logo 等场景
输入要求
- 待抠图图片必须是公网可访问的链接,支持 png、jpg、jpeg、webp、bmp 格式
- 主体完整、边缘清晰、主体占比适中的图片效果最佳;主体被裁切时抠图结果同样会被裁切
输出说明
background=transparent(默认)输出带透明通道的图片,适合二次合成- 需要纯色底时可选
white/black/green(绿幕),服务端会直接合成底色 output_format选webp体积更小,选png为无损- 发丝、毛发、半透明玻璃等细节由模型自动保留;背景残留噪点较多时可适当提高
mask_threshold,边缘生硬时可增加edge_feather
计费说明
按次计费:1 算力点/次,每张图片计费一次。
接口地址
| 操作 | 请求方式 | 地址 |
|---|---|---|
| 提交任务 | POST | https://api.tecmz.com/open_api/cloud_general/queue |
| 查询任务 | POST | https://api.tecmz.com/open_api/cloud_general/query |
| 可用性检查 | POST | https://api.tecmz.com/open_api/cloud_general/available |
请求头携带
Authorization: Bearer <AppSecret>(AppId / AppSecret 见
接口管理);
提交任务成功后建议每 10 秒调用一次查询任务接口,直到 status 为 SUCCESS 或 FAIL。
请求参数
通用参数
| 参数 | 必须 | 类型 | 说明 |
|---|---|---|---|
model |
是 | string | 目标模型 ID,本模型固定为 RMBG20 |
config |
否 | object | 模型专属字段(本模型的 config 参数见下表) |
param |
否 | object | 模型通用参数(本模型的 param 参数见下表) |
outId |
否 | string | 外部业务 ID,最长 100 字符,便于业务侧关联任务 |
callback |
否 | string | 任务结果回调地址,最长 200 字符 |
config 参数
| 参数 | 必须 | 类型 | 默认值 | 说明 |
|---|---|---|---|---|
type | 是 | string | imageMatting | 模型类型 |
param 参数
| 参数 | 必须 | 类型 | 默认值 | 说明 |
|---|---|---|---|---|
image | 是 | string | - | 待抠图图片;支持 png、jpg、jpeg、webp、bmp 格式,需公网可访问的文件链接 |
background | 否 | string | transparent | 输出背景;透明背景输出 PNG/WebP 透明通道,其余背景会直接合成到对应底色;可选值:transparent(透明背景(保留透明通道))、white(白色背景)、black(黑色背景)、green(绿色背景(绿幕)) |
mask_threshold | 否 | number | 0 | 蒙版阈值;用于去除背景残留噪点,0 表示不做阈值处理(保留全部半透明边缘) |
edge_feather | 否 | number | 0 | 边缘羽化;数值越大边缘越柔和,可消除硬锯齿;半透明材质建议保持 0 |
output_format | 否 | string | png | 输出格式;可选值:png(PNG(无损,支持透明))、webp(WebP(体积更小,支持透明)) |
seed | 否 | number | 0 | 随机种子;本模型为确定性推理,随机种子仅用于兼容平台参数规范 |
返回结果
提交任务返回
{
"code": 0,
"msg": "ok",
"data": {
"taskId": "1"
}
}
查询任务返回
{
"code": 0,
"msg": "ok",
"data": {
"taskId": "1",
"status": "SUCCESS",
"statusRemark": "",
"result": { }
}
}
status 取值:QUEUE(排队中)、PROCESS(处理中)、
SUCCESS(成功)、FAIL(失败,失败原因见 statusRemark)。
result 字段
| 字段 | 类型 | 说明 |
|---|---|---|
result.url | string | 抠图结果(文件链接) |
调用示例
请求体(JSON)
{
"model": "RMBG20",
"config": {
"type": "imageMatting"
},
"param": {
"image": "https://example.com/image.png"
}
}
PHP(提交任务 + 轮询结果)
<?php
$baseUrl = 'https://api.tecmz.com/open_api/cloud_general';
$token = '<YOUR_API_TOKEN>';
// 1. 提交任务
$data = [
'model' => 'RMBG20',
'config' => [
'type' => 'imageMatting',
],
'param' => [
'image' => 'https://example.com/image.png',
],
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $baseUrl . '/queue');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Authorization: Bearer ' . $token,
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
if (empty($result) || $result['code'] != 0) {
exit('提交失败:' . (isset($result['msg']) ? $result['msg'] : '未知错误'));
}
$taskId = $result['data']['taskId'];
// 2. 轮询查询结果(建议 10 秒一次)
while (true) {
curl_setopt($ch, CURLOPT_URL, $baseUrl . '/query');
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(['taskId' => $taskId]));
$ret = json_decode(curl_exec($ch), true);
$status = isset($ret['data']['status']) ? $ret['data']['status'] : '';
if ($status == 'SUCCESS') {
print_r($ret['data']['result']);
break;
}
if ($status == 'FAIL') {
exit('生成失败:' . $ret['data']['statusRemark']);
}
sleep(10);
}
curl_close($ch);
示例中的地址、Token 需替换为实际值;接口基础说明见
通用模型 接口文档。