# Quick Start

Quick start guide for CaptchaSolv API. Send your first solve request in under a minute.

# Installation

pip install captchasolv
pip install requests
npm install axios

# Sync Solving (Recommended)

The /solve endpoint waits for the result and returns it directly. Set your HTTP timeout to at least 130 seconds.

from captchasolv import CaptchaSolv

solver = CaptchaSolv("YOUR_API_KEY")
result = solver.turnstile(
    website_url="https://example.com",
    website_key="0x4AAAAAAABS7vwvV6VFfMcD"
)
print(result.solution.token)
import requests

response = requests.post("https://v1.captchasolv.com/solve", json={
    "clientKey": "YOUR_API_KEY",
    "task": {
        "type": "TurnstileTaskProxyless",
        "websiteURL": "https://example.com",
        "websiteKey": "0x4AAAAAAABS7vwvV6VFfMcD"
    }
}, timeout=130)

print(response.json()["solution"]["token"])
const response = await axios.post('https://v1.captchasolv.com/solve', {
    clientKey: 'YOUR_API_KEY',
    task: {
        type: 'TurnstileTaskProxyless',
        websiteURL: 'https://example.com',
        websiteKey: '0x4AAAAAAABS7vwvV6VFfMcD'
    }
}, { timeout: 130000 });

console.log(response.data.solution.token);

# Async Solving

Use /createTask + /getTaskResult for non-blocking workflows.

import requests, time

API_KEY = "YOUR_API_KEY"
BASE = "https://v1.captchasolv.com"

# 1. Create task
task_id = requests.post(f"{BASE}/createTask", json={
    "clientKey": API_KEY,
    "task": {
        "type": "TurnstileTaskProxyless",
        "websiteURL": "https://example.com",
        "websiteKey": "0x4AAAAAAABS7vwvV6VFfMcD"
    }
}).json()["taskId"]

# 2. Poll for result
while True:
    result = requests.post(f"{BASE}/getTaskResult", json={
        "clientKey": API_KEY,
        "taskId": task_id
    }).json()
    
    if result["status"] == "ready":
        print(result["solution"]["token"])
        break
    time.sleep(3)
const BASE = 'https://v1.captchasolv.com';

// 1. Create task
const { data: { taskId } } = await axios.post(`${BASE}/createTask`, {
    clientKey: 'YOUR_API_KEY',
    task: {
        type: 'TurnstileTaskProxyless',
        websiteURL: 'https://example.com',
        websiteKey: '0x4AAAAAAABS7vwvV6VFfMcD'
    }
});

// 2. Poll for result
while (true) {
    const { data: result } = await axios.post(`${BASE}/getTaskResult`, {
        clientKey: 'YOUR_API_KEY',
        taskId
    });
    if (result.status === 'ready') {
        console.log(result.solution.token);
        break;
    }
    await new Promise(r => setTimeout(r, 3000));
}

# Using Proxies

Change the task type from *TaskProxyless to *Task and add proxy:

{
    "type": "TurnstileTask",
    "websiteURL": "https://example.com",
    "websiteKey": "0x4AAAAAAABS7vwvV6VFfMcD",
    "proxy": "http://user:pass@host:port"
}

# Next Steps

Python SDK
../python-sdk/
Captcha Types
../../captcha-types/
API Reference
../../api-reference/