Skip to content

reCAPTCHA v2

reCAPTCHA v2 is Google’s widely deployed challenge-based CAPTCHA. It appears as a checkbox (“I’m not a robot”) on millions of websites and can also operate in invisible mode, where the challenge is triggered programmatically without user interaction. The uCaptcha API supports standard, invisible, and enterprise variants, with or without a proxy.

TypeProxyDescription
ReCaptchaV2TokenProxyLessNoStandard — no proxy needed (recommended)
ReCaptchaV2TokenYesWith your proxy
ReCaptchaV2EnterpriseProxyLessNoEnterprise version, no proxy
ReCaptchaV2EnterpriseYesEnterprise with proxy
ReCaptchaV2InvisibleProxyLessNoInvisible reCAPTCHA, no proxy
ReCaptchaV2InvisibleYesInvisible with proxy
ParameterTypeRequiredDescription
typestringYesTask type from the table above
websiteURLstringYesURL of the page with the captcha
websiteKeystringYesreCAPTCHA site key (data-sitekey attribute)
isInvisiblebooleanNoSet to true for invisible reCAPTCHA
recaptchaDataSValuestringNoValue of the data-s parameter if present
apiDomainstringNoDomain of the reCAPTCHA API (e.g., www.recaptcha.net)

These parameters apply only to the enterprise task types.

ParameterTypeRequiredDescription
enterprisePayloadobjectNoAdditional enterprise parameters (e.g., { "s": "value" })

Required when using a proxy task type (ReCaptchaV2Token, ReCaptchaV2Enterprise, ReCaptchaV2Invisible).

ParameterTypeRequiredDescription
proxyTypestringYeshttp, socks4, or socks5
proxyAddressstringYesProxy IP or hostname
proxyPortintegerYesProxy port
proxyLoginstringNoProxy username
proxyPasswordstringNoProxy password
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "ReCaptchaV2TokenProxyLess",
"websiteURL": "https://example.com/login",
"websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"
}
}
{
"errorId": 0,
"taskId": "abc-123-def"
}
{
"gRecaptchaResponse": "03AGdBq24PBCbwiDRaS_MJ7Z...7Pqz6Jhp2gFnuhaTf3o"
}
FieldTypeDescription
gRecaptchaResponsestringThe reCAPTCHA response token to submit with the form

Once you receive the gRecaptchaResponse token, inject it into the target page in one of the following ways:

  1. Form submission — Set the value of the hidden g-recaptcha-response textarea element and submit the form.
  2. Callback function — Call the site’s reCAPTCHA callback function with the token as the argument.
import requests
import time
API_KEY = "YOUR_API_KEY"
# Create task
response = requests.post("https://api.ucaptcha.net/createTask", json={
"clientKey": API_KEY,
"task": {
"type": "ReCaptchaV2TokenProxyLess",
"websiteURL": "https://example.com/login",
"websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"
}
})
task_id = response.json()["taskId"]
# Poll for result
while True:
result = requests.post("https://api.ucaptcha.net/getTaskResult", json={
"clientKey": API_KEY,
"taskId": task_id
}).json()
if result["status"] == "ready":
token = result["solution"]["gRecaptchaResponse"]
print("Token:", token)
break
elif result["status"] == "failed":
print("Error:", result.get("errorDescription"))
break
time.sleep(5)
const API_KEY = "YOUR_API_KEY";
const { taskId } = await fetch("https://api.ucaptcha.net/createTask", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
clientKey: API_KEY,
task: {
type: "ReCaptchaV2TokenProxyLess",
websiteURL: "https://example.com/login",
websiteKey: "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"
}
})
}).then(r => r.json());
while (true) {
const result = await fetch("https://api.ucaptcha.net/getTaskResult", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ clientKey: API_KEY, taskId })
}).then(r => r.json());
if (result.status === "ready") {
console.log("Token:", result.solution.gRecaptchaResponse);
break;
} else if (result.status === "failed") {
console.error("Error:", result.errorDescription);
break;
}
await new Promise(r => setTimeout(r, 5000));
}
Terminal window
# Create task
curl -X POST https://api.ucaptcha.net/createTask \
-H "Content-Type: application/json" \
-d '{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "ReCaptchaV2TokenProxyLess",
"websiteURL": "https://example.com/login",
"websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"
}
}'
# Poll for result (replace TASK_ID with the taskId from above)
curl -X POST https://api.ucaptcha.net/getTaskResult \
-H "Content-Type: application/json" \
-d '{
"clientKey": "YOUR_API_KEY",
"taskId": "TASK_ID"
}'
  • 2Captcha
  • CapSolver
  • Anti-Captcha
  • CapMonster
  • DeathByCaptcha
  • 2Crawler
  • Multibot

The following legacy type names are also accepted for backward compatibility:

  • RecaptchaV2Task
  • RecaptchaV2TaskProxyless
  • NoCaptchaTask
  • NoCaptchaTaskProxyless