CaptchaFlow API
Universal AI-Powered Captcha Solving API โ 19 task types, industry-standard captcha protocol, AI vision engine vision backend, and Playwright browser automation.
Features
Everything you need for automated captcha solving in one API
19 Task Types
The broadest captcha type coverage in a single API โ reCAPTCHA v2/v3, hCaptcha, Turnstile, FunCaptcha, AWS WAF, and image captchas.
Universal Protocol
Drop-in replacement for leading captcha providers. Change the base URL and client key โ no code changes needed.
AI Vision Backend
Powered by an advanced AI vision engine for high-accuracy image recognition and captcha solving.
Browser Automation
Playwright + headless Chromium for interactive reCAPTCHA, hCaptcha, and Turnstile challenge completion.
Async Processing
Submit tasks with createTask, poll with getTaskResult. Built for high-throughput concurrent workloads.
Simple Authentication
Just include clientKey in the JSON body. No headers, no OAuth, no bearer tokens โ one field does it all.
Score Control
Configurable minimum scores for reCAPTCHA v3 (0.7, 0.9, custom). Enterprise v2 and v3 variants supported.
Health Monitoring
Built-in health check endpoint with supported task types list. Monitor service status in real-time.
Multi-Language SDK
Code examples in cURL, Python, JavaScript, PHP, and Go. Postman collection and OpenAPI spec included.
Quick Start
Solve your first captcha in under 30 seconds
โ๏ธ Configuration
| Base URL | https://captcha.dataleads.pro/v1 |
| Client Key | captcha_solver_key_2026 |
| Auth Method | clientKey in JSON body |
| Protocol | Industry-standard captcha protocol |
Code Examples
# 1. Create a task
curl -X POST https://captcha.dataleads.pro/v1/createTask \
-H "Content-Type: application/json" \
-d '{
"clientKey": "captcha_solver_key_2026",
"task": {
"type": "RecaptchaV2TaskProxyless",
"websiteURL": "https://example.com",
"websiteKey": "6Le-wvkSVVABBPB0JGLdnLBwZdMwQXa5JbjJWkA"
}
}'
# 2. Poll for the result
curl -X POST https://captcha.dataleads.pro/v1/getTaskResult \
-H "Content-Type: application/json" \
-d '{
"clientKey": "captcha_solver_key_2026",
"taskId": "YOUR_TASK_ID"
}'import requests, time
BASE_URL = "https://captcha.dataleads.pro/v1"
CLIENT_KEY = "captcha_solver_key_2026"
# Create task
resp = requests.post(f"{BASE_URL}/createTask", json={
"clientKey": CLIENT_KEY,
"task": {
"type": "RecaptchaV2TaskProxyless",
"websiteURL": "https://example.com",
"websiteKey": "6Le-wvkSVVABBPB0JGLdnLBwZdMwQXa5JbjJWkA"
}
})
task_id = resp.json()["taskId"]
# Poll for result
while True:
result = requests.post(f"{BASE_URL}/getTaskResult", json={
"clientKey": CLIENT_KEY,
"taskId": task_id
}).json()
if result["status"] in ("ready", "failed"):
print(result)
break
time.sleep(5)const BASE_URL = 'https://captcha.dataleads.pro/v1';
const CLIENT_KEY = 'captcha_solver_key_2026';
// Create task
const resp = await fetch(`${BASE_URL}/createTask`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
clientKey: CLIENT_KEY,
task: {
type: 'RecaptchaV2TaskProxyless',
websiteURL: 'https://example.com',
websiteKey: '6Le-wvkSVVABBPB0JGLdnLBwZdMwQXa5JbjJWkA'
}
})
});
const { taskId } = await resp.json();
// Poll for result
while (true) {
const result = await (await fetch(`${BASE_URL}/getTaskResult`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ clientKey: CLIENT_KEY, taskId })
})).json();
if (result.status === 'ready' || result.status === 'failed') {
console.log(result);
break;
}
await new Promise(r => setTimeout(r, 5000));
}$BASE_URL = 'https://captcha.dataleads.pro/v1';
$CLIENT_KEY = 'captcha_solver_key_2026';
// Create task
$ch = curl_init("$BASE_URL/createTask");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode([
'clientKey' => $CLIENT_KEY,
'task' => [
'type' => 'RecaptchaV2TaskProxyless',
'websiteURL' => 'https://example.com',
'websiteKey' => '6Le-wvkSVVABBPB0JGLdnLBwZdMwQXa5JbjJWkA'
]
]),
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_RETURNTRANSFER => true,
]);
$resp = json_decode(curl_exec($ch), true);
curl_close($ch);
$taskId = $resp['taskId'];
// Poll for result
while (true) {
$ch = curl_init("$BASE_URL/getTaskResult");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode(['clientKey' => $CLIENT_KEY, 'taskId' => $taskId]),
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_RETURNTRANSFER => true,
]);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);
if (in_array($result['status'], ['ready', 'failed'])) {
print_r($result);
break;
}
sleep(5);
}package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
"time"
)
func main() {
baseURL := "https://captcha.dataleads.pro/v1"
clientKey := "captcha_solver_key_2026"
// Create task
body, _ := json.Marshal(map[string]interface{}{
"clientKey": clientKey,
"task": map[string]interface{}{
"type": "RecaptchaV2TaskProxyless",
"websiteURL": "https://example.com",
"websiteKey": "6Le-wvkSVVABBPB0JGLdnLBwZdMwQXa5JbjJWkA",
},
})
resp, _ := http.Post(baseURL+"/createTask", "application/json", bytes.NewBuffer(body))
var result map[string]interface{}
json.NewDecoder(resp.Body).Decode(&result)
resp.Body.Close()
taskID := result["taskId"].(string)
// Poll for result
for {
time.Sleep(5 * time.Second)
body, _ := json.Marshal(map[string]interface{}{
"clientKey": clientKey,
"taskId": taskID,
})
resp, _ := http.Post(baseURL+"/getTaskResult", "application/json", bytes.NewBuffer(body))
json.NewDecoder(resp.Body).Decode(&result)
resp.Body.Close()
if result["status"] == "ready" || result["status"] == "failed" {
fmt.Printf("%+v\n", result)
break
}
}
}Getting Access
Two ways to start solving captchas with CaptchaFlow
Option 1: Via API Marketplace
Subscribe on the API marketplace of your choice and get your own key instantly โ billing, quotas and invoicing are handled by the marketplace.
- Subscribe to a plan on the marketplace
- Copy your marketplace-assigned key
- Send requests through the marketplace gateway โ no extra headers needed on your side
Recommended for most users โ fastest setup, cancel anytime.
Option 2: Direct Integration
Enterprise or high-volume customers can connect directly with a dedicated clientKey.
- Contact us for a dedicated key and custom volume pricing
- Pass
clientKeyin each request body - Same endpoints, same protocol โ no gateway in the middle
Best for: SLAs, custom limits, on-prem routing.
API Endpoints
Five endpoints โ three for captcha solving, two for service info
Request Body
{
"clientKey": "captcha_solver_key_2026",
"task": {
"type": "RecaptchaV2TaskProxyless",
"websiteURL": "https://example.com",
"websiteKey": "6Le-wvkSVVABBPB0JGLdnLBwZdMwQXa5JbjJWkA"
}
}Response
{
"errorId": 0,
"taskId": "550e8400-e29b-41d4-a716-446655440000"
}Request Body
{
"clientKey": "captcha_solver_key_2026",
"taskId": "550e8400-e29b-41d4-a716-446655440000"
}Processing Response
{ "errorId": 0, "status": "processing" }Ready Response (reCAPTCHA/hCaptcha)
{
"errorId": 0,
"status": "ready",
"solution": { "gRecaptchaResponse": "03AGdBq25..." }
}Ready Response (Turnstile)
{
"errorId": 0,
"status": "ready",
"solution": { "token": "0.eYEMe..." }
}Failed Response
{
"errorId": 1,
"status": "failed",
"errorCode": "ERROR_CAPTCHA_UNSOLVABLE",
"errorDescription": "Unable to solve the captcha"
}Request Body
{ "clientKey": "captcha_solver_key_2026" }Response
{ "errorId": 0, "balance": 99999.0 }Response
{
"status": "healthy",
"supported_types": [
"ImageToTextTask", "ImageToTextTaskMuggle", "ImageToTextTaskM1",
"RecaptchaV2TaskProxyless", "RecaptchaV2EnterpriseTaskProxyless", "NoCaptchaTaskProxyless",
"RecaptchaV3TaskProxyless", "RecaptchaV3TaskProxylessM1", "RecaptchaV3TaskProxylessM1S7",
"RecaptchaV3TaskProxylessM1S9", "RecaptchaV3EnterpriseTask", "RecaptchaV3EnterpriseTaskM1",
"HCaptchaTaskProxyless", "TurnstileTaskProxyless", "TurnstileTaskProxylessM1",
"HCaptchaClassification", "ReCaptchaV2Classification", "FunCaptchaClassification", "AwsClassification"
]
}Response
{
"name": "CaptchaFlow API",
"version": "1.0.0",
"description": "Universal AI-Powered Captcha Solving API",
"protocol": "Universal captcha protocol",
"task_types": 19
}All 19 Task Types
Across 7 categories โ browser-based, image text, and classification
RecaptchaV2TaskProxyless
reCAPTCHA v2Solve reCAPTCHA v2 using browser automation.
gRecaptchaResponseRecaptchaV2EnterpriseTaskProxyless
reCAPTCHA v2 EnterpriseSolve reCAPTCHA v2 Enterprise variant.
gRecaptchaResponseNoCaptchaTaskProxyless
reCAPTCHA v2 (legacy)Legacy NoCaptcha compatibility for industry-standard captcha protocol.
gRecaptchaResponseRecaptchaV3TaskProxyless
reCAPTCHA v3Solve reCAPTCHA v3 with configurable pageAction and minScore.
gRecaptchaResponseRecaptchaV3TaskProxylessM1
reCAPTCHA v3 (M1)reCAPTCHA v3 using M1 model variant.
gRecaptchaResponseRecaptchaV3TaskProxylessM1S7
reCAPTCHA v3 (M1, S7)reCAPTCHA v3 M1 with minimum score preset to 0.7.
gRecaptchaResponseRecaptchaV3TaskProxylessM1S9
reCAPTCHA v3 (M1, S9)reCAPTCHA v3 M1 with minimum score preset to 0.9.
gRecaptchaResponseRecaptchaV3EnterpriseTask
reCAPTCHA v3 EnterpriseSolve reCAPTCHA v3 Enterprise variant.
gRecaptchaResponseRecaptchaV3EnterpriseTaskM1
reCAPTCHA v3 Enterprise (M1)reCAPTCHA v3 Enterprise using M1 model.
gRecaptchaResponseHCaptchaTaskProxyless
hCaptchaSolve hCaptcha using browser automation.
gRecaptchaResponseTurnstileTaskProxyless
TurnstileSolve Cloudflare Turnstile challenge.
tokenTurnstileTaskProxylessM1
Turnstile (M1)Cloudflare Turnstile using M1 model.
tokenImageToTextTask
Image TextStandard image text captcha. Send base64-encoded image in body field.
text (JSON string with captcha_type, result)ImageToTextTaskMuggle
Image TextMuggle-style image captcha variant for specialized formats.
textImageToTextTaskM1
Image TextImage captcha using M1 model for enhanced recognition.
textHCaptchaClassification
ClassificationClassify hCaptcha images. Send array of base64 images in queries field with question.
objects (list of indices) or answerReCaptchaV2Classification
ClassificationClassify reCAPTCHA v2 grid images. Send base64 image with question.
objects or answerFunCaptchaClassification
ClassificationClassify FunCaptcha images for rotation/selection tasks.
objects or answerAwsClassification
ClassificationClassify AWS WAF captcha images.
objects or answerError Codes
Standard error codes returned by the API
| Error ID | Error Code | Description |
|---|---|---|
0 | โ | No error (success) |
1 | ERROR_KEY_DOES_NOT_EXIST | Invalid clientKey |
1 | ERROR_WRONG_GOOGLEKEY | Invalid websiteKey for reCAPTCHA tasks |
1 | ERROR_BAD_TOKEN | Invalid or expired taskId |
1 | ERROR_CAPTCHA_UNSOLVABLE | Captcha could not be solved |
1 | ERROR_NO_SUCH_METHOD | Unsupported task type |
1 | ERROR_TASK_NOT_FOUND | taskId does not exist |
Interactive Try-It
Test the API directly from your browser