简体中文
接入文档

BitCloud API 文档中心

查阅 API 接口、Base URL、API Key、模型与客户端配置说明,帮助团队直接接入统一网关。

当前文档素材库与真人认证 API
文档内容素材库与真人认证 API

BitCloud 素材库与真人认证 API 接入文档

1. 概述

素材库用于把图片、视频和音频保存为可复用的生成素材。素材准备完成后,可直接在视频生成请求中引用,无需每次重复传入原始文件地址。

使用流程:

  1. 选择要用于视频生成的模型。
  2. 虚拟人像素材:创建 AIGC 分组后,通过可公开访问的媒体 URL 导入素材。
  3. 真人出镜素材:先创建并完成真人认证会话,再从认证结果中取得可用分组。
  4. 等待素材状态变为 Active,再在视频请求中使用返回的 asset://ast_...

真人出镜相关场景可先创建认证会话,再将用户跳转到返回的认证链接完成认证。

选择模型

先调用 GET /v1/models,从返回列表中选择一个用于视频生成的模型 ID。下文的 YOUR_VIDEO_MODEL_ID 是占位符,必须替换为该 API Key 实际可用的模型 ID。

同一套素材建议从创建分组、真人认证、导入、查询到视频生成始终使用同一个 model。这样素材才能在后续视频请求中被正确识别和使用。客户端只需保存本文接口返回的 iduri,无需传递或维护任何额外的路由、账户或服务信息。

模型能力

素材库能力由所选 model 决定;不支持的操作会返回 400 invalid_request。请以接口响应为准,不要假定每个模型都支持所有素材、分组、上传或真人认证操作。

2. 快速开始

bashcurl -X POST "https://edge.bitcloud.com.cn/v1/assets/groups.create" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "YOUR_VIDEO_MODEL_ID",
    "name": "虚拟人物素材",
    "description": "用于视频生成的 AIGC 虚拟人像素材",
    "project_name": "default",
    "group_type": "AIGC"
  }'

响应:

json{
  "object": "asset_operation",
  "operation": "groups.create",
  "data": [
    {
      "id": "ast_6d693e9bc8e047c4af672a95d8992519",
      "type": "group",
      "resource_url": "/v1/assets/ast_6d693e9bc8e047c4af672a95d8992519",
      "name": "虚拟人物素材",
      "status": "Active"
    }
  ]
}

3. 鉴权与端点

除认证页面外,所有素材库请求均需携带 API Key:

httpAuthorization: Bearer YOUR_API_KEY
Content-Type: application/json
方法端点说明
POST/v1/assets/:operation执行素材库操作
GET/v1/assets/:resource_id读取已保存的素材或分组信息
GET/v1/assets/:resource_id/verification?token=...打开真人认证页面

认证会话返回 verification_url 后,将待认证用户跳转到该地址即可完成认证。该链接由 BitCloud 生成,并会将浏览器带到认证页面;不要修改此地址中的任何内容。

verification_url 是短期有效的敏感链接(默认 30 分钟)。不要把它写入日志、前端埋点、工单、公开页面或群聊;只应定向交给待认证本人。认证结束后,请继续调用结果接口确认状态。

4. 资源与响应格式

4.1 资源字段

所有资源 ID 均以 ast_ 开头。

字段说明
id素材、分组或认证会话的 ID,例如 ast_6d...
type资源类型:groupassetverification_session
uri视频生成使用的素材引用,仅 asset 类型返回
resource_url查询该资源详情的相对地址
verification_url打开真人认证页面的相对地址,仅认证会话返回;链接本身是敏感凭证
name资源名称,存在时返回
status资源处理状态,存在时返回

素材库操作中使用 id,视频生成中使用 uri

textgroup_id: ast_6d693e9bc8e047c4af672a95d8992519
素材 URI: asset://ast_6d693e9bc8e047c4af672a95d8992519

请直接保存接口返回的 iduri,不要自行拼接或修改它们。

4.2 POST 响应

所有 POST /v1/assets/:operation 操作返回统一信封:

json{
  "object": "asset_operation",
  "operation": "assets.create",
  "data": [
    {
      "id": "ast_6d693e9bc8e047c4af672a95d8992519",
      "type": "asset",
      "uri": "asset://ast_6d693e9bc8e047c4af672a95d8992519",
      "resource_url": "/v1/assets/ast_6d693e9bc8e047c4af672a95d8992519",
      "name": "人物正面",
      "status": "Processing"
    }
  ]
}

删除成功时 data 为空数组。列表操作的 data 为资源数组。

GET /v1/assets/:resource_id 不使用信封,直接返回一个资源对象。它返回最近一次素材库操作保存的状态;需要刷新处理状态时,请使用 assets.get

json{
  "id": "ast_6d693e9bc8e047c4af672a95d8992519",
  "type": "asset",
  "uri": "asset://ast_6d693e9bc8e047c4af672a95d8992519",
  "resource_url": "/v1/assets/ast_6d693e9bc8e047c4af672a95d8992519",
  "name": "人物正面",
  "status": "Active"
}

5. 素材分组

本节所有操作均使用 POST /v1/assets/:operation,且必须携带 model

5.1 创建分组

operation: groups.create

json{
  "model": "YOUR_VIDEO_MODEL_ID",
  "name": "虚拟人物素材",
  "description": "用于视频生成的 AIGC 虚拟人像素材",
  "project_name": "default",
  "group_type": "AIGC"
}
字段必填说明
model模型名称
name分组名称
description分组描述
project_name项目名称
group_type分组类型。当前 Huanxing Seedance 素材库创建虚拟人像分组时使用 AIGC;不要将 Person 用于真人认证分组。
真人出镜不通过 groups.create 创建 Person 分组。请先完成 真人认证,再使用 verification.result.get 返回的分组 ID 创建人物素材。

5.2 查询分组列表

operation: groups.list

json{
  "model": "YOUR_VIDEO_MODEL_ID",
  "page_number": 1,
  "page_size": 20,
  "filter": {
    "name": "品牌",
    "group_type": "AIGC",
    "statuses": ["Active"]
  }
}

page_numberpage_sizefilter 均为可选字段。

5.3 查询、更新、删除分组

使用 groups.creategroups.list 返回的 id

json// groups.get
{
  "model": "YOUR_VIDEO_MODEL_ID",
  "id": "ast_6d693e9bc8e047c4af672a95d8992519"
}
json// groups.update
{
  "model": "YOUR_VIDEO_MODEL_ID",
  "id": "ast_6d693e9bc8e047c4af672a95d8992519",
  "name": "已审核人物",
  "description": "可用于品牌视频的人物素材"
}
json// groups.delete
{
  "model": "YOUR_VIDEO_MODEL_ID",
  "id": "ast_6d693e9bc8e047c4af672a95d8992519"
}

将注释中的 groups.getgroups.updategroups.delete 作为请求路径中的操作名,例如 POST /v1/assets/groups.get

6. 素材管理

6.1 创建素材

operation: assets.create

url 必须可由 BitCloud 服务读取。创建后的素材通常需要异步处理。

json{
  "model": "YOUR_VIDEO_MODEL_ID",
  "group_id": "ast_6d693e9bc8e047c4af672a95d8992519",
  "url": "https://media.example.com/portrait.png",
  "asset_type": "Image",
  "name": "人物正面",
  "project_name": "default"
}
字段必填说明
model模型名称
group_id分组 ID;虚拟人像使用 groups.create 返回的 ID,真人素材使用认证结果返回的分组 ID
url可被所选模型读取的素材源 URL
asset_type所选模型接受的素材类型,例如 ImageVideoAudio
name素材名称
project_name项目名称

6.2 查询处理状态

刚创建的素材可能返回 status: "Processing"。使用 assets.get 刷新状态:

json// POST /v1/assets/assets.get
{
  "model": "YOUR_VIDEO_MODEL_ID",
  "id": "ast_6d693e9bc8e047c4af672a95d8992519"
}
状态含义可否用于生成
Processing正在导入、分析或审核。不可,继续查询。
Active素材已可用。可以。
Failed导入或审核失败。不可,请创建替代素材。

仅当素材为 Active 时,才应将它的 asset://ast_... URI 提交给生成接口。

6.3 查询素材列表

operation: assets.list

json{
  "model": "YOUR_VIDEO_MODEL_ID",
  "group_id": "ast_6d693e9bc8e047c4af672a95d8992519",
  "page_number": 1,
  "page_size": 20,
  "filter": {
    "statuses": ["Active"],
    "name": "人物"
  }
}

传入 group_id 可只查询该分组内的素材;不传时查询当前账号可见的素材。

6.4 查询、更新、删除素材

json// assets.get
{
  "model": "YOUR_VIDEO_MODEL_ID",
  "id": "ast_6d693e9bc8e047c4af672a95d8992519"
}
json// assets.update
{
  "model": "YOUR_VIDEO_MODEL_ID",
  "id": "ast_6d693e9bc8e047c4af672a95d8992519",
  "name": "人物正面(已审核)"
}
json// assets.delete
{
  "model": "YOUR_VIDEO_MODEL_ID",
  "id": "ast_6d693e9bc8e047c4af672a95d8992519"
}

分别使用 assets.getassets.updateassets.delete 作为操作名。删除后,该素材不能再用于后续生成任务。

7. 真人认证

真人认证适用于需要人物出镜的素材流程。

7.1 创建认证会话

operation: verification.sessions.create

json{
  "model": "YOUR_VIDEO_MODEL_ID"
}

响应示例:

json{
  "object": "asset_operation",
  "operation": "verification.sessions.create",
  "data": [
    {
      "id": "ast_39eb1540473642a9b67e2053e89ea254",
      "type": "verification_session",
      "resource_url": "/v1/assets/ast_39eb1540473642a9b67e2053e89ea254",
      "verification_url": "/v1/assets/ast_39eb1540473642a9b67e2053e89ea254/verification?token=..."
    }
  ]
}

在浏览器中打开 verification_url 完成认证。无论模型是否提供完成回调,都必须查询认证状态和结果,不能把浏览器跳转当作认证成功依据。创建会话不需要传入额外参数;如模型支持分组关联或协议确认,按对应操作完成即可。

创建会话只有在 data 中同时返回非空 idverification_url 时才算成功。服务未返回可用会话时,网关返回 502 upstream_asset_response_invalid;客户端不得跳转或继续真人业务,应记录请求 ID 后联系支持人员。

7.2 查询认证会话状态

operation: verification.sessions.get(仅支持该能力的模型可用)

json{
  "model": "YOUR_VIDEO_MODEL_ID",
  "id": "ast_39eb1540473642a9b67e2053e89ea254"
}

返回的认证会话资源会更新 status;处于 PendingProcessing 时继续等待,完成后再查询结果。

7.3 同意真人认证协议

operation: verification.agreements.accept(仅模型要求时调用)

json{
  "model": "YOUR_VIDEO_MODEL_ID"
}

7.4 查询认证结果

使用创建认证会话时返回的 id

json// verification.result.get
{
  "model": "YOUR_VIDEO_MODEL_ID",
  "id": "ast_39eb1540473642a9b67e2053e89ea254",
  "result_code": "optional-result-code"
}

根据返回的资源状态确认认证进度和结果。认证成功后,响应可能包含 type: "group" 的资源;保存该资源的 id,后续可作为 group_id 创建人物素材。

8. 在视频生成中引用素材

素材状态为 Active 后,在标准视频请求中填入 uri。以下示例将图片素材作为参考图:

json{
  "model": "YOUR_VIDEO_MODEL_ID",
  "prompt": "人物在柔和的棚拍光线中转向镜头",
  "content": [
    {
      "type": "image_url",
      "role": "reference_image",
      "image_url": {
        "url": "asset://ast_6d693e9bc8e047c4af672a95d8992519"
      }
    }
  ]
}

将该请求提交至 POST /v1/videosPOST /v1/video/generations。请确保模型支持所使用的素材类型和输入角色。

完整视频请求格式请参阅 视频生成 API 接入文档

9. 操作清单

operationmodel 外的必填字段说明
groups.createname创建素材分组
groups.list查询分组列表
groups.getid查询单个分组
groups.updateid更新分组
groups.deleteid删除分组
assets.createurlasset_type;按模型要求传 group_id导入素材
assets.uploadmultipart 表单中的 fileasset_type;按模型要求传 group_id上传本地素材(仅支持该能力的模型可用)
assets.list无;可选 group_id查询素材列表
assets.getid查询单个素材
assets.updateid更新素材
assets.deleteid删除素材
verification.agreements.accept同意真人认证协议(仅模型要求时)
verification.sessions.create无;按模型能力可传 group_id创建真人认证会话
verification.sessions.getid查询认证会话状态(仅支持该能力的模型可用)
verification.result.getid查询认证结果

若请求返回客户端错误,请检查 model、素材 ID、分组 ID 和必填字段是否来自同一套流程,不要自行替换或拼接资源 ID。

10. 错误处理

错误使用统一响应格式:

json{
  "error": {
    "message": "asset resource not found",
    "type": "invalid_request_error",
    "code": "asset_resource_not_found"
  }
}
HTTP错误码说明处理建议
400invalid_asset_operation操作名不存在。使用操作清单中的名称。
400invalid_request缺少必填字段或字段格式不正确。检查请求体和 model
400convert_request_failed所选模型无法表达本次请求。删除不支持的字段,或更换模型。
400invalid_asset_reference素材 URI 格式错误、不可用或尚未处理完成。使用状态为 Active 的素材 URI。
401鉴权错误API Key 缺失或无效。传入有效的 Bearer Token。
403访问被拒绝当前凭证无权使用该资源,或资源不能与所选模型一起使用。检查 API Key 和模型。
404asset_resource_not_found素材、分组或认证会话不存在。检查 ast_... ID。
429限流错误达到请求速率或并发限制。使用退避策略重试。
502upstream_asset_response_invalid创建操作未返回可用资源。真人认证会话创建时,也可能表示认证服务暂时无法分配会话。不要把空 data 当作成功;不要展示认证页;记录请求 ID 后间隔重试或联系支持人员。
5xx服务错误服务暂时不可用。使用指数退避重试。

11. 接入建议

  • 保存接口返回的 iduri,后续管理使用 id,视频生成使用 uri
  • 创建素材后先查询状态;ProcessingFailed 的素材不可提交生成。
  • 用户需要真人认证时,将浏览器跳转到 verification_url;不要修改、记录或公开该 URL,并在结果接口确认后再放行后续业务。
  • 删除素材后不能再将其用于新的视频生成任务。