Panduan ini punya satu tujuan saja: membawa Anda secepat mungkin dari nol ke pemanggilan API pertama yang sukses dan token terselesaikan. Tanpa teori, tanpa pembahasan panjang — hanya langkah minimum dan kode yang jalan.
Semua tipe CAPTCHA yang didukung CaptchaAI mengikuti pola empat langkah yang sama:
- Submit — kirim data CAPTCHA ke
in.php - Simpan task ID dari response
- Polling — cek
res.phpsetiap 5 detik sampai hasil siap - Pakai token — injeksikan ke halaman atau request target
Langkah 0: ambil API key
- Daftar di captchaai.com
- Buka dashboard
- Salin API key 32 karakter
Akun Anda perlu thread aktif untuk submit task. Jika sedang mencoba, hubungi support untuk thread trial.
Langkah 1: kirim sebuah CAPTCHA
Contoh ini memecahkan Cloudflare Turnstile — salah satu tipe paling umum. Anda butuh dua nilai dari halaman target:
- sitekey — kunci publik widget Turnstile (atribut
data-sitekeyatau parameter script Turnstile, diawali0x) - pageurl — URL lengkap halaman tempat widget dimuat
cURL
curl -X POST "https://ocr.captchaai.com/in.php" \
-d "key=YOUR_API_KEY" \
-d "method=turnstile" \
-d "sitekey=0x4AAAAAAAC3DHQFLr1GavNl" \
-d "pageurl=https://staging.example.com/qa-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://staging.example.com/qa-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://staging.example.com/qa-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://staging.example.com/qa-login",
"json" => 1,
]));
echo $response;
Langkah 2: simpan task ID
Response sukses:
{
"status": 1,
"request": "71823469"
}
Field request adalah ID task Anda — dibutuhkan untuk mengambil hasilnya.
Jika status bernilai 0, ada yang salah. Kode error ada di request:
| Error | Arti | Solusi |
|---|---|---|
ERROR_WRONG_USER_KEY |
Format API key salah | Cek 32 karakter |
ERROR_KEY_DOES_NOT_EXIST |
API key tidak ditemukan | Cocokkan dengan dashboard |
ERROR_ZERO_BALANCE |
Tidak ada thread tersedia | Top up atau tunggu thread bebas |
ERROR_PAGEURL |
Parameter pageurl hilang |
Tambahkan URL lengkap |
ERROR_WRONG_GOOGLEKEY |
sitekey kosong atau salah | Ekstrak ulang sitekey (Turnstile diawali 0x) |
Langkah 3: polling hasil
Tunggu 15 detik, lalu polling setiap 5 detik sampai hasil keluar.
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));
}
Langkah 4: pakai token
Cara injeksi tergantung tipe CAPTCHA:
- Turnstile / reCAPTCHA: tulis ke
cf-turnstile-responseataug-recaptcha-response, atau panggil callback halaman. - OCR gambar: masukkan teks hasil ke input jawaban.
- GeeTest / FunCaptcha: rangkai beberapa field hasil sesuai kebutuhan situs.
Injeksi paling sederhana di browser:
document.querySelector('[name="cf-turnstile-response"]').value = token;
document.querySelector("form").submit();
Kesalahan umum saat memulai
- Spasi ikut tersalin di API key — hapus.
- Protokol hilang di
pageurl— wajibhttps://.... - Polling terlalu cepat — tunggu 15 detik dulu.
- Polling terlalu sering — 5 detik sudah cukup.
- Thread habis — lihat Kode error API dan plan thread Anda.
Langkah selanjutnya
- Cara Memecahkan reCAPTCHA v2 dengan API: Panduan Langkah demi Langkah
- Cara Menyelesaikan Cloudflare Turnstile dengan API
- Cara Mengatasi GeeTest v3 Menggunakan API
- Image Captcha Solving Using Api