Reference

Cartographie des points de terminaison de l'API : CaptchaAI par rapport aux concurrents

Migrer vers CaptchaAI depuis 2Captcha tient en deux changements : le domaine et la clé API. Le reste de votre code — noms de paramètres, format des réponses, codes d'erreur — ne bouge pas. Depuis Anti-Captcha ou CapMonster Cloud, l'effort est un peu plus élevé, car ces API travaillent en JSON là où CaptchaAI et 2Captcha utilisent des paramètres de formulaire. Cette référence met en correspondance, type par type, les endpoints, les paramètres et les réponses de CaptchaAI avec ceux de 2Captcha, Anti-Captcha et CapMonster Cloud — pour que vous sachiez exactement quoi modifier.


URL de base par fournisseur

Fournisseur Endpoint de soumission Endpoint de résultat
CaptchaAI https://ocr.captchaai.com/in.php https://ocr.captchaai.com/res.php
2Captcha https://2captcha.com/in.php https://2captcha.com/res.php
Anti-Captcha https://api.anti-captcha.com/createTask https://api.anti-captcha.com/getTaskResult
CapMonster Cloud https://api.capmonster.cloud/createTask https://api.capmonster.cloud/getTaskResult

CaptchaAI reprend la même structure d'URL que 2Captcha. Depuis 2Captcha, il suffit donc de changer le domaine.


Style d'API : formulaire ou JSON

Fournisseur Style d'API Type de contenu Authentification
CaptchaAI Paramètres de formulaire application/x-www-form-urlencoded Paramètre key
2Captcha Paramètres de formulaire application/x-www-form-urlencoded Paramètre key
Anti-Captcha Corps JSON application/json clientKey dans le corps
CapMonster Cloud Corps JSON application/json clientKey dans le corps

C'est la vraie ligne de partage : CaptchaAI et 2Captcha attendent un formulaire encodé, Anti-Captcha et CapMonster un corps JSON. Toute votre charge de migration se situe là.


reCAPTCHA v2

Côté CaptchaAI / 2Captcha

POST /in.php
  key=API_KEY
  method=userrecaptcha
  googlekey=SITE_KEY
  pageurl=PAGE_URL
  json=1

Côté Anti-Captcha / CapMonster

POST /createTask
{
  "clientKey": "API_KEY",
  "task": {
    "type": "RecaptchaV2TaskProxyless",
    "websiteURL": "PAGE_URL",
    "websiteKey": "SITE_KEY"
  }
}

Correspondance des paramètres

CaptchaAI Anti-Captcha/CapMonster Rôle
key clientKey Clé API
method=userrecaptcha type=RecaptchaV2TaskProxyless Type de tâche
googlekey websiteKey Sitekey reCAPTCHA
pageurl websiteURL URL de la page cible
invisible=1 isInvisible: true reCAPTCHA invisible
enterprise=1 type=RecaptchaV2EnterpriseTaskProxyless Indicateur Enterprise

reCAPTCHA v3

Côté CaptchaAI / 2Captcha

POST /in.php
  key=API_KEY
  method=userrecaptcha
  googlekey=SITE_KEY
  pageurl=PAGE_URL
  version=v3
  action=verify

Côté Anti-Captcha / CapMonster

{
  "clientKey": "API_KEY",
  "task": {
    "type": "RecaptchaV3TaskProxyless",
    "websiteURL": "PAGE_URL",
    "websiteKey": "SITE_KEY",
    "pageAction": "verify"
  }
}

Pour reCAPTCHA v3, le paramètre action de CaptchaAI correspond à pageAction, et l'action déclarée doit correspondre à celle attendue par la page cible.


Cloudflare Turnstile

Turnstile suit le même schéma que reCAPTCHA : method=turnstile côté formulaire, TurnstileTaskProxyless côté JSON. Seul le nom de la clé change (sitekey).

Côté CaptchaAI

POST /in.php
  key=API_KEY
  method=turnstile
  sitekey=SITE_KEY
  pageurl=PAGE_URL

Côté Anti-Captcha

{
  "clientKey": "API_KEY",
  "task": {
    "type": "TurnstileTaskProxyless",
    "websiteURL": "PAGE_URL",
    "websiteKey": "SITE_KEY"
  }
}

hCaptcha : format 2Captcha, non pris en charge par CaptchaAI

CaptchaAI ne résout pas hCaptcha (pas encore pris en charge). Le format ci-dessous est celui de 2Captcha, présenté uniquement à titre de comparaison : si votre code cible aujourd'hui hCaptcha, gardez à l'esprit que CaptchaAI ne traitera pas ce type de défi.

Côté 2Captcha

POST /in.php
  key=API_KEY
  method=hcaptcha
  sitekey=SITE_KEY
  pageurl=PAGE_URL

Côté Anti-Captcha

{
  "clientKey": "API_KEY",
  "task": {
    "type": "HCaptchaTaskProxyless",
    "websiteURL": "PAGE_URL",
    "websiteKey": "SITE_KEY"
  }
}

GeeTest v3

GeeTest v3 attend deux valeurs dynamiques, gt et challenge, à extraire de la page cible avant d'envoyer la tâche. Les deux se transmettent à l'identique quel que soit le fournisseur.

Côté CaptchaAI / 2Captcha

POST /in.php
  key=API_KEY
  method=geetest
  gt=GT_VALUE
  challenge=CHALLENGE_VALUE
  pageurl=PAGE_URL

Côté Anti-Captcha

{
  "clientKey": "API_KEY",
  "task": {
    "type": "GeeTestTaskProxyless",
    "websiteURL": "PAGE_URL",
    "gt": "GT_VALUE",
    "challenge": "CHALLENGE_VALUE"
  }
}

CAPTCHA image (OCR)

Pour un CAPTCHA image, vous transmettez directement l'image encodée en base64 : aucun sitekey ni URL de page n'est requis, seulement le contenu à lire.

Côté CaptchaAI / 2Captcha

POST /in.php
  key=API_KEY
  method=base64
  body=BASE64_IMAGE

Côté Anti-Captcha

{
  "clientKey": "API_KEY",
  "task": {
    "type": "ImageToTextTask",
    "body": "BASE64_IMAGE"
  }
}

Récupérer le résultat (polling)

Côté CaptchaAI / 2Captcha

GET /res.php?key=API_KEY&action=get&id=TASK_ID&json=1

Response: {"status":1,"request":"TOKEN"}
Not ready: {"status":0,"request":"CAPCHA_NOT_READY"}

Côté Anti-Captcha / CapMonster

POST /getTaskResult
{
  "clientKey": "API_KEY",
  "taskId": 123456
}

Response: {"status":"ready","solution":{"gRecaptchaResponse":"TOKEN"}}
Not ready: {"status":"processing"}

Chez CaptchaAI et 2Captcha, l'interrogation du résultat se fait en GET sur res.php ; chez Anti-Captcha et CapMonster, en POST sur getTaskResult. Prévoyez un backoff (interrogation toutes les 5 secondes, par exemple) plutôt qu'une boucle trop agressive.


Vérifier le solde

Fournisseur Endpoint Réponse
CaptchaAI GET /res.php?key=KEY&action=getbalance 12.345
2Captcha GET /res.php?key=KEY&action=getbalance 12.345
Anti-Captcha POST /getBalance {"clientKey":"KEY"} {"balance":12.345}
CapMonster POST /getBalance {"clientKey":"KEY"} {"balance":12.345}

Chez CaptchaAI et 2Captcha, le solde revient en texte brut ; Anti-Captcha et CapMonster l'encapsulent dans un objet JSON. Un seul champ à adapter dans votre client.


Codes d'erreur équivalents

Scénario CaptchaAI / 2Captcha Anti-Captcha
Mauvaise clé API ERROR_WRONG_USER_KEY ERROR_KEY_DOES_NOT_EXIST
Solde nul ERROR_ZERO_BALANCE ERROR_ZERO_BALANCE
Mauvais sitekey ERROR_WRONG_GOOGLEKEY ERROR_RECAPTCHA_INVALID_SITEKEY
Résultat pas prêt CAPCHA_NOT_READY status: "processing"
Limitation de débit ERROR_TOO_MUCH_REQUESTS ERROR_TOO_MUCH_REQUESTS

Scénario : migrer un pipeline de scraping hébergé en Europe

Prenons une équipe qui exploite un pipeline de collecte de données sur une instance OVHcloud à Gravelines, aujourd'hui branchée sur 2Captcha. Le code envoie des requêtes POST /in.php avec method=userrecaptcha, puis interroge res.php toutes les 5 secondes. Pour basculer sur CaptchaAI, l'équipe modifie une seule constante — l'URL de base devient ocr.captchaai.com — et remplace la clé API. Aucun paramètre à renommer, aucun parseur de réponse à réécrire.

Côté budget, un forfait BASIC ($15/mois, 5 threads) suffit à couvrir un pipeline de test ; les threads déterminent le nombre de résolutions simultanées, sans quota facturé à l'unité. Si cette même équipe partait d'Anti-Captcha, elle devrait en plus convertir ses corps JSON en paramètres de formulaire et repasser l'interrogation du résultat de POST à GET.


Check-list de migration

  • [ ] Remplacer l'URL de base par ocr.captchaai.com
  • [ ] Mettre à jour la clé API
  • [ ] Depuis Anti-Captcha/CapMonster : convertir le corps JSON en paramètres de formulaire
  • [ ] Remplacer clientKey par key
  • [ ] Remplacer le type de la tâche par method
  • [ ] Repasser l'interrogation du résultat en GET au lieu de POST (si depuis Anti-Captcha)
  • [ ] Tester une seule tâche avant la bascule complète

FAQ

Faut-il réécrire mon code pour passer de 2Captcha à CaptchaAI ?

Non, dans la plupart des cas. Depuis 2Captcha, remplacez 2captcha.com par ocr.captchaai.com et mettez à jour votre clé : les noms de paramètres et le format des réponses sont identiques. Depuis Anti-Captcha ou CapMonster, prévoyez une conversion des corps JSON vers des paramètres de formulaire.

Comment migrer depuis Anti-Captcha ou CapMonster Cloud ?

Convertissez les corps JSON en paramètres de formulaire, remplacez clientKey par key et le champ type par method, puis repassez l'interrogation du résultat de POST /getTaskResult à GET /res.php. La table de correspondance des paramètres plus haut couvre chaque champ.

CaptchaAI prend-il en charge hCaptcha ?

Non — hCaptcha n'est pas encore pris en charge. Les types couverts incluent reCAPTCHA v2 et v3, Cloudflare Turnstile et Challenge, GeeTest v3, ainsi que les CAPTCHA image (OCR) et en grille d'images.

Le format des réponses est-il le même que chez 2Captcha ?

Oui, côté 2Captcha. res.php renvoie {"status":1,"request":"TOKEN"} chez CaptchaAI comme chez 2Captcha, tandis qu'Anti-Captcha et CapMonster renvoient un objet solution imbriqué. Vous n'adaptez votre parseur que si vous venez de ces deux services.


Passez à CaptchaAI en modifiant un minimum de code

Obtenez votre clé API sur captchaai.com, pointez votre base URL sur ocr.captchaai.com et envoyez votre première tâche.


Guides associés

Les commentaires sont désactivés pour cet article.