Aller au contenu principal
LocoPal AiLocoPal Ai
Intégration API

Guide

Codes d'erreur et diagnostic

Statuts HTTP, signification des codes d'erreur, erreurs courantes de modèles et de ressources, limitation de débit et étapes de diagnostic

Voir le Markdown

Codes d'erreur et diagnostic

Lors du diagnostic, commencez par noter : le code de statut HTTP, l'identifiant de requête renvoyé par la plateforme, l'ID du modèle, l'ID de la tâche, l'ID de la ressource et le code d'erreur d'origine.

N'enregistrez pas la clé API, le token de session de portrait ni l'adresse complète de téléchargement de la ressource ; masquez ces informations avant de les transmettre au support de la plateforme.

Signification des statuts HTTP

StatutSignificationTraitement
200Requête réussie (les états intermédiaires d'une tâche asynchrone sont également 200)Lisez le champ de statut dans le corps de la réponse
400Paramètre invalide, format du corps de requête invalide, model manquantCorrigez la requête selon error.message ou msg
401Clé API absente, incorrecte ou expiréeVérifiez Authorization et l'état de la clé
403Accès non autorisé (par exemple, accès à une ressource d'un autre compte)Vérifiez que la ressource appartient au compte actuel
404Ressource inexistante, n'appartenant pas au compte actuel, ou méthode non correspondanteVérifiez l'ID ; si le chemin est correct, vérifiez ensuite la méthode HTTP
429Requêtes trop fréquentesRéessayez après un backoff, sans nouvelles tentatives concurrentes
500Erreur interne de la plateformeEnregistrez l'identifiant de requête puis réessayez ; si l'échec persiste, contactez le support
502Échec du traitement de la ressource ou anomalie d'un service dépendantRéessayez plus tard ; si l'échec persiste, contactez le support

404 a trois causes possibles ; ne l'assimilez pas systématiquement à une « erreur d'ID »

C'est le point le plus fréquemment mal interprété lors du diagnostic :

SituationComportement observé
La ressource n'existe pas / n'appartient pas au compte actuelGET /api/v1/materials/assets/<不存在> → 404
Envoi d'un GET vers un chemin qui ne prend en charge que POSTGET /v1/chat/completions → 404 ; GET /v1/images/generations → 404
Chemin mal orthographié404

Lorsque vous recevez un 404, vérifiez d'abord si le chemin et la méthode correspondent, avant de suspecter l'ID.

Une tâche vidéo introuvable renvoie 400, et non 404

Ce point est incohérent avec les autres interfaces et mérite une attention particulière :

RequêteStatut observéCorps de réponse
GET /v1/video/generations/<不存在>400{"code":"task_not_exist","message":"task_not_exist","data":null}
GET /v1/videos/<不存在>400Idem
GET /api/v1/materials/assets/<不存在>404{"code":404,"data":null,"msg":"素材不存在或无权访问"}

La consultation d'une tâche vidéo renvoie 400 + une structure racine {code, message, data} ; ce n'est ni 404, ni la structure d'objet error décrite ci-dessous.

Il existe trois structures de réponse d'erreur

1. Interfaces de génération de modèle / image / vidéo —— objet error

En cas d'échec, l'interface renvoie un code HTTP non 2xx avec un objet error :

{
  "error": {
    "code": "invalid_parameter",
    "message": "请求参数不符合所选模型要求",
    "type": "invalid_request_error",
    "param": "size"
  }
}
ChampDescription
codeCode d'erreur, peut être une chaîne vide (voir ci-dessous)
messageRaison lisible, contient généralement un request id
typeIdentifiant du type d'erreur. Lors des tests, l'échec d'authentification, le modèle inexistant et le corps de requête invalide renvoient tous new_api_error
paramPrésent uniquement pour les erreurs de paramètre, indique le champ concerné

code peut être une chaîne vide. Testé : en cas d'échec d'authentification et lorsque le JSON du corps de requête ne peut pas être analysé, code vaut "". Ne déterminez pas « s'il y a une erreur » en fonction du fait que code est vide ; basez-vous sur le code de statut HTTP et lisez message en priorité.

type n'est pas un champ de classification stable. Pour classifier, lisez code et ne vous fiez pas à la valeur de type.

2. Interfaces de la bibliothèque de ressources —— code racine

Renvoie un code HTTP non 2xx, où code correspond au statut HTTP :

{ "code": 404, "data": null, "msg": "素材不存在或无权访问" }

3. Consultation de tâche vidéo —— chaîne code racine

{ "code": "task_not_exist", "message": "task_not_exist", "data": null }

Notez qu'ici code est la chaîne task_not_exist, et non un nombre.

request id : l'identifiant clé pour le diagnostic

La plateforme écrit le request id directement dans error.message ; il n'est pas nécessaire de le chercher dans les en-têtes :

"message": "Invalid token (request id: 202609221135501066578648268d9d6uXuM5QgH)"

Extraction en une commande :

curl -s "$LOCOPAL_BASE_URL/v1/models" \
  -H "Authorization: Bearer sk-invalid" \
  | grep -oE 'request id: [A-Za-z0-9]+'

Joindre ce request id à votre ticket permet de réduire considérablement le temps de localisation.

Échec d'authentification

Lorsque la clé API est absente, incorrecte ou expirée, toutes les interfaces renvoient HTTP 401 et :

{
  "error": {
    "code": "",
    "message": "Invalid token (request id: ...)",
    "type": "new_api_error"
  }
}

Notez que code est une chaîne vide : c'est précisément pourquoi il est rappelé ci-dessus de « ne pas se fier à code ».

Erreurs de modèles et de génération

Code d'erreur / MessageCauseTraitement
Model name not specifiedLe corps de requête ne contient pas le champ modelAjoutez l'ID de modèle renvoyé par /v1/models
model_not_foundL'ID de modèle n'existe pas, ou la clé / le groupe actuel n'a pas accès à ce modèleInterrogez à nouveau /v1/models et utilisez l'id renvoyé
No available channelLe groupe actuel n'a aucun canal disponibleChangez pour un modèle similaire ou contactez le support de la plateforme
invalid_parameterLa combinaison de paramètres n'est pas prise en charge par le modèle actuelAjustez la taille, le ratio, la durée, etc., selon le champ param
unknown_parameterLe modèle / canal actuel ne reconnaît pas le champ de requête (par exemple response_format de l'interface image)Supprimez le champ non pris en charge indiqué par param et utilisez le comportement par défaut du modèle
InvalidParameter / upstream_errorLe modèle amont refuse le paramètre (par exemple, le nombre minimum de pixels de l'image n'est pas atteint)Lisez message et ajustez la taille ou les paramètres
credit_balance_exhausted / insufficient_quotaLe canal amont actuel n'a pas de solde disponiblePassez à un modèle / canal similaire, ou contactez le support de la plateforme pour recharger le solde du canal
ResourceDownloadFailedL'adresse de l'image / vidéo de référence ne peut pas être téléchargée directementUtilisez une adresse HTTPS accessible publiquement, ou une référence asset:// de la bibliothèque de ressources
task_not_existL'ID de tâche interrogé n'existe pas ou n'appartient pas au compte actuelVérifiez l'ID de tâche et le compte utilisé lors de sa création
video_generation_failedLa tâche vidéo a été acceptée, mais la soumission à l'amont, le traitement de la ressource, la revue ou la génération a finalement échouéLisez error.message dans la même réponse ; conservez l'ID de tâche et, après avoir corrigé la ressource ou les paramètres, laissez l'utilisateur soumettre à nouveau volontairement
Le modèle actuel ne prend pas en charge la bibliothèque de ressources de portraitUne ressource de portrait a été soumise à un modèle qui n'a pas cette capacitéUtilisez un modèle prenant en charge la bibliothèque de ressources de portrait ; ne contournez pas le problème en utilisant une URL d'image ordinaire
insufficient_user_quotaLe solde du compte ou le quota de la clé API actuelle ne suffit pas à couvrir la consommation estiméeRechargez ou ajustez les paramètres selon « nécessaires pour cette fois / disponibles actuellement » indiqué dans l'erreur, puis réessayez ; aucune tâche n'est créée dans ce cas
缺少提示词:请在 prompt 或 content 的 text 元素中提供文本描述La tâche vidéo n'a pas de description textuelleAjoutez prompt ou un élément text dans content
content[0].role 不支持 ...Le rôle de la ressource de référence ne figure pas dans la liste autoriséeUtilisez reference_image, first_frame, last_frame, reference_video ou reference_audio
素材库中找不到素材 ...La ressource asset:// n'existe pas ou n'appartient pas au compte actuelSoumettez d'abord la ressource et attendez qu'elle soit disponible, ou vérifiez le compte
task_concurrency_exceededLe nombre de tâches de génération traitées simultanément par le compte ou la plateforme a atteint la limite de concurrence (HTTP 429)Selon « actuellement N / limite M » indiqué dans le message, attendez la fin des tâches existantes avant de soumettre ; ne réessayez pas en continu

Erreurs de la bibliothèque de ressources

HTTPMessageCauseTraitement
400请求体必须是 JSON 对象Le corps de requête n'est pas un JSON valideCorrigez le corps de la requête
400type 只能是 virtual 或 realValeur de type invalideCorrigez type
400素材分组名称不能为空 / 不能超过 64 个字符Nom manquant ou trop longCorrigez le nom
400素材分组说明不能超过 300 个字符Description trop longueRaccourcissez la description
400缺少 group_idAucun groupe fourni lors de la soumission de la ressourceAjoutez group_id
400image_url 必须是可公开下载的 http(s) 地址…L'adresse n'est pas en http(s) ou est incomplèteUtilisez une adresse http(s) publique, ou data_url
400image_url 与 data_url 只能提交一个Les deux sont soumis, ou aucun ne l'estNe conservez qu'un seul champ
400data_url 必须是 data:image/...;base64,... 格式 / 图片数据无效或超过 20MBFormat des données téléversées invalide ou taille excessiveCorrigez les données ou utilisez image_url
404素材不存在或无权访问ID de ressource incorrect, supprimé ou n'appartenant pas au compte actuelUtilisez l'asset_id renvoyé lors de la soumission de la ressource
404素材分组不存在或无权访问 / 素材分组不存在或不属于当前账号ID de groupe incorrect ou n'appartenant pas au compte actuelUtilisez un ID de groupe appartenant à votre propre compte
404素材分组不存在或不是虚拟素材分组Soumission d'une image à un groupe realLes images ne peuvent être soumises qu'à un groupe virtual
429Requêtes trop fréquentesInterrogation trop rapide ou concurrence trop élevéeRéessayez après un backoff, comme indiqué
500 / 502 / 503素材服务暂不可用Le service de ressources est en anomalie ou la fonctionnalité n'est pas activéeConservez les informations de la requête puis réessayez ; si l'échec persiste, contactez le support

Une revue de ressource non terminée n'est pas une erreur : la requête renvoie 200 avec status à Processing ; continuez simplement à interroger le même ID de ressource.

Une sortie vide d'un modèle de raisonnement n'est pas non plus une erreur HTTP : si la réponse est 200, que finish_reason vaut length et que usage.completion_tokens_details.reasoning_tokens a atteint la limite de sortie, augmentez le quota de sortie ou utilisez un modèle non raisonneur.

Erreurs d'autorisation de portrait

MessageCauseTraitement
La session d'autorisation n'existe pas ou l'accès est refuséSession expirée, déjà utilisée ou appartenant à un autre utilisateurL'utilisateur actuel doit recréer un code QR
L'autorisation n'est pas encore terminéeL'utilisateur n'a pas encore terminé la capture sur mobileConservez le code QR et résolvez-le une fois l'opération terminée
Cette ressource de portrait est déjà liée à un autre utilisateurUn même groupe de portrait ne peut pas être réutilisé entre comptesUtilisez le compte lié d'origine, ou demandez à la personne de réautoriser
Le service de ressources est temporairement indisponibleLe canal d'autorisation est actuellement indisponibleNotez l'heure de la requête puis contactez le support de la plateforme ; ne remplacez pas la capture de portrait par un téléversement d'image ordinaire

Limitation de débit et nouvelles tentatives

  • 429 indique des requêtes trop fréquentes ; réessayez après un backoff comme indiqué, sans nouvelles tentatives concurrentes ;
  • pour le statut des ressources, interrogez toutes les 5 à 10 secondes ; pour les tâches vidéo, toutes les 5 à 15 secondes ;
  • ne réessayez que pour 429 et les 5xx passagers ; pour 400 / 401 / 403 / 404, corrigez directement la requête ;
  • avant de réessayer, interrogez d'abord par ID de tâche / ID de ressource pour éviter les créations et facturations en double.

Vérification rapide

  1. Authorization est-il bien Bearer <API Key>, et la clé est-elle toujours activée ;
  2. le domaine de la requête est-il bien l'adresse actuellement indiquée par la console (par défaut https://locopalai.com ; pour les modèles internationaux, il peut s'agir de https://us-api.locopalai.com) ;
  3. model provient-il bien de data[].id retourné par /v1/models ;
  4. le status de la ressource est-il déjà Active ;
  5. l'adresse de l'image / vidéo de référence est-elle une adresse http(s) directement accessible depuis l'internet public, sans dépendre de Cookie ni de Referer ;
  6. la même tâche / ressource a-t-elle déjà été soumise en double.

Éléments à joindre lors du contact avec le support

  • l'heure de la requête et le chemin de l'interface ;
  • le code de statut HTTP et le corps de réponse complet (clé API masquée) ;
  • l'identifiant de requête, l'ID de tâche ou l'ID de ressource renvoyé par la plateforme ;
  • l'ID de modèle et les paramètres concernés ;
  • un exemple de requête minimal reproductible.
Cette page vous a-t-elle aidé ?

Sur cette page