Ce guide poursuit un seul objectif : vous emmener le plus vite possible de zéro à un premier appel API réussi et un token résolu. Pas de théorie, pas de détours — uniquement les étapes minimales et du code qui fonctionne.
Tous les types de CAPTCHA pris en charge par CaptchaAI suivent le même modèle en quatre étapes :
- Envoyer les données du CAPTCHA à
in.php - Sauvegarder l'ID de la tâche depuis la réponse
- Interroger
res.phptoutes les 5 secondes jusqu'à obtention du résultat - Utiliser le token — l'injecter dans la page ou la requête cible
Étape 0 : récupérez votre clé API
- Inscrivez-vous sur captchaai.com
- Ouvrez votre tableau de bord
- Copiez la clé API de 32 caractères
Votre compte doit disposer de threads actifs pour soumettre des tâches. Si vous évaluez le service, contactez le support pour des threads d'essai.
Étape 1 : envoyez un CAPTCHA
L'exemple résout un Cloudflare Turnstile, l'un des types les plus répandus. Vous avez besoin de deux valeurs depuis la page cible :
- sitekey — la clé publique du widget Turnstile (attribut
data-sitekeyou paramètres du script Turnstile, commence par0x) - pageurl — l'URL complète où le widget est chargé
cURL
curl -X POST "https://ocr.captchaai.com/in.php" \
-d "key=YOUR_API_KEY" \
-d "method=turnstile" \
-d "sitekey=0x4AAAAAAAC3DHQFLr1GavNl" \
-d "pageurl=https://example.com/login" \
-d "json=1"
Python
import requests
response = requests.post("https://ocr.captchaai.com/in.php", data={
"key": "YOUR_API_KEY",
"method": "turnstile",
"sitekey": "0x4AAAAAAAC3DHQFLr1GavNl",
"pageurl": "https://example.com/login",
"json": 1,
})
print(response.json())
Node.js
const response = await fetch("https://ocr.captchaai.com/in.php", {
method: "POST",
headers: { "Content-Type": "application/x-www-form-urlencoded" },
body: new URLSearchParams({
key: "YOUR_API_KEY",
method: "turnstile",
sitekey: "0x4AAAAAAAC3DHQFLr1GavNl",
pageurl: "https://example.com/login",
json: "1",
}),
});
console.log(await response.json());
PHP
<?php
$response = file_get_contents("https://ocr.captchaai.com/in.php?" . http_build_query([
"key" => "YOUR_API_KEY",
"method" => "turnstile",
"sitekey" => "0x4AAAAAAAC3DHQFLr1GavNl",
"pageurl" => "https://example.com/login",
"json" => 1,
]));
echo $response;
Étape 2 : sauvegardez l'ID de la tâche
Réponse en succès :
{
"status": 1,
"request": "71823469"
}
Le champ request est l'ID de votre tâche — vous en aurez besoin pour récupérer le résultat.
Si status vaut 0, quelque chose n'a pas fonctionné. Le code d'erreur est dans request :
| Erreur | Signification | Solution |
|---|---|---|
ERROR_WRONG_USER_KEY |
Format de clé API invalide | Vérifiez les 32 caractères |
ERROR_KEY_DOES_NOT_EXIST |
Clé introuvable | Comparez avec votre tableau de bord |
ERROR_ZERO_BALANCE |
Aucun thread disponible | Rechargez ou attendez la libération |
ERROR_PAGEURL |
Paramètre pageurl manquant |
Ajoutez l'URL complète |
ERROR_WRONG_GOOGLEKEY |
sitekey vide ou mal formé | Réextraivez le sitekey (Turnstile commence par 0x) |
Étape 3 : interrogez le résultat
Patientez 15 secondes, puis interrogez toutes les 5 secondes jusqu'à réponse.
Python
import time
time.sleep(15)
while True:
result = requests.get("https://ocr.captchaai.com/res.php", params={
"key": "YOUR_API_KEY",
"action": "get",
"id": "71823469",
"json": 1,
}).json()
if result.get("request") == "CAPCHA_NOT_READY":
time.sleep(5)
continue
if result.get("status") == 1:
token = result["request"]
print(f"Solved! Token: {token[:60]}...")
break
raise RuntimeError(result)
Node.js
await new Promise((r) => setTimeout(r, 15000));
while (true) {
const r = await fetch(
`https://ocr.captchaai.com/res.php?key=YOUR_API_KEY&action=get&id=71823469&json=1`,
);
const data = await r.json();
if (data.request === "CAPCHA_NOT_READY") {
await new Promise((r) => setTimeout(r, 5000));
continue;
}
if (data.status === 1) {
console.log("Solved:", data.request.slice(0, 60));
break;
}
throw new Error(JSON.stringify(data));
}
Étape 4 : utilisez le token
Le mode d'injection dépend du type de CAPTCHA :
- Turnstile / reCAPTCHA : écrire dans
cf-turnstile-responseoug-recaptcha-response, ou appeler le callback de la page. - OCR d'image : placer le texte reconnu dans l'input réponse.
- GeeTest / FunCaptcha : assembler les différents champs renvoyés selon les attentes du site.
Injection minimale dans le navigateur :
document.querySelector('[name="cf-turnstile-response"]').value = token;
document.querySelector("form").submit();
Erreurs fréquentes au démarrage
- Espace dans la clé API copiée — supprimez-le.
- Protocole manquant dans
pageurl— il fauthttps://.... - Premier sondage trop tôt — attendez 15 secondes.
- Sondage trop fréquent — toutes les 5 s suffit.
- Threads épuisés — voir Codes d'erreur de l'API et votre plan.
Étapes suivantes
Continuez selon le type de CAPTCHA que vous rencontrez le plus :
- Résoudre reCAPTCHA v2 via l'API
- Résoudre Cloudflare Turnstile via l'API
- Résoudre GeeTest v3 via l'API
- Résoudre les CAPTCHAs image via l'API
Récupérez votre clé API sur captchaai.com/api.php et bouclez votre première résolution réussie en moins de 5 minutes.