Skip to content

Capzy Solver API. Choose your solver.

Find the CAPTCHA or anti-bot challenge you need to solve. Compare the currently available tasks, open its integration guide, and connect through one Capzy API.

Find a solver

Search by challenge or vendor. Each guide explains where to find its inputs, how to send a task and how to use the returned token, cookie or data.

Loading catalog...

Loading catalog...

Make your first solve

This Python example uses Turnstile. Set CAPZY_API_KEY, CAPZY_WEBSITE_URL and CAPZY_SITE_KEY for the page you are integrating, then create a task and poll for its result.

  1. Copy your API key

    Open your account in the dashboard. Keep the key on your server and read it from an environment variable.

    Open Solver API
  2. Get the task inputs

    Choose a solver from the catalog and follow its input guide. For Turnstile, collect the website URL and its public site key. Some challenges also require a proxy or additional page data.

    Find a Turnstile site key
  3. Create, poll and use the result

    Send createTask, keep its taskId and call getTaskResult until ready. Check errorId before consuming solution. Use the returned value as described in that solver's guide.

first_solve.py
# Install: pip install requests
import os
import time
import requests

api = "https://api.capzy.ai"
key = os.environ["CAPZY_API_KEY"]
response = requests.post(api + "/createTask", json={
    "clientKey": key,
    "task": {
        "type": "AntiTurnstileTaskProxyLess",
        "websiteURL": os.environ["CAPZY_WEBSITE_URL"],
        "websiteKey": os.environ["CAPZY_SITE_KEY"],
    },
}, timeout=30)
response.raise_for_status()
created = response.json()
if created.get("errorId"):
    raise RuntimeError(created)
task_id = created["taskId"]
deadline = time.monotonic() + 120
while time.monotonic() < deadline:
    time.sleep(2)
    response = requests.post(api + "/getTaskResult", json={
        "clientKey": key, "taskId": task_id,
    }, timeout=30)
    response.raise_for_status()
    result = response.json()
    if result.get("errorId"):
        raise RuntimeError(result)
    if result.get("status") == "ready":
        print(result["solution"])
        break
else:
    raise TimeoutError("Task still processing; keep taskId for later polling")
Solution fields depend on the challenge. A token, clearance cookie and sensor payload need different integration steps. Follow the matching guide before putting a result to work. Read the Turnstile integration guide

Loading current prices…

Need higher concurrent limits?

Check your current concurrency and request limits in the Solver API dashboard. For higher capacity, send support your task types and expected volume.

request higher limits

Start solving now

$0.10 free credits on signup. No credit card required.

All CAPTCHA integration guides