LoopToken

虚拟人像素材入库

seedance2-private-avatar:POST /v1/seedance2/private-avatar 虚拟人像素材异步入库,GET 查询审核结果,免费

仅支持虚拟人像 / AIGC 生成人像素材,不支持真人照片认证。上传真人照片可能审核不通过,或在后续更新中被拒绝入库。本页仅覆盖入库与查询;asset:// 在 Seedance 2.0 生成请求中的传参方式尚未在文档中开放。

POST/v1/seedance2/private-avatar
GET/v1/seedance2/private-avatar/{task_id}

为 Seedance 2.0 的"人物一致性"生成能力准备可复用的人像素材:提交图片素材后平台异步审核,审核通过的素材返回 asset:// 引用,可用于保持同一人物形象。

项值
模型seedance2-private-avatar
模式异步(提交入库任务 → 轮询 GET /v1/seedance2/private-avatar/{task_id},建议间隔 5-10 秒)
计费素材入库对用户免费,见计费
鉴权Authorization: Bearer $LOOPTOKEN_API_KEY、Content-Type: application/json

快速开始

curl https://api.vibelab.me/v1/seedance2/private-avatar \
  -H "Authorization: Bearer $LOOPTOKEN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "group": {"name": "my-virtual-character"},
    "assets": [
      {"url": "https://example.com/avatar-front.jpg", "name": "front"},
      {"url": "https://example.com/avatar-side.jpg", "name": "side"}
    ]
  }'

提交成功返回 HTTP 202:

{
  "code": 200,
  "data": {
    "id": "avatar_xxx",
    "object": "seedance.avatar.asset.task",
    "status": "processing",
    "progress": 0
  }
}

请求参数

参数类型必填默认说明
groupobject否-新建素材组,{name, description};与 group_id 二选一,两者同传返回 400
group_idstring否-已有素材组 ID,向该组追加素材;只能传本账号历史任务成功创建过的 group_id,传他人或不存在的 group_id 返回 404
project_namestring否default素材所属项目名
asset_typestring否ImageImage、Video、Audio 之一
assetsarray是-待入库素材数组,元素为 {url, name},最多 20 个;url 必须为非空 http(s) 地址,name 必须非空

group 与 group_id 必须传且只能传一个:完全不传或两者同传都返回 400。首次入库传 group 新建素材组;后续向同一素材组追加素材传 group_id。

单素材场景支持兼容写法:直接在请求顶层传 url、name,无需包裹成 assets 数组,平台会自动归一化为单元素的 assets 数组。

请求示例

完整请求示例:

{
  "group": {
    "name": "my-virtual-character",
    "description": "虚拟主播形象素材"
  },
  "project_name": "default",
  "asset_type": "Image",
  "assets": [
    {
      "url": "https://example.com/avatar-front.jpg",
      "name": "front"
    },
    {
      "url": "https://example.com/avatar-side.jpg",
      "name": "side"
    }
  ]
}

单素材兼容写法:

{
  "group": { "name": "my-virtual-character" },
  "url": "https://example.com/avatar-front.jpg",
  "name": "front"
}

响应

提交响应

字段类型说明
data.idstring平台任务 ID,格式 avatar_ + UUID,用于后续查询
data.objectstring固定为 seedance.avatar.asset.task
data.statusstring提交确认状态,此时任务已受理但尚无审核结果;任务实际状态以查询接口返回的 status 为准
data.progressinteger审核进度百分比,提交时为 0

查询审核结果

GET /v1/seedance2/private-avatar/{task_id},路径参数 task_id 为提交接口返回的 avatar_... ID。

任务状态

status说明
pending排队中,尚未开始审核
running审核中
succeeded全部素材审核通过
failed任务未完全成功;批量提交时任一素材审核失败,整单即判定为 failed

pending/running 状态下 result 字段不出现或为空,轮询直至进入 succeeded 或 failed 终态。

批量入库的部分失败语义:只要 assets 中有一个素材未通过审核,整个任务的 status 就是 failed,而不是部分成功状态。但这不代表全部素材都不可用——已通过审核的素材仍出现在 result.usable_assets 中,可以正常使用 asset:// 引用。请按 result.usable_assets 而不是顶层 status 判断单个素材是否可用。

响应字段

字段类型说明
data.idstring平台任务 ID
data.statusstringpending / running / succeeded / failed
data.progressinteger审核进度百分比,0-100
data.result.assetsarray本次任务涉及的全部素材,元素含 asset_id、asset_url(asset:// 引用)
data.result.usable_assetsarray审核通过、可直接使用的素材子集,元素结构同 assets
data.result.failed_assetsarray审核未通过的素材,含失败原因;任务全部成功时为空数组

成功示例:

{
  "code": 200,
  "data": {
    "id": "avatar_xxx",
    "status": "succeeded",
    "progress": 100,
    "result": {
      "assets": [
        {
          "asset_id": "asset-xxx",
          "asset_url": "asset://asset-xxx"
        },
        {
          "asset_id": "asset-yyy",
          "asset_url": "asset://asset-yyy"
        }
      ],
      "usable_assets": [
        {
          "asset_id": "asset-xxx",
          "asset_url": "asset://asset-xxx"
        },
        {
          "asset_id": "asset-yyy",
          "asset_url": "asset://asset-yyy"
        }
      ],
      "failed_assets": []
    }
  }
}

部分失败示例(整单 status 为 failed,但仍有可用素材):

{
  "code": 200,
  "data": {
    "id": "avatar_xxx",
    "status": "failed",
    "progress": 100,
    "result": {
      "assets": [
        {
          "asset_id": "asset-xxx",
          "asset_url": "asset://asset-xxx"
        }
      ],
      "usable_assets": [
        {
          "asset_id": "asset-xxx",
          "asset_url": "asset://asset-xxx"
        }
      ],
      "failed_assets": [
        {
          "name": "side",
          "reason": "人脸识别失败"
        }
      ]
    }
  }
}

计费

素材入库对用户免费。

错误

HTTPcode触发场景处理
400invalid_request_errorgroup 与 group_id 同传或都不传、assets 为空或超过 20 个、asset_type 不在 Image / Video / Audio、url 非法或缺失、name 缺失等参数错误;message 为具体原因按 message 修正请求
404task_not_found查询任务时 task_id 不存在或不属于当前账户使用提交响应中的 data.id
404group_not_foundgroup_id 不存在,或不属于当前账户只传本账号历史任务成功创建过的 group_id,或改传 group 新建
422invalid_request_error提交时上游同步拒绝(message 为 content moderation rejected);多数审核结果异步产出,见部分失败语义更换素材
502upstream_error入库任务提交失败短暂等待后有限次数重试
503no_available_channel当前没有可用渠道指数退避后重试

错误体为 {"error":{"code":"...","message":"..."}},统一格式见错误码。

注意事项

  • asset:// 引用 → 素材归属提交它的账号;当前仅供本平台 Seedance 2.0 系列生成使用,不是通用可下载的文件地址。
  • group_id → 只能传本账号历史任务中成功创建过的素材组 ID;传其他账号的 group_id 返回 404,不区分"不存在"与"无权限"。
  • 批量入库任一素材审核失败 → 整单 status 为 failed;已通过的素材仍在 result.usable_assets 中,按它判断单个素材是否可用。

本页内容