ガイド
素材
画像素材の送信、審査ステータスと素材一覧の照会
素材
素材は送信後にプラットフォームが非同期で処理し、ステータスが 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 フィールドを使用できます。すでにクライアント側にある画像の場合、インラインで送信すると外部ダウンロードを 1 回減らせます。
data_url は画像全体を base64 でアップロードします(サイズは元画像の約 1.33 倍)。画像にどうしても公開アドレスを用意できない場合にのみ使用してください。たとえば、画像がログインが必要なアドレスの背後にある場合、社内ネットワーク内にある場合、ローカルファイルしかない場合などです。data_url を使用すると、アップロード時間は画像サイズと呼び出し側の帯域に依存し、プラットフォームは画像を永久のプラットフォーム素材ストレージではなく短期の一時中継に書き込みます。素材ライブラリのミラーリングが完了して Active になると、プレビューには素材ライブラリが返す preview_url が優先的に使用され、一時ファイルは中継サービスによって自動的に削除されます。
画像素材は virtual グループにのみ送信できます。real グループの素材は実在人物の QR コード許諾フローで生成されます。
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 キーが欠落、誤り、または失効しています |
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 | 素材オブジェクト。フィールドは送信 API と同じです |
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 キーが欠落、誤り、または失効しています |
404 | 素材不存在或无权访问 | 素材 ID が誤っている、削除済み、または現在のアカウントに属していません |
502 / 503 | 素材服务暂不可用 | 素材サービスに異常があります。リクエスト情報を保持してから再試行してください |
素材一覧の照会
/api/v1/materials/assets認証方式
Authorization: Bearer <API_KEY>。
リクエストパラメータ · query
| パラメータ | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
page | integer | いいえ | 1 | ページ番号 |
page_size | integer | いいえ | 20 | 1 ページあたりの件数。最大 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 | 素材一覧。フィールドは送信 API と同じです |
レスポンスボディ
{
"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 キーが欠落、誤り、または失効しています |
404 | 素材分组不存在或无权访问 | 指定した group_id が存在しない、または現在のアカウントに属していません |
500 / 502 / 503 | 素材服务暂不可用 | 素材サービスに異常があります。リクエスト情報を保持してから再試行してください |
