reCAPTCHA v3
Generate high-score reCAPTCHA v3 tokens invisibly
Overview
reCAPTCHA v3 runs invisibly in the background and returns a score (0.0 - 1.0) indicating how likely the user is human. Our API generates tokens with high scores for seamless automation.
Supported Task Types
| Task Type | Proxy Required | Description |
|---|---|---|
ReCaptchaV3TaskProxyLess | No | Standard v3, uses our proxy |
ReCaptchaV3Task | Yes | Standard v3, requires your proxy |
ReCaptchaV3EnterpriseTaskProxyLess | No | Enterprise v3, uses our proxy |
ReCaptchaV3EnterpriseTask | Yes | Enterprise v3, requires your proxy |
Create Task
Endpoint: POST /createTask
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
clientKey | String | Yes | Your API key |
task.type | String | Yes | Task type (see table above) |
task.websiteURL | String | Yes | Page URL containing the captcha |
task.websiteKey | String | Yes | reCAPTCHA site key |
task.pageAction | String | No | Action name from grecaptcha.execute() |
task.isSession | Boolean | No | Capture and return the recaptcha-ca-t session cookie in the solution |
task.enterprisePayload | Object | No | Extra options passed to grecaptcha.enterprise.execute() (Enterprise task types) |
task.apiDomain | String | No | Override the reCAPTCHA API domain (e.g. recaptcha.net) |
task.proxy | String | No | Required for non-ProxyLess types. See Proxy Format |
Basic Request
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "ReCaptchaV3TaskProxyLess",
"websiteURL": "https://example.com",
"websiteKey": "6LdyC2cUAAAAACGuDKpXeDorzUDWXmdqeg-xy696"
}
}Request with Action
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "ReCaptchaV3TaskProxyLess",
"websiteURL": "https://example.com/login",
"websiteKey": "6LdyC2cUAAAAACGuDKpXeDorzUDWXmdqeg-xy696",
"pageAction": "login"
}
}Response
{
"errorId": 0,
"taskId": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}Get Task Result
Endpoint: POST /getTaskResult
Request
{
"clientKey": "YOUR_API_KEY",
"taskId": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}Response (Ready)
{
"errorId": 0,
"status": "ready",
"solution": {
"gRecaptchaResponse": "03AGdBq26fE8...",
"userAgent": "Mozilla/5.0 ...",
"secChUa": "\"Chromium\";v=\"136\", ..."
}
}Code Examples
# Create task
curl -X POST https://api.capbypass.pro/createTask \
-H "Content-Type: application/json" \
-d '{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "ReCaptchaV3TaskProxyLess",
"websiteURL": "https://example.com",
"websiteKey": "6LdyC2cUAAAAACGuDKpXeDorzUDWXmdqeg-xy696",
"pageAction": "submit"
}
}'
# Get result
curl -X POST https://api.capbypass.pro/getTaskResult \
-H "Content-Type: application/json" \
-d '{
"clientKey": "YOUR_API_KEY",
"taskId": "TASK_ID"
}'import requests
import time
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.capbypass.pro"
def solve_recaptcha_v3(website_url, website_key, action=None):
# Create task
task = {
"type": "ReCaptchaV3TaskProxyLess",
"websiteURL": website_url,
"websiteKey": website_key
}
if action:
task["pageAction"] = action
response = requests.post(f"{BASE_URL}/createTask", json={
"clientKey": API_KEY,
"task": task
})
task_id = response.json()["taskId"]
# Poll for result
while True:
result = requests.post(f"{BASE_URL}/getTaskResult", json={
"clientKey": API_KEY,
"taskId": task_id
}).json()
if result["status"] == "ready":
return result["solution"]["gRecaptchaResponse"]
if result.get("errorId"):
raise Exception(f"Error: {result.get('errorDescription')}")
time.sleep(2)
# Usage
token = solve_recaptcha_v3(
"https://example.com",
"6LdyC2cUAAAAACGuDKpXeDorzUDWXmdqeg-xy696",
action="homepage"
)
print(f"Token: {token[:50]}...")const API_KEY = 'YOUR_API_KEY';
const BASE_URL = 'https://api.capbypass.pro';
async function solveRecaptchaV3(websiteURL, websiteKey, pageAction) {
// Create task
const task = {
type: 'ReCaptchaV3TaskProxyLess',
websiteURL,
websiteKey
};
if (pageAction) task.pageAction = pageAction;
const createRes = await fetch(`${BASE_URL}/createTask`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ clientKey: API_KEY, task })
});
const { taskId } = await createRes.json();
// Poll for result
while (true) {
const resultRes = await fetch(`${BASE_URL}/getTaskResult`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ clientKey: API_KEY, taskId })
});
const result = await resultRes.json();
if (result.status === 'ready') {
return result.solution.gRecaptchaResponse;
}
await new Promise(r => setTimeout(r, 2000));
}
}
// Usage
const token = await solveRecaptchaV3(
'https://example.com',
'6LdyC2cUAAAAACGuDKpXeDorzUDWXmdqeg-xy696',
'submit'
);How to Find Parameters
Finding the Website Key
- HTML Source: Look for
render=parameter:
<script src="https://www.google.com/recaptcha/api.js?render=6LdyC2cUAAAAACGuDKpXeDorzUDWXmdqeg-xy696"></script>-
Network Tab: Filter for
recaptchaand check therenderparameter -
JavaScript: Search for
grecaptcha.execute:
grecaptcha.execute('6LdyC2cUAAAAACGuDKpXeDorzUDWXmdqeg-xy696', {action: 'submit'})Finding the Action
The action is passed to grecaptcha.execute(). Common actions:
homepageloginsubmitregistercheckout
Search the page source for grecaptcha.execute to find the action:
grecaptcha.execute('SITE_KEY', {action: 'login'}).then(function(token) {
// token handling
});Understanding v3 Scores
reCAPTCHA v3 returns a score between 0.0 and 1.0:
| Score | Interpretation |
|---|---|
| 0.9 - 1.0 | Very likely human |
| 0.7 - 0.9 | Probably human |
| 0.3 - 0.7 | Uncertain |
| 0.0 - 0.3 | Likely bot |
Our tokens typically achieve scores of 0.7 - 0.9.
v3 vs v2 Comparison
| Feature | reCAPTCHA v2 | reCAPTCHA v3 |
|---|---|---|
| User interaction | Image challenges | None (invisible) |
| Output | Pass/Fail token | Score (0.0-1.0) |
| Solve time | 5-30 seconds | 2-5 seconds |
| Implementation | Checkbox/invisible | Fully invisible |
Typical Solve Time
- Average: 2-5 seconds
- Maximum timeout: 60 seconds
Error Codes
| Error Code | Description |
|---|---|
ERROR_KEY_DOES_NOT_EXIST | Invalid API key |
ERROR_ZERO_BALANCE | Insufficient balance |
ERROR_CAPTCHA_UNSOLVABLE | Challenge could not be solved |
ERROR_TASK_NOT_FOUND | Task ID not found |
ERROR_INVALID_TASK_DATA | Missing or invalid parameters |
ERROR_PROXY_NOT_DEFINED | Proxy required for a non-ProxyLess task type — use the ProxyLess variant or supply task.proxy |
ERROR_PROXY_CONNECTION_FAILED | Could not connect through your proxy (refused, unreachable, or bad credentials) - check the proxy is alive and reachable |
ERROR_PROXY_BANNED | The target blocked your proxy IP (datacenter or flagged) - use a residential or mobile proxy |
ERROR_INVALID_DEVELOPER_KEY | The provided developerKey is invalid or disabled |
ERROR_WRONG_TASK_TYPE | Wrong task type for this site (e.g., standard vs enterprise) |
ERROR_TIMEOUT | Task exceeded timeout |
ERROR_TASK_QUEUE_FULL | Server is at capacity — retry in a few seconds |
ERROR_TASK_TYPE_COMING_SOON | Task type is not yet available |
ERROR_TASK_TYPE_INACTIVE | Task type is currently disabled |
ERROR_WORKER_CRASHED | Solver process exited mid-solve — balance refunded, safe to retry |
ERROR_INTERNAL | Internal server error |
Next Steps
AWS WAF Guide
Solve AWS WAF challenges
API Reference
Complete endpoint documentation
Python SDK
pip install capbypass-sdk
Best Practices
Tokens expire in 2 minutes
reCAPTCHA v3 tokens have a short lifespan. Use them immediately after receiving the solution.
-
Always include the action if the target site uses one - mismatched actions may cause token rejection
-
Match the domain - tokens are bound to the domain they were generated for
-
Enterprise sites - use
ReCaptchaV3EnterpriseTaskProxyLessfor enterprise-protected sites