Solve Cloudflare Turnstile, hCaptcha, reCAPTCHA v2, reCAPTCHA v3 & image OCR — authenticated with your API key.
x-api-key header.token, which you submit on the target site.curl -X POST http://3captcha.world/solve/turnstile \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{"sitekey":"0x4AAAAAAActoBfh_En8yr3T","siteurl":"https://example.com/"}'
# Response
{"status":"success","token":"0.w0e4...","elapsed":5.2}
# Every solve request requires your API key in the header:
curl -X POST http://3captcha.world/solve/turnstile \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{"sitekey":"0x4AAAAAAActoBfh_En8yr3T","siteurl":"https://example.com/"}'# Solve an invisible or managed Turnstile challenge.
curl -X POST http://3captcha.world/solve/turnstile \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{"sitekey":"0x4AAAAAAActoBfh_En8yr3T","siteurl":"https://example.com/"}'
# 200 OK
{"status":"success","token":"0.w0e4...","elapsed":5.2}curl -X POST http://3captcha.world/solve/recaptcha-v2 \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{"sitekey":"6LfyCr4rAAAAAEEBPic8UihJxtI4IeOMuPXRLebm","siteurl":"https://example.com/"}'
# 200 OK
{"status":"success","token":"03AFcWeA...","elapsed":19.4}# v3 returns a token whose SCORE is decided by Google — no image challenge.
# Submit the token to your own verification endpoint to read the score.
curl -X POST http://3captcha.world/solve/recaptcha-v3 \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{"sitekey":"6Lcyqq8oAAAAAJE7eVJ3aZp_hnJcI6LgGdYD8lge","siteurl":"https://example.com/","action":"submit"}'
# 200 OK
{"status":"success","token":"03AGdBq26...","elapsed":33.2}# Recognize the text in a captcha image. Send the image as base64.
curl -X POST http://3captcha.world/solve/ocr \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{"base64":"/9j/4AAQSkZJRg..."}'
# 200 OK — token is the recognized text (letters/numbers only)
{"status":"success","token":"42ST","elapsed":22.7}curl -X POST http://3captcha.world/solve/hcaptcha \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{"sitekey":"463b917e-e264-403f-ad34-34af0ee10294","siteurl":"https://example.com/"}'# Python
import requests
r = requests.post("http://3captcha.world/solve/turnstile",
headers={"x-api-key": "YOUR_API_KEY"},
json={"sitekey":"0x4AAAAAAActoBfh_En8yr3T","siteurl":"https://example.com/"})
print(r.json())
# PHP
$ch = curl_init("http://3captcha.world/solve/turnstile");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ["Content-Type: application/json", "x-api-key: YOUR_API_KEY"],
CURLOPT_POSTFIELDS => '{"sitekey":"0x4AAAAAAActoBfh_En8yr3T","siteurl":"https://example.com/"}',
]);
echo curl_exec($ch);
# Node.js
const res = await fetch("http://3captcha.world/solve/turnstile", {
method: "POST",
headers: { "Content-Type": "application/json", "x-api-key": "YOUR_API_KEY" },
body: JSON.stringify({ sitekey: "0x4AAAAAAActoBfh_En8yr3T", siteurl: "https://example.com/" }),
});
console.log(await res.json());# Check your balance
curl -X POST http://3captcha.world/api/v1/getBalance \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY"
# {"status":"success","balance":12.3456}
# Get your account info
curl -X POST http://3captcha.world/api/v1/getAccountInfo \
-H "Content-Type: application/json" \
-d '{"api_key":"YOUR_API_KEY"}'# Create a crypto deposit invoice, then open invoiceUrl in the browser.
# The user pays in USDT (any network); balance is credited automatically.
curl -X POST http://3captcha.world/api/user/deposit \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-d '{"amount":10}'
# 201 Created
{"status":"success","orderId":"rcp...","invoiceUrl":"https://ccpayment.com/sl/..."}
# Balance is credited automatically once the payment is confirmed.
# Use POST /api/user/deposit/reconcile to re-check a pending deposit.# HTTP status codes 400 Bad request — missing or invalid parameters 401 Invalid or missing API key 402 Insufficient balance — please recharge 403 Banned API key / account 413 Image too large 429 Too many attempts — rate limited 500 Solve failed (captcha could not be solved) 502 Payment / OCR provider error