使用指南
素材
提交图片素材、查询审核状态与查询素材列表
素材
素材提交后由平台异步处理,状态从 Processing 变为 Active 后才能用于视频任务。
提交图片素材
/api/v1/materials/assets认证方式
Authorization: Bearer <API_KEY>。
请求体 · application/json
Prop
Type
image_url 与 data_url 只能提交一个。image_url 也可以是 data:image/...;base64,...,平台会把它按内联图片处理。使用远程 URL 时,地址必须是平台可以公开下载的 http(s):// 地址(http 和 https 都支持),并且不依赖 Cookie、Referer、登录页面或浏览器会话,在平台处理期间保持有效。
远程 image_url 会先经过平台的快速中转缓存,再由素材库镜像,普通图片通常可以在秒级完成。平台也支持内联图片:可以把 image_url 的值写成 data:image/...;base64,...,或使用单独的 data_url 字段。对于已经在客户端本地的图片,内联提交可以进一步减少一次外部下载。
data_url 会把整张图以 base64 上传(体积约为原图的 1.33 倍),只在图片确实无法提供公网地址时使用:例如图片在需要登录的地址后面、在内网、或只有本地文件。使用 data_url 时上传耗时取决于图片大小和调用方带宽,平台会将图片写入短期临时中转,而不是永久平台素材存储。素材库完成镜像并进入 Active 后,预览优先使用素材库返回的 preview_url,临时文件由中转服务自动清理。
图片素材只能提交到 virtual 分组;real 分组的素材由真人扫码授权流程产生。
request_id 也可以通过 Idempotency-Key 请求头提交。相同账号使用同一个 request_id 重复提交时,平台会返回第一次创建成功的同一个素材,不会再次创建上游素材。未提交 request_id 时,平台会按账号、分组、标题和原始图片载荷自动生成稳定值;同一图片和标题的重试仍然可以安全复用。
请求示例
curl -X POST "$LOCOPAL_BASE_URL/api/v1/materials/assets" \
-H "Authorization: Bearer $LOCOPAL_API_KEY" \
-H "Content-Type: application/json" \
--data-binary @- <<JSON
{
"group_id": "group-1789069780-5762d1",
"request_id": "brand-character-front-001",
"title": "角色正面定妆图",
"image_url": "$LOCOPAL_IMAGE_URL",
"tags": ["人物", "正面"]
}
JSON使用本地图片时改为提交 data_url:
{
"group_id": "group-1789069780-5762d1",
"request_id": "brand-character-front-001",
"title": "角色正面定妆图",
"file_name": "person.png",
"data_url": "data:image/png;base64,iVBORw0KGgo..."
}如果客户端希望继续使用 image_url 字段,也可以直接提交内联图片:
{
"group_id": "group-1789069780-5762d1",
"request_id": "brand-character-front-001",
"title": "角色正面定妆图",
"image_url": "data:image/png;base64,iVBORw0KGgo..."
}响应参数
| 参数 | 类型 | 说明 |
|---|---|---|
code | integer | 成功时为 0 |
msg | string | 成功时为 图片素材已提交 |
data.asset_id | string | 素材 ID,等于 data.asset.id |
data.asset.id | string | 素材 ID,视频任务用 asset://<id> 引用 |
data.asset.kind | string | 素材类型,图片为 image |
data.asset.title | string | 素材名称(自动补全后的最终值) |
data.asset.request_id | string / null | 本次上传使用的幂等请求 ID |
data.asset.platform_asset_id | string | 素材服务的平台素材 ID,用于排查;当前部署通常与 id 相同 |
data.asset.group_id | string | 所属分组 ID |
data.asset.status | string | 受理后为 Processing |
data.asset.error_message | string / null | 处理失败原因,正常为 null |
data.asset.note | string / null | 备注,未提交时为 null |
data.asset.tags | string[] | 标签列表,未提交时通常为空数组 |
data.asset.mime_type | string / null | 素材服务返回的 MIME 类型,未返回时为 null |
data.asset.bytes | integer / null | 素材文件大小,素材服务未返回时为 null |
data.asset.created_at | integer | 创建时间(Unix 秒) |
data.asset.updated_at | integer | 更新时间(Unix 秒) |
响应体
{
"code": 0,
"data": {
"asset_id": "asset-20260911035115-etexu",
"asset": {
"id": "asset-20260911035115-etexu",
"platform_asset_id": "asset-20260911035115-etexu",
"kind": "image",
"title": "角色正面定妆图",
"group_id": "group-1789069780-5762d1",
"status": "Processing",
"error_message": null,
"note": null,
"tags": [],
"mime_type": null,
"bytes": null,
"created_at": 1789069876,
"updated_at": 1789069876
}
},
"msg": "图片素材已提交"
}提交成功只表示素材已受理,提交视频任务前仍要查询状态。
错误响应
| HTTP | msg | 说明 |
|---|---|---|
400 | 缺少 group_id | 未提供分组 |
400 | image_url 必须是可公开下载的 http(s) 地址,当前为 … | 地址协议不是 http / https,或地址不完整;改用公网 http(s) 地址,或改用 data_url |
400 | image_url 与 data_url 只能提交一个 | 两个字段同时提交或都未提交 |
400 | data_url 必须是 data:image/...;base64,... 格式 | data_url 格式错误 |
400 | 图片数据无效或超过 20MB | 图片数据为空或超过 20 MB |
400 | 素材名称不能为空 / 素材名称不能超过 64 个字符 | title 校验失败 |
401 | Invalid token | API Key 缺失、错误或已失效 |
404 | 素材分组不存在或不属于当前账号 | group_id 错误或不属于当前账号 |
404 | 素材分组不存在或不是虚拟素材分组 | 向 real 分组提交图片 |
502 / 503 | 素材服务暂不可用 | 素材服务异常,保留请求信息后重试 |
查询单个素材
/api/v1/materials/assets/{asset_id}认证方式
Authorization: Bearer <API_KEY>。
请求参数 · path
Prop
Type
请求示例
curl "$LOCOPAL_BASE_URL/api/v1/materials/assets/asset-20260911035115-etexu" \
-H "Authorization: Bearer $LOCOPAL_API_KEY"响应参数
| 参数 | 类型 | 说明 |
|---|---|---|
code | integer | 成功时为 0 |
msg | string | 成功时为 OK |
data.asset | object | 素材对象,字段同提交接口 |
data.asset.status 的取值与处理方式:
| 状态 | 含义 | 程序行为 |
|---|---|---|
Processing | 素材仍在处理或审核 | 保存 asset_id,稍后查询,不要重复提交 |
Active | 素材可用于支持该素材类型的任务 | 在视频 content 中使用 asset://<asset_id> |
Failed | 素材处理失败 | 读取 error_message,修正源图片后创建新的素材 |
响应体
{
"code": 0,
"data": {
"asset": {
"id": "asset-20260911035115-etexu",
"platform_asset_id": "asset-20260911035115-etexu",
"kind": "image",
"title": "角色正面定妆图",
"group_id": "group-1789069780-5762d1",
"status": "Active",
"error_message": null,
"note": null,
"tags": [],
"mime_type": null,
"bytes": null,
"created_at": 1789069876,
"updated_at": 1789069877
}
},
"msg": "OK"
}审核失败同样返回 HTTP 200,失败原因在 error_message:
{
"code": 0,
"data": {
"asset": {
"id": "asset-20260911035115-etexu",
"status": "Failed",
"error_message": "素材处理失败"
}
},
"msg": "OK"
}错误响应
| HTTP | msg | 说明 |
|---|---|---|
401 | Invalid token | API Key 缺失、错误或已失效 |
404 | 素材不存在或无权访问 | 素材 ID 错误、已删除或不属于当前账号 |
502 / 503 | 素材服务暂不可用 | 素材服务异常,保留请求信息后重试 |
查询素材列表
/api/v1/materials/assets认证方式
Authorization: Bearer <API_KEY>。
请求参数 · query
| 参数 | 类型 | 必填 | 默认 | 说明 |
|---|---|---|---|---|
page | integer | 否 | 1 | 页码 |
page_size | integer | 否 | 20 | 每页条数,最大 100 |
group_id | string | 否 | — | 只返回该分组下的素材 |
请求示例
curl "$LOCOPAL_BASE_URL/api/v1/materials/assets?page=1&page_size=20&group_id=group-1789069780-5762d1" \
-H "Authorization: Bearer $LOCOPAL_API_KEY"响应参数
| 参数 | 类型 | 说明 |
|---|---|---|
code | integer | 成功时为 0 |
msg | string | 成功时为 OK |
data.total | integer | 符合条件的素材总数 |
data.page / data.page_size | integer | 本次分页参数 |
data.assets | array | 素材列表,字段同提交接口 |
响应体
{
"code": 0,
"data": {
"assets": [
{
"id": "asset-20260911035115-etexu",
"platform_asset_id": "asset-20260911035115-etexu",
"kind": "image",
"title": "角色正面定妆图",
"group_id": "group-1789069780-5762d1",
"status": "Active",
"error_message": null,
"note": null,
"tags": [],
"mime_type": null,
"bytes": null,
"created_at": 1789069876,
"updated_at": 1789069877
}
],
"total": 1,
"page": 1,
"page_size": 20
},
"msg": "OK"
}错误响应
| HTTP | msg | 说明 |
|---|---|---|
401 | Invalid token | API Key 缺失、错误或已失效 |
404 | 素材分组不存在或无权访问 | 指定的 group_id 不存在或不属于当前账号 |
500 / 502 / 503 | 素材服务暂不可用 | 素材服务异常,保留请求信息后重试 |
