Aller au contenu principal
LocoPal AiLocoPal Ai
Bibliothèque de ressourcesInterfaces de la bibliothèque de ressources

Guide

Ressources

Soumettre des ressources image, interroger le statut de validation et interroger la liste des ressources

Voir le Markdown

Ressources

Après leur soumission, les ressources sont traitées de manière asynchrone par la plateforme ; ce n'est qu'après le passage du statut de Processing à Active qu'elles peuvent être utilisées pour les tâches vidéo.

Soumettre une ressource image

POST/api/v1/materials/assets

Méthode d'authentification

Authorization: Bearer <API_KEY>.

Corps de la requête · application/json

Prop

Type

Seul l'un des champs image_url et data_url peut être soumis. image_url peut aussi être data:image/...;base64,..., que la plateforme traitera comme une image intégrée. Lors de l'utilisation d'une URL distante, l'adresse doit être une adresse http(s):// téléchargeable publiquement par la plateforme (http et https sont pris en charge), sans dépendre de cookies, de Referer, d'une page de connexion ni d'une session de navigateur, et doit rester valide pendant le traitement par la plateforme.

Une image_url distante passe d'abord par le cache de relais rapide de la plateforme, puis est mise en miroir par la bibliothèque de ressources ; une image ordinaire peut généralement être traitée en quelques secondes. La plateforme prend également en charge les images intégrées : vous pouvez écrire la valeur de image_url sous la forme data:image/...;base64,..., ou utiliser le champ distinct data_url. Pour une image déjà présente localement sur le client, la soumission intégrée permet d'économiser un téléchargement externe supplémentaire.

data_url envoie l'image entière en base64 (environ 1,33 fois le volume de l'image d'origine) ; ne l'utilisez que lorsque l'image ne peut vraiment pas disposer d'une adresse publique : par exemple, une image derrière une adresse nécessitant une connexion, sur un réseau interne, ou uniquement disponible en fichier local. Avec data_url, la durée d'import dépend de la taille de l'image et de la bande passante de l'appelant ; la plateforme écrit l'image dans un relais temporaire à court terme, et non dans le stockage permanent de ressources de la plateforme. Une fois la mise en miroir par la bibliothèque de ressources terminée et le statut passé à Active, l'aperçu utilise en priorité le preview_url renvoyé par la bibliothèque de ressources ; le fichier temporaire est nettoyé automatiquement par le service de relais.

Les ressources image ne peuvent être soumises qu'à un groupe virtual ; les ressources d'un groupe real sont produites par le processus d'autorisation de portrait par scan de code QR.

request_id peut également être soumis via l'en-tête Idempotency-Key. Lorsque le même compte soumet à nouveau avec le même request_id, la plateforme renvoie la même ressource créée avec succès la première fois et ne recrée pas de ressource en amont. Si request_id n'est pas soumis, la plateforme génère automatiquement une valeur stable à partir du compte, du groupe, du titre et de la charge utile de l'image d'origine ; une nouvelle tentative avec la même image et le même titre peut également être réutilisée en toute sécurité.

Exemple de requête

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

Pour une image locale, soumettez plutôt 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..."
}

Si le client souhaite continuer à utiliser le champ image_url, il peut également soumettre directement une image intégrée :

{
  "group_id": "group-1789069780-5762d1",
  "request_id": "brand-character-front-001",
  "title": "角色正面定妆图",
  "image_url": "data:image/png;base64,iVBORw0KGgo..."
}

Paramètres de réponse

ParamètreTypeDescription
codeinteger0 en cas de succès
msgstring图片素材已提交 en cas de succès
data.asset_idstringID de ressource, égal à data.asset.id
data.asset.idstringID de ressource, référencé dans les tâches vidéo via asset://<id>
data.asset.kindstringType de ressource, image pour une image
data.asset.titlestringNom de la ressource (valeur finale après complétion automatique)
data.asset.request_idstring / nullID de requête idempotent utilisé pour cet import
data.asset.platform_asset_idstringID de ressource de la plateforme du service de ressources, utilisé pour le diagnostic ; dans le déploiement actuel, il est généralement identique à id
data.asset.group_idstringID du groupe d'appartenance
data.asset.statusstringProcessing après acceptation
data.asset.error_messagestring / nullCause de l'échec du traitement, null en cas normal
data.asset.notestring / nullRemarque, null si elle n'est pas soumise
data.asset.tagsstring[]Liste d'étiquettes, généralement un tableau vide si elles ne sont pas soumises
data.asset.mime_typestring / nullType MIME renvoyé par le service de ressources, null s'il n'est pas renvoyé
data.asset.bytesinteger / nullTaille du fichier de ressource, null si le service de ressources ne la renvoie pas
data.asset.created_atintegerDate de création (secondes Unix)
data.asset.updated_atintegerDate de mise à jour (secondes Unix)

Corps de la réponse

{
  "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": "图片素材已提交"
}

Une soumission réussie signifie seulement que la ressource a été acceptée ; vous devez encore interroger son statut avant de soumettre une tâche vidéo.

Réponses d'erreur

HTTPmsgDescription
400缺少 group_idAucun groupe fourni
400image_url 必须是可公开下载的 http(s) 地址,当前为 …Le protocole de l'adresse n'est pas http / https, ou l'adresse est incomplète ; utilisez une adresse http(s) publique, ou utilisez data_url
400image_url 与 data_url 只能提交一个Les deux champs sont soumis en même temps, ou aucun ne l'est
400data_url 必须是 data:image/...;base64,... 格式Format de data_url incorrect
400图片数据无效或超过 20MBLes données d'image sont vides ou dépassent 20 Mo
400素材名称不能为空 / 素材名称不能超过 64 个字符Échec de validation de title
401Invalid tokenClé API absente, erronée ou expirée
404素材分组不存在或不属于当前账号group_id incorrect ou n'appartenant pas au compte actuel
404素材分组不存在或不是虚拟素材分组Soumission d'une image à un groupe real
502 / 503素材服务暂不可用Service de ressources anormal ; conservez les informations de requête et réessayez

Interroger une ressource unique

GET/api/v1/materials/assets/{asset_id}

Méthode d'authentification

Authorization: Bearer <API_KEY>.

Paramètres de la requête · path

Prop

Type

Exemple de requête

curl "$LOCOPAL_BASE_URL/api/v1/materials/assets/asset-20260911035115-etexu" \
  -H "Authorization: Bearer $LOCOPAL_API_KEY"

Paramètres de réponse

ParamètreTypeDescription
codeinteger0 en cas de succès
msgstringOK en cas de succès
data.assetobjectObjet ressource, champs identiques à l'interface de soumission

Valeurs de data.asset.status et traitement correspondant :

StatutSignificationComportement du programme
ProcessingLa ressource est encore en cours de traitement ou de validationEnregistrez asset_id, interrogez plus tard, ne soumettez pas à nouveau
ActiveLa ressource peut être utilisée pour les tâches prenant en charge ce type de ressourceUtilisez asset://<asset_id> dans le content de la vidéo
FailedLe traitement de la ressource a échouéLisez error_message, corrigez l'image source puis créez une nouvelle ressource

Corps de la réponse

{
  "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"
}

Un échec de validation renvoie également HTTP 200, la cause de l'échec se trouvant dans error_message :

{
  "code": 0,
  "data": {
    "asset": {
      "id": "asset-20260911035115-etexu",
      "status": "Failed",
      "error_message": "素材处理失败"
    }
  },
  "msg": "OK"
}

Réponses d'erreur

HTTPmsgDescription
401Invalid tokenClé API absente, erronée ou expirée
404素材不存在或无权访问ID de ressource incorrect, supprimé ou n'appartenant pas au compte actuel
502 / 503素材服务暂不可用Service de ressources anormal ; conservez les informations de requête et réessayez

Interroger la liste des ressources

GET/api/v1/materials/assets

Méthode d'authentification

Authorization: Bearer <API_KEY>.

Paramètres de la requête · query

ParamètreTypeObligatoireValeur par défautDescription
pageintegerNon1Numéro de page
page_sizeintegerNon20Nombre d'éléments par page, 100 maximum
group_idstringNon—Ne renvoie que les ressources de ce groupe

Exemple de requête

curl "$LOCOPAL_BASE_URL/api/v1/materials/assets?page=1&page_size=20&group_id=group-1789069780-5762d1" \
  -H "Authorization: Bearer $LOCOPAL_API_KEY"

Paramètres de réponse

ParamètreTypeDescription
codeinteger0 en cas de succès
msgstringOK en cas de succès
data.totalintegerNombre total de ressources correspondantes
data.page / data.page_sizeintegerParamètres de pagination de cette requête
data.assetsarrayListe des ressources, champs identiques à l'interface de soumission

Corps de la réponse

{
  "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"
}

Réponses d'erreur

HTTPmsgDescription
401Invalid tokenClé API absente, erronée ou expirée
404素材分组不存在或无权访问Le group_id indiqué n'existe pas ou n'appartient pas au compte actuel
500 / 502 / 503素材服务暂不可用Service de ressources anormal ; conservez les informations de requête et réessayez
Cette page vous a-t-elle aidé ?

Sur cette page