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 TypeProxy RequiredDescription
ReCaptchaV3TaskProxyLessNoStandard v3, uses our proxy
ReCaptchaV3TaskYesStandard v3, requires your proxy
ReCaptchaV3EnterpriseTaskProxyLessNoEnterprise v3, uses our proxy
ReCaptchaV3EnterpriseTaskYesEnterprise v3, requires your proxy

Create Task

Endpoint: POST /createTask

Request Parameters

ParameterTypeRequiredDescription
clientKeyStringYesYour API key
task.typeStringYesTask type (see table above)
task.websiteURLStringYesPage URL containing the captcha
task.websiteKeyStringYesreCAPTCHA site key
task.pageActionStringNoAction name from grecaptcha.execute()
task.isSessionBooleanNoCapture and return the recaptcha-ca-t session cookie in the solution
task.enterprisePayloadObjectNoExtra options passed to grecaptcha.enterprise.execute() (Enterprise task types)
task.apiDomainStringNoOverride the reCAPTCHA API domain (e.g. recaptcha.net)
task.proxyStringNoRequired 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

  1. HTML Source: Look for render= parameter:
<script src="https://www.google.com/recaptcha/api.js?render=6LdyC2cUAAAAACGuDKpXeDorzUDWXmdqeg-xy696"></script>
  1. Network Tab: Filter for recaptcha and check the render parameter

  2. JavaScript: Search for grecaptcha.execute:

grecaptcha.execute('6LdyC2cUAAAAACGuDKpXeDorzUDWXmdqeg-xy696', {action: 'submit'})

Finding the Action

The action is passed to grecaptcha.execute(). Common actions:

  • homepage
  • login
  • submit
  • register
  • checkout

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:

ScoreInterpretation
0.9 - 1.0Very likely human
0.7 - 0.9Probably human
0.3 - 0.7Uncertain
0.0 - 0.3Likely bot

Our tokens typically achieve scores of 0.7 - 0.9.

v3 vs v2 Comparison

FeaturereCAPTCHA v2reCAPTCHA v3
User interactionImage challengesNone (invisible)
OutputPass/Fail tokenScore (0.0-1.0)
Solve time5-30 seconds2-5 seconds
ImplementationCheckbox/invisibleFully invisible

Typical Solve Time

  • Average: 2-5 seconds
  • Maximum timeout: 60 seconds

Error Codes

Error CodeDescription
ERROR_KEY_DOES_NOT_EXISTInvalid API key
ERROR_ZERO_BALANCEInsufficient balance
ERROR_CAPTCHA_UNSOLVABLEChallenge could not be solved
ERROR_TASK_NOT_FOUNDTask ID not found
ERROR_INVALID_TASK_DATAMissing or invalid parameters
ERROR_PROXY_NOT_DEFINEDProxy required for a non-ProxyLess task type — use the ProxyLess variant or supply task.proxy
ERROR_PROXY_CONNECTION_FAILEDCould not connect through your proxy (refused, unreachable, or bad credentials) - check the proxy is alive and reachable
ERROR_PROXY_BANNEDThe target blocked your proxy IP (datacenter or flagged) - use a residential or mobile proxy
ERROR_INVALID_DEVELOPER_KEYThe provided developerKey is invalid or disabled
ERROR_WRONG_TASK_TYPEWrong task type for this site (e.g., standard vs enterprise)
ERROR_TIMEOUTTask exceeded timeout
ERROR_TASK_QUEUE_FULLServer is at capacity — retry in a few seconds
ERROR_TASK_TYPE_COMING_SOONTask type is not yet available
ERROR_TASK_TYPE_INACTIVETask type is currently disabled
ERROR_WORKER_CRASHEDSolver process exited mid-solve — balance refunded, safe to retry
ERROR_INTERNALInternal server error

Next Steps

Best Practices

Tokens expire in 2 minutes

reCAPTCHA v3 tokens have a short lifespan. Use them immediately after receiving the solution.

  1. Always include the action if the target site uses one - mismatched actions may cause token rejection

  2. Match the domain - tokens are bound to the domain they were generated for

  3. Enterprise sites - use ReCaptchaV3EnterpriseTaskProxyLess for enterprise-protected sites

On this page