Full working example for solving reCAPTCHA Invisible using the CaptchaAI API.
reCAPTCHA Invisible works without a visible checkbox — it activates automatically on form submission or via a programmatic grecaptcha.execute() call. This example sends the sitekey, page URL, and invisible=1 flag so the API returns a valid g-recaptcha-response token.
Languages: Python, Node.js, PHP, Go, Java, C#, Ruby, Rust, Kotlin, Bash
This example accompanies the blog article: How to Solve reCAPTCHA Invisible Using API
- A CaptchaAI account with API key (get one here)
- A target page with reCAPTCHA Invisible for testing
- One or more of: Python 3.8+, Node.js 16+, PHP 8.0+, Go 1.21+, Java 11+, .NET 8+, Ruby 3.0+, Rust 1.70+, Kotlin 1.9+, or Bash with curl and jq
-
Clone the repository:
git clone https://github.com/CaptchaAI/CaptchaAI-Examples.git cd CaptchaAI-Examples/articles/how-to-solve-recaptcha-invisible-using-api -
Copy the environment file and add your credentials:
cp .env.example .env
-
Edit
.envwith your API key and the target page's sitekey and URL. -
Follow the language-specific setup below.
cd python
pip install -r requirements.txt
python solve.pycd node
npm install
node solve.jscd php
composer install
php solve.phpcd go
go run solve.gocd java
javac Solve.java
java Solvecd csharp
dotnet runcd ruby
ruby solve.rbcd rust
cargo runcd kotlin
kotlinc solve.kt -include-runtime -d solve.jar
java -jar solve.jarcd bash
chmod +x solve.sh
./solve.sh| Variable | Description | Required |
|---|---|---|
CAPTCHAAI_API_KEY |
Your CaptchaAI API key (32 characters) | Yes |
CAPTCHA_SITEKEY |
reCAPTCHA Invisible sitekey from the target page | Yes |
CAPTCHA_PAGEURL |
Full URL of the page with reCAPTCHA | Yes |
POLL_INTERVAL |
Seconds between poll requests (default: 5) | No |
MAX_TIMEOUT |
Maximum seconds to wait for solution (default: 120) | No |
- Submit — Sends the CAPTCHA parameters to
https://ocr.captchaai.com/in.phpusing methoduserrecaptchawithinvisible=1 - Wait — Pauses 15 seconds for initial processing
- Poll — Checks
https://ocr.captchaai.com/res.phpevery 5 seconds for the result - Result — Returns the solved token ready for injection into
g-recaptcha-response
[*] Submitting reCAPTCHA Invisible task...
[+] Task submitted. ID: 71234567
[*] Waiting 15s before first poll...
[*] Polling for result (attempt 1)...
[*] Not ready yet, waiting 5s...
[*] Polling for result (attempt 2)...
[+] Solved! Token: 03AHJ_Vuve5Asa4koK3KSMyUkCq0vUFCR5Im4CwB7PzO3...
[+] Full token length: 280 characters
Next step: inject this token via the page's data-callback function
or set the g-recaptcha-response hidden field and submit the form.
| Error | Cause | Fix |
|---|---|---|
ERROR_WRONG_USER_KEY |
API key is invalid or wrong format | Check your key at https://captchaai.com/dashboard |
ERROR_KEY_DOES_NOT_EXIST |
API key not found | Verify the key exists in your dashboard |
ERROR_ZERO_BALANCE |
No balance remaining | Top up your account balance |
ERROR_CAPTCHA_UNSOLVABLE |
CAPTCHA could not be solved | Verify sitekey and page URL are correct |
CAPCHA_NOT_READY |
Solution still processing | This is normal — keep polling |
ERROR_BAD_TOKEN_OR_PAGEURL |
Wrong sitekey + URL combination | Extract the correct sitekey from the target page |
Script exits immediately with auth error
- Verify your API key is exactly 32 characters
- Make sure
.envfile is in thearticles/how-to-solve-recaptcha-invisible-using-api/directory (not inside a language folder)
Polling times out after 120 seconds
- The CAPTCHA may be unusually complex — try increasing
MAX_TIMEOUT - Check that the sitekey and page URL are correct for the target page
- Verify your account has sufficient balance
Token received but form submission fails
- The token may have expired (tokens are valid for ~120 seconds)
- Make sure you are injecting the token into the
g-recaptcha-responsehidden field - Some invisible reCAPTCHAs use a
data-callbackfunction — call it with the token instead - Some sites require additional cookies or headers alongside the token
- CaptchaAI Quickstart — Your first solve in 5 minutes
- reCAPTCHA v2 Example — Checkbox reCAPTCHA solving
- reCAPTCHA v3 Example — Standard reCAPTCHA v3 solving
- reCAPTCHA v2 Enterprise Example — Enterprise v2 solving
- reCAPTCHA v3 Enterprise Example — Enterprise v3 solving
- Browse more examples in the CaptchaAI-Examples repository