Captcha bypass tutorials

Was this helpful?

How to fix captcha solving errors

Gregory Fisher

Technical engineer

When working with our service API, one of the most common problems is captcha validation failure: the task remains stuck in processing, returns invalid token, or the target website rejects the solution without a clear reason.

In most cases, the issue is not related to our service itself. Problems usually come from integration mistakes such as incorrectly extracted parameters, session mismatches, wrong task types, or timing issues when submitting the token.

This article covers the most common reasons why captcha solutions fail, along with practical ways to diagnose and fix them when using our API.

Incorrect websiteKey

One of the most common causes of errors is an invalid websiteKey. If the websiteKey is incorrect, our service will return ERROR_RECAPTCHA_INVALID_SITEKEY or fail to solve the captcha.

Signs of the issue:

  • the API response contains errorId: 31 or ERROR_RECAPTCHA_INVALID_SITEKEY
  • the task stays in processing and never reaches ready
  • the target website rejects the token during verification

How to verify:

  • open the page source and locate data-sitekey inside g-recaptcha or cf-turnstile elements
  • for reCAPTCHA, the key may also appear in the k parameter of requests to recaptcha/api.js
  • make sure the value is copied without extra spaces or characters

Incorrect websiteURL

Our service binds captcha solutions to the page URL. If websiteURL is incorrect, the token may become invalid for the target website.

This is especially important for:

  • reCAPTCHA (v2, v3, enterprise)
  • Cloudflare Turnstile

Best practices:

Incorrect websiteURL often results in the ERROR_PAGEURL response.

Proxy issues

Some captcha types and websites require high-quality proxies. Our service supports two approaches:

  • Proxyless tasks (for example, RecaptchaV2TaskProxyless) — proxies are handled on the service side
  • Proxy tasks (for example, RecaptchaV2Task) — you provide your own proxies using proxyAddress, proxyPort, and proxyType

Common signs of proxy-related issues:

  • ERROR_BAD_PROXY response
  • captcha appears to be solved, but the website rejects the token
  • captcha is triggered on every request

Recommendations:

  • use residential or mobile proxies for complex websites
  • avoid public datacenter proxy ranges
  • monitor proxy stability and reputation

Expired token

Captcha tokens have a limited lifetime, usually between 1 and 2 minutes. If the token is submitted too late, it becomes invalid.

How to avoid it:

  • use the token immediately after receiving ready status
  • do not cache solutions between sessions
  • request a new captcha through createTask if your workflow introduces delays

Polling the API too frequently

Frequent polling of getTaskResult may cause rate limits or timeouts. The recommended interval is 3–5 seconds.

Possible consequences:

  • temporary IP restrictions
  • timeout or rate limit errors
  • increased solving time

Recommendations:

  • keep a 3–5 second interval between polling requests
  • use pingback callbacks for automatic result delivery
  • handle processing status correctly without interrupting the polling cycle too early

Token injection and callback issues

The received token must be properly injected into the target website. Simply setting the value is not always enough.

Example for reCAPTCHA v2/v3:

javascript Copy
document.getElementById('g-recaptcha-response').value = 'TOKEN';
document.querySelector('form').submit();

Example for Turnstile:

javascript id="jepmyl" Copy
document.querySelector('[name="cf-turnstile-response"]').value = 'TOKEN';

If the captcha uses a callback function, you must trigger that callback instead of only assigning the value.

Signs of the issue:

  • the form is not submitted
  • the website returns invalid token or verification failed
  • browser console errors appear

Incorrect task type

Our service supports multiple captcha types, and each requires the correct task type parameter.

Captcha Task Type
reCAPTCHA v2 RecaptchaV2TaskProxyless
reCAPTCHA v3 RecaptchaV3TaskProxyless
Cloudflare Turnstile TurnstileTaskProxyless
GeeTest v3/v4 GeeTestTaskProxyless / GeeTestV4TaskProxyless
FunCaptcha FunCaptchaTaskProxyless

If the wrong type is used, the API may return ERROR_TASK_NOT_SUPPORTED or ERROR_BAD_PARAMETERS.

How to identify the captcha type:

  • inspect widget classes such as g-recaptcha or cf-turnstile
  • review loaded scripts in the Network tab
  • use the captcha identification guide from the documentation

Dynamically loaded captcha

Modern websites often load captcha widgets only after user interaction.

Signs of dynamic loading:

  • the widget does not exist in the initial HTML
  • the captcha appears after clicking or logging in
  • parameters are passed through JavaScript events

Solutions:

  • wait until the captcha element appears before creating the task
  • monitor network requests that trigger widget loading
  • use explicit waits in your automation scripts

Cookies and session issues

Some anti-bot systems bind captcha validation to the current session. If cookies or IP addresses change during the process, the token may be rejected.

Things to verify:

  • the same cookies are used when submitting the token
  • the session remains consistent between requests
  • the same user-agent is preserved

Our service supports passing cookies using the following format:

key1=value1; key2=value2

Improper API error handling

Our service returns detailed error codes that help identify integration problems quickly.

Error Code Meaning Solution
ERROR_KEY_DOES_NOT_EXIST invalid API key verify the key in your dashboard
ERROR_ZERO_BALANCE insufficient balance add funds to your account
ERROR_BAD_PARAMETERS invalid task parameters review the request structure
ERROR_CAPTCHA_UNSOLVABLE captcha could not be solved verify sitekey and page accessibility
ERROR_IP_NOT_ALLOWED IP address not allowed add the IP to your whitelist

Always check errorId in the response: 0 means success, any other value indicates an error.

Conclusion

Most captcha-related issues are caused by integration mistakes rather than problems with the API itself. This checklist helps identify the root cause faster and reduces debugging time.

Quick troubleshooting

Symptom Possible Cause Solution
ERROR_RECAPTCHA_INVALID_SITEKEY invalid websiteKey verify data-sitekey
ERROR_PAGEURL incorrect URL provide the full HTTPS URL
token rejected by the website expired token or broken session submit immediately after ready
ERROR_BAD_PROXY low-quality proxy replace the proxy or use proxyless
task stuck in processing excessive polling increase the polling interval
ERROR_BAD_PARAMETERS incorrect task type verify the selected task type

Core integration principles

  1. always determine the CAPTCHA type using actual page data
  2. never modify extracted parameters manually
  3. keep the same session throughout the entire workflow
  4. respect API and website rate limits
  5. log errors and always verify errorId responses

If the issue still persists

  • enable request and response logging
  • test the task manually in your dashboard
  • verify website accessibility from different regions
  • contact support with your request payload and API response

Reliable CAPTCHA integration comes down to careful implementation and consistent session handling from start to finish.