code est stable et fiable pour brancher. message est destiné aux humains et peut changer. details est présent
quand nous pouvons nommer le champ fautif.
Codes
400 concerne une requête que nous ne pouvons ni analyser ni comprendre. 422 est réservé à une requête
parfaitement formée que nous ne pouvons pas servir pour la région demandée. Brancher sur error.code est plus
durable que sur le statut.Refus liés à la région
Les deux codes de région sont décidés avant la mise en file : vous le savez immédiatement, au lieu de voir une tâche épuiser toutes ses tentatives et échouer avec une erreur qui ne montre que le symptôme.REGION_UNSUPPORTED est permanent : ce moteur ne peut pas servir le pays demandé.
REGION_UNAVAILABLE est transitoire : la route existe mais rien ne peut la servir pour l’instant. Interrogez
GET /capacity pour voir ce que chaque région peut servir actuellement.
Les échecs de lot sont par élément
Un lot bien formé renvoie toujours200, même si toutes ses tâches échouent. Le statut HTTP décrit la requête ;
results[].success décrit chaque tâche.
Un élément de lot peut échouer avec
REGION_UNAVAILABLE ou ENQUEUE_ERROR, qui ne figurent ni l’un ni l’autre dans
l’enum des erreurs par élément du contrat de tâches asynchrones que cette API implémente. Ce sont des ajouts, pas des
remplacements : VALIDATION_ERROR et RESOURCE_ALREADY_EXISTS sont inchangés.Échecs au niveau de la tâche
Une tâche qui échoue après sa mise en file ne produit aucune erreur HTTP. Vous l’apprenez par le statut final :error de premier niveau est une chaîne, pas l’objet
{code, message, timestamp} des erreurs de requête. Il commence par un code suivi d’une phrase fixe propre à ce code ;
basez donc votre logique sur le code : ENGINE_TIMEOUT, ENGINE_NO_RESULT, ENGINE_FAILED, ou NO_IP_AVAILABLE et
NO_ACCOUNT_AVAILABLE quand aucune capacité ne s’est libérée à temps (réessayer plus tard fonctionne généralement).
BAD_PAYLOAD et PAGE_UNAVAILABLE (une page Naver impossible à lire de façon anonyme) gardent un message qui indique
quoi changer. La même tâche livre un webhook avec task.status === "FAILED".