Cloudflare Turnstile Solver API
Integrate Cloudflare Turnstile solving into your automation through one stable REST endpoint. Send the target details and receive a ready-to-use solution without maintaining custom bypass logic.

Cloudflare Turnstile, without custom bypass code.
A predictable three-step flow that stays the same even when Cloudflare Turnstile changes its protection.
For a standalone widget, send the site key and page URL. For a Cloudflare Challenge page, also send the action, cData, and chlPageData values captured from the page's turnstile.render() call.
Submit the target
Send the page URL and the challenge-specific fields in a single API request.
We handle the challenge
CaptchaSolv routes the task to a specialized solver and tracks it until completion.
Use the solution
Receive the token, headers, cookies, or sensor payload required by your next request.
The same endpoint and response envelope across every supported solver.
{
"api_key": "YOUR_API_KEY",
"type": "Turnstile",
"site_url": "https://example.com/login",
"data": {
"site_key": "0x4AAAAAAAd3XXXXXXXXXX"}
}{
"errorId": 0,
"status": "ready",
"solvtime": 3.1,
"data": {
"useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)...",
"language": "en-US,en;q=0.9",
"solution": {
"token": "0.zrSnRHO7h0HwSjSCU8oyzbjEtD8p..."}
}
}Fields you can send inside the data object of a solve request for this captcha type.
site_keyRequiredTurnstile sitekey - found inside the data-sitekey attribute of the turnstile div, or the sitekey argument of turnstile.render().
actionOptionalRequired only for Cloudflare Challenge pages - the action value passed to turnstile.render().
cdataOptionalRequired only for Cloudflare Challenge pages - the cData value passed to turnstile.render().
pagedataOptionalRequired only for Cloudflare Challenge pages - the chlPageData value passed to turnstile.render().
Fields returned in data.solution once the task is solved.
solution.tokenRequiredSubmit as the value of the cf-turnstile-response (or g-recaptcha-response, for reCAPTCHA-compatibility mode) hidden input, or pass it to the page's callback function.
data.useragentRequiredThe user-agent used while solving - reuse it on your request, the token is bound to this fingerprint.
Common questions about integrating this solver correctly.
Yes - it works on any site running Cloudflare Turnstile, whether it's embedded as a standalone widget on a normal page or shown on a full Cloudflare Challenge interstitial, not just a fixed list of targets.
Stuck trying to bypass Cloudflare Turnstile?
Join our Discord and our team will help you get Cloudflare Turnstile solving working in your setup - free advice on handling it programmatically, even as the challenge changes over time.
Switch to a different captcha type we support.