使用指南
素材
提交圖片素材、查詢審核狀態與查詢素材清單
素材
素材提交後由平台非同步處理,狀態從 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 | 素材服务暂不可用 | 素材服務異常,保留請求資訊後重試 |
