OpenAPI 参考
Modelink API · 素材
Modelink 素材管理 API,提供素材分组与素材的创建、查询、更新与删除能力,用于视频生成等场景的参考素材管理。所有请求均需通过 Bearer Token 进行身份认证。
版本 1.0.0
查询素材分组列表
分页查询当前用户的素材分组列表,支持按状态和类型过滤。
按创建时间倒序排序,已删除的分组不会返回。
认证方式
在 Authorization 请求头中传入 API Key 或访问令牌,格式:Bearer {token}。
查询参数
- Name
- page
- Type
- integer
- Description
页码,从 1 开始
- Name
- page_size
- Type
- integer
- Description
每页大小,最大 100
- Name
- status
- Type
- enum
- Description
状态过滤:pending(待处理)/ active(已激活)/ failed(失败)(awaiting_auth:真人组等待人工核验的中间态)
- Name
- type
- Type
- enum
- Description
类型过滤:aigc(虚拟人像)(liveness_face:真人人像组)
请求体
暂无请求体
请求
curl 'https://api.qnaigc.com/v1/asset-groups?page={page}&page_size={page_size}&status={status}&type={type}' \
--header 'Authorization: Bearer YOUR_BEARER_AUTH' \
--header 'Accept: application/json'响应
查询成功
响应体属性
- qgroupidstring, 必填
分组 ID(用户可见),格式
qgroup-{uid}-{ts} aigcliveness_face
- namestring, 必填
分组展示名
- descriptionstring, 必填
分组描述
- modelstring, 必填
素材使用的模型标识,决定素材绑定的目标模型
pendingawaiting_authactivefailed
- is_defaultboolean, 必填
是否为该用户的默认分组(真人组恒为 false)
- fail_reasonstring
失败原因,仅在
status=failed时有值 - h5_linkstring
真人认证 H5 刷脸链接,仅真人组
status=awaiting_auth时返回。⚠️ 有效期约 120 秒,需引导用户尽快打开刷脸。aigc 组及终态不返回。 - byted_tokenstring
真人认证凭证,仅真人组
status=awaiting_auth时返回,供调用visual-validate-result时透传(可不传,平台有存)。aigc 组及终态不返回。 - created_atinteger<int64>, 必填
创建时间(Unix 时间戳,秒)
- updated_atinteger<int64>, 必填
更新时间(Unix 时间戳,秒)
- totalinteger<int64>, 必填
总记录数
- pageinteger, 必填
当前页码
- page_sizeinteger, 必填
每页大小
响应
{
"data": [
{
"qgroupid": "qgroup-uid001-1716100000000000000",
"type": "aigc",
"name": "我的虚拟人像分组",
"description": "",
"model": "bytedance/doubao-seedance-2-0-260128",
"status": "active",
"is_default": true,
"created_at": 1716100000,
"updated_at": 1716100050
}
],
"total": 1,
"page": 1,
"page_size": 20
}创建素材分组
创建一个新的素材分组。
处理流程:
- 鉴权检查 API Key
- 异步提交分组创建任务
- 立即返回
qgroupid和pending状态
默认分组规则:用户的首个 Group 会自动设为默认(is_default=true)。
说明:分组创建为异步流程,调用方需轮询 GET /v1/asset-groups/{qgroupid} 获取最终状态。
认证方式
在 Authorization 请求头中传入 API Key 或访问令牌,格式:Bearer {token}。
请求体
请求体属性
- namestring, 必填
分组展示名(必填),最长 64 字符
- descriptionstring
分组描述,可空,最长 300 字符
aigcliveness_face
bytedance/doubao-seedance-2-0-260128bytedance/doubao-seedance-2-0-fast-260128bytedance/doubao-seedance-2-0-mini-260615byteplus/dreamina-seedance-2-0-260128byteplus/dreamina-seedance-2-0-fast-260128byteplus/dreamina-seedance-2-0-mini-260615kling-element-v1
- callback_urlstring<uri>
真人认证回调地址。
type=liveness_face时必填,须为合法 https URL;type=aigc时忽略。刷脸完成后浏览器会跳转到此地址并拼接
?bytedToken=...&resultCode=10000&...,你的服务据此(确认resultCode==10000)调POST /v1/asset-groups/{qgroupid}/visual-validate-result触发认证回查。
请求
curl https://api.qnaigc.com/v1/asset-groups \
--request POST \
--header 'Authorization: Bearer YOUR_BEARER_AUTH' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{
"name": "我的虚拟人像分组",
"description": "用于存放公司形象虚拟人像素材",
"type": "aigc",
"model": "bytedance/doubao-seedance-2-0-260128"
}'响应
创建成功(注意:实际状态为 pending,需轮询查询最终状态)
响应体属性
- qgroupidstring, 必填
分组 ID(用户可见),格式
qgroup-{uid}-{ts} aigcliveness_face
- namestring, 必填
分组展示名
- descriptionstring, 必填
分组描述
- modelstring, 必填
素材使用的模型标识,决定素材绑定的目标模型
pendingawaiting_authactivefailed
- is_defaultboolean, 必填
是否为该用户的默认分组(真人组恒为 false)
- fail_reasonstring
失败原因,仅在
status=failed时有值 - h5_linkstring
真人认证 H5 刷脸链接,仅真人组
status=awaiting_auth时返回。⚠️ 有效期约 120 秒,需引导用户尽快打开刷脸。aigc 组及终态不返回。 - byted_tokenstring
真人认证凭证,仅真人组
status=awaiting_auth时返回,供调用visual-validate-result时透传(可不传,平台有存)。aigc 组及终态不返回。 - created_atinteger<int64>, 必填
创建时间(Unix 时间戳,秒)
- updated_atinteger<int64>, 必填
更新时间(Unix 时间戳,秒)
响应
{
"qgroupid": "qgroup-uid001-1716100000000000000",
"type": "aigc",
"name": "我的虚拟人像分组",
"description": "用于存放公司形象虚拟人像素材",
"model": "bytedance/doubao-seedance-2-0-260128",
"status": "pending",
"is_default": true,
"created_at": 1716100000,
"updated_at": 1716100000
}触发真人认证回查(仅 liveness_face)
真人组刷脸完成后,触发平台凭认证凭证向供应商换取认证结果(resolve),把分组从 awaiting_auth 推进到 active/failed。
调用时机(重要):
- 必须在分组状态为
awaiting_auth时调用(即GET已返回h5_link);分组仍pending(建会话未完成)时调用返回 409。 - ⚠️ 务必在刷脸成功后才调用,且只调一次:刷脸成功(
resultCode==10000)时,平台会用一次性凭证(byted_token)验证分组,该凭证查询一次即失效。请在浏览器跳回callback_url携带的resultCode==10000后再调。若result_code非10000:本接口仍受理并返回 202,平台异步将该组判为failed,不会消耗一次性凭证(不调用供应商换取接口)——但请勿在刷脸成功前用伪造的10000调用,否则会触发查询、白白烧掉凭证导致该组只能重建。
异步:本接口仅受理并返回 202,无论成功/失败的最终结果都需轮询 GET /v1/asset-groups/{qgroupid} 看 active/failed(非 10000 也会异步落 failed,而非本接口同步返回失败)。
幂等:分组已是 active/failed 终态时再调,直接返回 200 + 当前分组信息(不再触发回查)。
权限:只能操作当前用户自己的分组(qgroupid 须形如 qgroup-{uid}-*,否则 403)。
认证方式
在 Authorization 请求头中传入 API Key 或访问令牌,格式:Bearer {token}。
路径参数
- Name
- qgroupid
- Type
- string, 必填
- Description
真人分组 ID,格式
qgroup-{uid}-{ts}
请求体
请求体属性
- result_codestring, 必填
刷脸结果码(必填),来自刷脸完成后浏览器跳转
callback_url拼接的resultCode参数。10000=刷脸成功(平台才会向供应商换取 group_id);非10000时本接口仍返回 202,平台异步将该组判为failed且不消耗一次性认证凭证(不调用供应商)。两种情况都通过轮询GET观察最终状态。 - byted_tokenstring
认证凭证,可空。留空时平台使用建会话阶段已存储的
byted_token;如传入须与该分组存储的凭证一致,不一致返回 400byted_token mismatch(防越权/误用一次性凭证)。
请求
curl https://api.qnaigc.com/v1/asset-groups/{qgroupid}/visual-validate-result \
--request POST \
--header 'Authorization: Bearer YOUR_BEARER_AUTH' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{
"result_code": "10000",
"byted_token": "20260612101859D18B5635A448320E5032"
}'响应
分组已是终态(active/failed),幂等返回当前分组信息(未再触发回查)
响应体属性
- qgroupidstring, 必填
分组 ID(用户可见),格式
qgroup-{uid}-{ts} aigcliveness_face
- namestring, 必填
分组展示名
- descriptionstring, 必填
分组描述
- modelstring, 必填
素材使用的模型标识,决定素材绑定的目标模型
pendingawaiting_authactivefailed
- is_defaultboolean, 必填
是否为该用户的默认分组(真人组恒为 false)
- fail_reasonstring
失败原因,仅在
status=failed时有值 - h5_linkstring
真人认证 H5 刷脸链接,仅真人组
status=awaiting_auth时返回。⚠️ 有效期约 120 秒,需引导用户尽快打开刷脸。aigc 组及终态不返回。 - byted_tokenstring
真人认证凭证,仅真人组
status=awaiting_auth时返回,供调用visual-validate-result时透传(可不传,平台有存)。aigc 组及终态不返回。 - created_atinteger<int64>, 必填
创建时间(Unix 时间戳,秒)
- updated_atinteger<int64>, 必填
更新时间(Unix 时间戳,秒)
响应
{
"qgroupid": "qgroup-xxx-1781230723000204313",
"type": "liveness_face",
"name": "我的真人人像分组",
"description": "用于存放公司形象真人人像素材",
"model": "bytedance/doubao-seedance-2-0-260128",
"status": "active",
"is_default": false,
"created_at": 1781230723,
"updated_at": 1781230860
}查询单个素材分组
查询指定 qgroupid 对应的素材分组详情。
权限:只能查询当前用户自己的分组(按 uid 过滤)。
认证方式
在 Authorization 请求头中传入 API Key 或访问令牌,格式:Bearer {token}。
路径参数
- Name
- qgroupid
- Type
- string, 必填
- Description
分组 ID,格式
qgroup-{uid}-{ts}
请求体
暂无请求体
请求
curl https://api.qnaigc.com/v1/asset-groups/{qgroupid} \
--header 'Authorization: Bearer YOUR_BEARER_AUTH' \
--header 'Accept: application/json'响应
查询成功
响应体属性
- qgroupidstring, 必填
分组 ID(用户可见),格式
qgroup-{uid}-{ts} aigcliveness_face
- namestring, 必填
分组展示名
- descriptionstring, 必填
分组描述
- modelstring, 必填
素材使用的模型标识,决定素材绑定的目标模型
pendingawaiting_authactivefailed
- is_defaultboolean, 必填
是否为该用户的默认分组(真人组恒为 false)
- fail_reasonstring
失败原因,仅在
status=failed时有值 - h5_linkstring
真人认证 H5 刷脸链接,仅真人组
status=awaiting_auth时返回。⚠️ 有效期约 120 秒,需引导用户尽快打开刷脸。aigc 组及终态不返回。 - byted_tokenstring
真人认证凭证,仅真人组
status=awaiting_auth时返回,供调用visual-validate-result时透传(可不传,平台有存)。aigc 组及终态不返回。 - created_atinteger<int64>, 必填
创建时间(Unix 时间戳,秒)
- updated_atinteger<int64>, 必填
更新时间(Unix 时间戳,秒)
响应
{
"qgroupid": "qgroup-root-1781230723000204313",
"type": "liveness_face",
"name": "我的真人人像分组",
"description": "用于存放公司形象真人人像素材",
"model": "bytedance/doubao-seedance-2-0-260128",
"status": "awaiting_auth",
"is_default": false,
"h5_link": "https://h5-v2.kych5.com?accessKeyId=AKTP0V8amxFATDZB4p2zHK4vkICoXMCJgG661eKc1iTvQ8&secretAccessKey=lmaeWuqi3bf93I1boAlQUKrohadsewSuWbFchvIcJp1&sessionToken=nChBNa0N4OURzamFsTGZrWVdo.CiQKEEFuM0M5UHh6TDF5cXQ5ZFESELlECpexK0dRsvRfhJXI-HAQjtSt0QYY_92t0QYgvsLI8wcoBDC35IQvOiNSb2xlRm9yVmlzdWFsRmFjZS9Sb2xlRm9yVmlzdWFsRmFjZUIDYXJrUhFSb2xlRm9yVmlzdWFsRmFjZVgDegNhcms.p0qMcwPP7oTvs33tBBtv_C1bfI23NABWY1m-LvpxWzLK5OP2sNMWuiWrMzPHMcouFyzUVcuQNqKf4qMJeQ8l7Q&configId=861c572d-d32e-4260-b76d-9a9ca908e0b7&bytedToken=20260612101859D18B5635A448320E5032&lng=zh",
"byted_token": "20260612101859D18B5635A448320E5032",
"created_at": 1781230723,
"updated_at": 1781230739
}删除素材分组
删除指定 qgroupid 的素材分组(异步)
前置约束:
- 分组必须为空:组内仍有未软删素材时返回 409,需先逐个删除素材;
- 分组不能处于
pending状态:返回 409,需等待处理完成; - 仅
active/failed终态分组可删。
幂等:重复删除已删除/不存在的分组返回 404。
权限:只能删除当前用户自己的分组(qgroupid 须形如 qgroup-{uid}-*,否则 403)。
默认分组:允许删除默认分组,删除后下次创建素材时会自动重建。
认证方式
在 Authorization 请求头中传入 API Key 或访问令牌,格式:Bearer {token}。
路径参数
- Name
- qgroupid
- Type
- string, 必填
- Description
分组 ID,格式
qgroup-{uid}-{ts}
请求体
暂无请求体
请求
curl https://api.qnaigc.com/v1/asset-groups/{qgroupid} \
--request DELETE \
--header 'Authorization: Bearer YOUR_BEARER_AUTH' \
--header 'Accept: application/json'响应
删除已受理
响应体属性
- messagestring, 必填
固定为
deleted,表示删除已受理
响应
{
"message": "deleted"
}更新素材分组
更新指定分组的 name 或 description。
约束:
name最长 64 字符description最长 300 字符- 至少需要传入
name或description中的一个
权限:只能更新当前用户自己的分组。
认证方式
在 Authorization 请求头中传入 API Key 或访问令牌,格式:Bearer {token}。
路径参数
- Name
- qgroupid
- Type
- string, 必填
- Description
分组 ID
请求体
请求体属性
- namestring
分组展示名,最长 64 字符
- descriptionstring
分组描述,最长 300 字符
请求
curl https://api.qnaigc.com/v1/asset-groups/{qgroupid} \
--request PATCH \
--header 'Authorization: Bearer YOUR_BEARER_AUTH' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{
"name": "更新后的分组名",
"description": "新的分组描述"
}'响应
更新成功,返回更新后的分组信息
响应体属性
- qgroupidstring, 必填
分组 ID(用户可见),格式
qgroup-{uid}-{ts} aigcliveness_face
- namestring, 必填
分组展示名
- descriptionstring, 必填
分组描述
- modelstring, 必填
素材使用的模型标识,决定素材绑定的目标模型
pendingawaiting_authactivefailed
- is_defaultboolean, 必填
是否为该用户的默认分组(真人组恒为 false)
- fail_reasonstring
失败原因,仅在
status=failed时有值 - h5_linkstring
真人认证 H5 刷脸链接,仅真人组
status=awaiting_auth时返回。⚠️ 有效期约 120 秒,需引导用户尽快打开刷脸。aigc 组及终态不返回。 - byted_tokenstring
真人认证凭证,仅真人组
status=awaiting_auth时返回,供调用visual-validate-result时透传(可不传,平台有存)。aigc 组及终态不返回。 - created_atinteger<int64>, 必填
创建时间(Unix 时间戳,秒)
- updated_atinteger<int64>, 必填
更新时间(Unix 时间戳,秒)
响应
{
"qgroupid": "string",
"type": "aigc",
"name": "string",
"description": "string",
"model": "string",
"status": "pending",
"is_default": true,
"fail_reason": "string"
}查询素材列表
分页查询当前用户的素材列表,支持按状态和类型过滤。
按创建时间倒序排序,已删除的素材不会返回。
认证方式
在 Authorization 请求头中传入 API Key 或访问令牌,格式:Bearer {token}。
查询参数
- Name
- page
- Type
- integer
- Description
页码,从 1 开始
- Name
- page_size
- Type
- integer
- Description
每页大小,最大 100
- Name
- status
- Type
- enum
- Description
状态过滤:pending / reviewing / approved / failed
- Name
- type
- Type
- enum
- Description
类型过滤:image / video / audio
- Name
- group_id
- Type
- string
- Description
按分组过滤,传入
qgroup-{uid}-{ts}形式的 qgroupid。前缀必须属于当前用户,否则返回 400。。若 group_id 前缀不属于当前用户,返回 403。
请求体
暂无请求体
请求
curl 'https://api.qnaigc.com/v1/assets?page={page}&page_size={page_size}&status={status}&type={type}&group_id={group_id}' \
--header 'Authorization: Bearer YOUR_BEARER_AUTH' \
--header 'Accept: application/json'响应
查询成功
响应体属性
- qassetidstring, 必填
素材 ID(用户可见),格式
qasset-{uid}-{ts} imagevideoaudio
- namestring, 必填
素材展示名
- modelstring, 必填
素材使用的模型标识,决定素材绑定的目标模型
pendingreviewingapprovedfailed
- group_idstring
关联的分组 ID(
qgroupid) - fail_reasonstring
失败原因(审核拒绝/提交失败/超时),仅在
status=failed时有值 - created_atinteger<int64>, 必填
创建时间(Unix 时间戳,秒)
- updated_atinteger<int64>, 必填
更新时间(Unix 时间戳,秒)
- totalinteger<int64>, 必填
总记录数
- pageinteger, 必填
当前页码
- page_sizeinteger, 必填
每页大小
响应
{
"data": [
{
"qassetid": "qasset-uid001-1716100100000000000",
"type": "image",
"name": "公司虚拟形象",
"model": "bytedance/doubao-seedance-2-0-260128",
"status": "approved",
"group_id": "qgroup-uid001-1716100000000000000",
"created_at": 1716100100,
"updated_at": 1716100250
}
],
"total": 1,
"page": 1,
"page_size": 20
}创建素材
提交一个素材进行审核。
处理流程:
- 鉴权检查 API Key
- 处理 Group:
- 若传入
group_id,校验该 Group 属于当前用户且status=active - 若未传入,自动选用默认 Group;若无默认 Group,自动异步创建一个 pending Group
- 若传入
- 异步提交素材审核任务
- 立即返回
qassetid和pending状态
说明:素材审核为异步流程,状态会经过 pending → reviewing → approved/failed。审核完成后才能在视频生成中引用。
认证方式
在 Authorization 请求头中传入 API Key 或访问令牌,格式:Bearer {token}。
请求体
请求体属性
imagevideoaudio
- urlstring<uri>
Seedance 系列素材的源文件 URL,必须公网可访问;model=kling-element-v1 时忽略此字段。
- namestring, 必填
素材展示名(必填),最长 64 个字符
- group_idstring
关联的分组 ID(
qgroupid),可空。留空规则:仅适用于虚拟人像——平台自动按
(uid, aigc, model)维度选默认 active 分组;若无默认分组,自动异步创建 pending 分组并提交素材,素材状态会先停留在pending直到分组激活。传入规则:传入的 group 必须
status=active且其model与请求的model一致,否则返回 400。真人素材(liveness_face 组):⚠️ 必须显式传入已
active的真人组group_id——真人组需经活体认证创建,不支持自动建组;留空只会落到/新建 aigc 默认组。 bytedance/doubao-seedance-2-0-260128bytedance/doubao-seedance-2-0-fast-260128bytedance/doubao-seedance-2-0-mini-260615byteplus/dreamina-seedance-2-0-260128byteplus/dreamina-seedance-2-0-fast-260128byteplus/dreamina-seedance-2-0-mini-260615kling-element-v1
image_refervideo_refer
- frontal_imagestring<uri>
主体正面图 URL;reference_type=image_refer 时必填。
- refer_imagesstring<uri>[]
其他角度的参考图 URL 列表;reference_type=image_refer 时可选,最多 3 张。
- refer_videostring<uri>
主体参考视频 URL;reference_type=video_refer 时必填。
请求
curl https://api.qnaigc.com/v1/assets \
--request POST \
--header 'Authorization: Bearer YOUR_BEARER_AUTH' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{
"type": "image",
"url": "https://img.somake.ai/cdn-cgi/image/width=800,quality=80,format=auto,fit=scale-down/tools/examples/face-generator_gallery_1763099237_8262.jpg",
"name": "年轻男人",
"model": "bytedance/doubao-seedance-2-0-260128"
}'响应
创建成功(注意:实际状态为 pending,需轮询查询最终状态)
响应体属性
- qassetidstring, 必填
素材 ID(用户可见),格式
qasset-{uid}-{ts} imagevideoaudio
- namestring, 必填
素材展示名
- modelstring, 必填
素材使用的模型标识,决定素材绑定的目标模型
pendingreviewingapprovedfailed
- group_idstring
关联的分组 ID(
qgroupid) - fail_reasonstring
失败原因(审核拒绝/提交失败/超时),仅在
status=failed时有值 - created_atinteger<int64>, 必填
创建时间(Unix 时间戳,秒)
- updated_atinteger<int64>, 必填
更新时间(Unix 时间戳,秒)
响应
{
"qassetid": "qasset-uid001-1716100100000000000",
"type": "image",
"name": "公司虚拟形象",
"model": "bytedance/doubao-seedance-2-0-260128",
"status": "pending",
"group_id": "qgroup-uid001-1716100000000000000",
"created_at": 1716100100,
"updated_at": 1716100100
}查询单个素材
查询指定 qassetid 对应的素材详情,包括审核状态。
权限:只能查询当前用户自己的素材(按 uid 过滤)。
轮询建议:素材状态从 pending → reviewing → approved/failed,轮询时关注 status 字段;status=approved 后即可在视频生成中通过 qasset://{qassetid} 引用。
认证方式
在 Authorization 请求头中传入 API Key 或访问令牌,格式:Bearer {token}。
路径参数
- Name
- qassetid
- Type
- string, 必填
- Description
素材 ID,格式
qasset-{uid}-{ts}
请求体
暂无请求体
请求
curl https://api.qnaigc.com/v1/assets/{qassetid} \
--header 'Authorization: Bearer YOUR_BEARER_AUTH' \
--header 'Accept: application/json'响应
查询成功
响应体属性
- qassetidstring, 必填
素材 ID(用户可见),格式
qasset-{uid}-{ts} imagevideoaudio
- namestring, 必填
素材展示名
- modelstring, 必填
素材使用的模型标识,决定素材绑定的目标模型
pendingreviewingapprovedfailed
- group_idstring
关联的分组 ID(
qgroupid) - fail_reasonstring
失败原因(审核拒绝/提交失败/超时),仅在
status=failed时有值 - created_atinteger<int64>, 必填
创建时间(Unix 时间戳,秒)
- updated_atinteger<int64>, 必填
更新时间(Unix 时间戳,秒)
响应
{
"qassetid": "string",
"type": "image",
"name": "string",
"model": "string",
"status": "pending",
"group_id": "string",
"fail_reason": "string",
"created_at": 42
}删除素材
删除指定 qassetid 的素材(异步)。
前置约束:仅终态素材可删——status 为 approved 或 failed;pending/reviewing 状态返回 409。
幂等:重复删除已删除/不存在的素材返回 404。
权限:只能删除当前用户自己的素材(qassetid 须形如 qasset-{uid}-*,否则 403)。
认证方式
在 Authorization 请求头中传入 API Key 或访问令牌,格式:Bearer {token}。
路径参数
- Name
- qassetid
- Type
- string, 必填
- Description
素材 ID,格式
qasset-{uid}-{ts}
请求体
暂无请求体
请求
curl https://api.qnaigc.com/v1/assets/{qassetid} \
--request DELETE \
--header 'Authorization: Bearer YOUR_BEARER_AUTH' \
--header 'Accept: application/json'响应
删除已受理
响应体属性
- messagestring, 必填
固定为
deleted,表示删除已受理
响应
{
"message": "deleted"
}