Skip to content
CaptchAPI
Référence

Codes d'erreur

Toutes les erreurs renvoyées par l'API, leur signification et la conduite à tenir.

Le HTTP est toujours 200, y compris pour les erreurs. C'est le contrat anti-captcha et nous le respectons : un client écrit pour CapSolver n'a pas besoin de réécrire sa gestion d'erreurs. Testez errorId : 0 signifie succès, 1 signifie lire errorCode.

Forme d'une réponse en erreur
{
  "errorId": 1,
  "errorCode": "ERROR_KEY_DOES_NOT_EXIST",
  "errorDescription": "No API key matches that clientKey."
}
CodeSignificationQue faire
ERROR_KEY_DOES_NOT_EXISTAucune clé API ne correspond au clientKey envoyé.Vérifiez une erreur de copier-coller ou une variable d'environnement périmée. Les clés ne sont affichées en entier qu'une seule fois, à la création.
ERROR_ZERO_BALANCEVotre portefeuille ne peut pas couvrir le prix de la tâche.Rechargez. Les tâches déjà en cours ne sont pas affectées et restent remboursées si elles échouent.
ERROR_TASK_TYPE_NOT_SUPPORTEDLa valeur de task.type ne fait pas partie de celles que nous traitons.Comparez-la à la référence des types de tâches. La valeur est insensible à la casse mais l'orthographe doit être exacte.
ERROR_NO_SUCH_TASKCe taskId n'existe pas, ou n'appartient pas à votre clé.Les résultats sont conservés 5 minutes après la fin de la tâche. Interrogez plus tôt, et ne partagez jamais un taskId entre deux comptes.
ERROR_RATE_LIMITTrop de requêtes dans la fenêtre courante.Ralentissez et réessayez. La tâche elle-même n'est pas affectée : gardez le même taskId et continuez à interroger.
ERROR_KEY_DISABLEDLa clé existe mais a été désactivée.Réactivez-la depuis le tableau de bord, ou générez-en une nouvelle. Une clé est désactivée par vous, ou par nous après une enquête sur l'usage acceptable.
ERROR_UPSTREAMLe solveur a refusé cette tâche ou a échoué dessus.Vous avez été remboursé. Réessayez une fois ; si cela se répète sur la même cible, envoyez-nous la sitekey et l'URL de la page.
ERROR_TIMEOUTLa tâche ne s'est pas résolue avant son échéance.Vous avez été remboursé. Les cibles durcies demandent parfois un proxy ou un User-Agent exact — essayez la variante avec proxy du type de tâche.

Les traiter

Deux codes seulement méritent une reprise automatique. ERROR_RATE_LIMIT signifie ralentir et conserver la même tâche. ERROR_UPSTREAM et ERROR_TIMEOUT signifient que la tâche est morte et remboursée — réessayez en en créant une nouvelle, une fois au maximum, sinon vous dépenserez votre budget sur une cible qui ne se résoudra pas. Tout le reste demande un humain.

const result = await post('/getTaskResult', { taskId });

if (result.errorId !== 0) {
  switch (result.errorCode) {
    case 'ERROR_RATE_LIMIT':
      // Back off and retry the same taskId — the task is still alive.
      await sleep(2000);
      continue;
    case 'ERROR_ZERO_BALANCE':
    case 'ERROR_KEY_DISABLED':
      // Nothing to retry. Alert an operator.
      throw new Error(result.errorDescription);
    default:
      // Refunded already; create a fresh task if it is worth retrying.
      throw new Error(`${result.errorCode}: ${result.errorDescription}`);
  }
}

Une réponse en erreur ne vous laisse jamais débité. Si vous constatez un débit sans crédit correspondant pour une tâche en échec, c'est un bug : envoyez-nous l'identifiant de tâche, nous corrigeons et remboursons.