Skip to main content
Les échecs partagent une même enveloppe :
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é.
Consultez le tableau des combinaisons non desservies. 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 toujours 200, même si toutes ses tâches échouent. Le statut HTTP décrit la requête ; results[].success décrit chaque tâche.
Seule une requête mal formée dans son ensemble (pas du JSON, pas un tableau, vide, plus de 500 éléments, plus de 8 Mo, ou non autorisée) produit un 4xx pour le lot lui-même.
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 :
Notez la différence de forme : ce 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".