# API Endpoints

Detailed reference for all API endpoints.


# Health Check

Check if the API is online and operational.

Request
Response
GET /health
{
  "status": "ok",
  "service": "CaptchaSolv",
  "time": 1706100000
}

# Get Supported Types

Get list of all supported captcha task types.

Request
Response
GET /supportedTypes
{
  "errorId": 0,
  "types": [
    "RecaptchaV2TaskProxyless",
    "RecaptchaV2Task",
    "RecaptchaV3TaskProxyless",
    "TurnstileTaskProxyless",
    "GeeTestV4TaskProxyless",
    "AkamaiTaskProxyless",
    "KasadaTaskProxyless",
    "DataDomeTaskProxyless",
    "AwsWafTaskProxyless",
    "HumanSecurityTaskProxyless"
  ]
}

# Create Task (Async)

Create a captcha solving task. Returns immediately with a task ID for polling.

Request
Response
POST /createTask
Content-Type: application/json

{
  "clientKey": "YOUR_API_KEY",
  "task": {
    "type": "RecaptchaV2TaskProxyless",
    "websiteURL": "https://example.com",
    "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq1bi0DJwx_mJ-"
  }
}
{
  "errorId": 0,
  "taskId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}

# Parameters

Parameter Type Required Description
clientKey string Your API key
task object Task configuration object
task.type string Captcha type
task.websiteURL string Target website URL
task.websiteKey string ⚠️ Site key (required for most types)
task.proxy string Proxy for *Task types (non-Proxyless)

# Get Task Result

Poll for the result of a created task.

Request
Response (Processing)
Response (Ready)
POST /getTaskResult
Content-Type: application/json

{
  "clientKey": "YOUR_API_KEY",
  "taskId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
{
  "errorId": 0,
  "status": "processing"
}
{
  "errorId": 0,
  "status": "ready",
  "solution": {
    "token": "03AGdBq24PBCbwiDRaS_MJ...",
    "userAgent": "Mozilla/5.0 ..."
  },
  "cost": "0.00100",
  "createTime": 1706100000,
  "endTime": 1706100015,
  "solveCount": 1
}

# Status Values

Status Description
processing Task is being solved, poll again in 3-5 seconds
ready Task completed, solution available

# Solve (Sync)

Synchronous solving - waits for result (up to 120 seconds timeout).

Request
Response
POST /solve
Content-Type: application/json

{
  "clientKey": "YOUR_API_KEY",
  "task": {
    "type": "RecaptchaV2TaskProxyless",
    "websiteURL": "https://example.com",
    "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq1bi0DJwx_mJ-"
  }
}
{
  "errorId": 0,
  "solution": {
    "token": "03AGdBq24PBCbwiDRaS_MJ...",
    "userAgent": "Mozilla/5.0 ..."
  },
  "cost": "0.00100",
  "createTime": 1706100000,
  "endTime": 1706100015,
  "solveCount": 1
}

# Timeout

The endpoint has a 120-second timeout. Set your HTTP client timeout to at least 130 seconds.


# Get Balance

Check your account balance.

Request
Response
POST /getBalance
Content-Type: application/json

{
  "clientKey": "YOUR_API_KEY"
}
{
  "errorId": 0,
  "balance": 10.50
}

# Example: Complete Async Flow

import requests
import time

API_KEY = "your_api_key"
BASE_URL = "https://v1.captchasolv.com"

# 1. Create task
create_response = requests.post(f"{BASE_URL}/createTask", json={
    "clientKey": API_KEY,
    "task": {
        "type": "RecaptchaV2TaskProxyless",
        "websiteURL": "https://example.com",
        "websiteKey": "site-key"
    }
}).json()

task_id = create_response["taskId"]
print(f"Task created: {task_id}")

# 2. Poll for result
while True:
    result = requests.post(f"{BASE_URL}/getTaskResult", json={
        "clientKey": API_KEY,
        "taskId": task_id
    }).json()
    
    if result["status"] == "ready":
        print(f"Solved! Token: {result['solution']['token']}")
        break
    elif result["errorId"] != 0:
        print(f"Error: {result['errorDescription']}")
        break
    
    print("Still processing...")
    time.sleep(3)
const axios = require('axios');

const API_KEY = 'your_api_key';
const BASE_URL = 'https://v1.captchasolv.com';

// 1. Create task
const createResponse = await axios.post(`${BASE_URL}/createTask`, {
    clientKey: API_KEY,
    task: {
        type: 'RecaptchaV2TaskProxyless',
        websiteURL: 'https://example.com',
        websiteKey: 'site-key'
    }
});

const taskId = createResponse.data.taskId;
console.log('Task created:', taskId);

// 2. Poll for result
while (true) {
    const result = await axios.post(`${BASE_URL}/getTaskResult`, {
        clientKey: API_KEY,
        taskId: taskId
    });
    
    if (result.data.status === 'ready') {
        console.log('Solved! Token:', result.data.solution.token);
        break;
    } else if (result.data.errorId !== 0) {
        console.log('Error:', result.data.errorDescription);
        break;
    }
    
    console.log('Still processing...');
    await new Promise(r => setTimeout(r, 3000));
}