Skip to content

reCAPTCHA v2 Enterprise

Summary

PropertyValue
v1 typerecaptcha.v2.enterprise
Compatibility namesRecaptchaV2EnterpriseTask, RecaptchaV2EnterpriseTaskProxyless
Proxyoptional (Proxies)
Deadline120 seconds (starting value). A task not solved by then fails with timeout and is not charged.
2captcha legacy APImethod=userrecaptcha&enterprise=1 (details)

Parameters

The params object of POST /v1/tasks. Unknown fields are rejected with 422 invalid_params.

FieldTypeDescription
website_url
required
string

Full URL of the page that shows the captcha (http or https).

format: uri · pattern: ^[Hh][Tt][Tt][Pp][Ss]?:// · min length 8 · max length 4,096
website_key
required
string

The site key of the captcha widget.

min length 1 · max length 512
is_invisible
optional
boolean

true for the invisible reCAPTCHA.

enterprise_payload
optional
object

Extra enterprise parameters passed to the widget as is, e.g. {"s": "..."} for reCAPTCHA Enterprise or {"rqdata": "..."} for hCaptcha.

max 32 keys
api_domain
optional
string

Domain the widget is loaded from, e.g. www.recaptcha.net. Omit for the default.

format: hostname · min length 1 · max length 253
user_agent
optional
string

Browser User-Agent.

min length 1 · max length 1,024
cookies
optional
string

Cookies for the target site, as in a Cookie header: name1=value1; name2=value2.

max length 8,192
proxy
optional
object

Proxy the solver must use. login and password are used in memory only and are never stored or logged.

proxy.type
required
enumone of "http", "https", "socks4", "socks5"
proxy.host
required
string

IP address or host name. Private and loopback addresses are rejected.

min length 1 · max length 253
proxy.port
required
integer≥ 1 · ≤ 65535
proxy.login
optional
stringmax length 256
proxy.password
optional
stringmax length 256

Solution

The solution object of a solved task.

FieldTypeDescription
token
required
string

Token to submit to the target site. Single use.

min length 1
user_agent
optional
string

User-Agent the token was obtained with; use it when submitting the token.

min length 1 · max length 1,024

Example: native API (v1)

Runs as is with a test key (nop_test_…) in the sandbox; use a live key for real tasks.

POST /v1/tasks
{
"type": "recaptcha.v2.enterprise",
"params": {
"website_url": "https://example.com/login",
"website_key": "6Lc_aCMTAAAAABx7u2W0WPXnVbI_v6ZdbM6rYf16",
"enterprise_payload": {
"s": "S_VALUE_FROM_THE_PAGE"
}
}
}
Terminal window
export NOPTCHA_KEY=nop_test_... # your test or live key
# waits up to 60 s; 200 = finished (solved or failed), 202 = still processing
IDEMPOTENCY_KEY=$(uuidgen) # one key per task you want; a retry of the same request reuses it
curl -s -X POST "https://api.noptcha.com/v1/tasks" \
-H "Authorization: Bearer $NOPTCHA_KEY" \
-H 'Prefer: wait=60' \
-H "Idempotency-Key: $IDEMPOTENCY_KEY" \
-H 'Content-Type: application/json' \
-d @- <<EOF
{
"type": "recaptcha.v2.enterprise",
"params": {
"website_url": "https://example.com/login",
"website_key": "6Lc_aCMTAAAAABx7u2W0WPXnVbI_v6ZdbM6rYf16",
"enterprise_payload": {
"s": "S_VALUE_FROM_THE_PAGE"
}
}
}
EOF
# on 202: long-poll with the "id" from the response
TASK_ID=...
curl -s "https://api.noptcha.com/v1/tasks/$TASK_ID?wait=60" \
-H "Authorization: Bearer $NOPTCHA_KEY"

In the sandbox the task is solved at once and solution is:

{
"token": "NOPTCHA_TEST_TOKEN_7259140378796032",
"user_agent": "Mozilla/5.0 (Noptcha test)"
}

Compatibility API

NameProxyNotes
RecaptchaV2EnterpriseTaskrequired
RecaptchaV2EnterpriseTaskProxylessignored

Task fields (in task, next to type) and the v1 parameter each one becomes:

Compatibility fieldv1 parameter
apiDomainapi_domain
cookiescookies
enterprisePayloadenterprise_payload
isEnterpriseaccepted; only selects the type
isInvisibleis_invisible
minScoremin_score
pageActionpage_action
userAgentuser_agent
websiteKeywebsite_key
websiteURLwebsite_url
proxyType, proxyAddress, proxyPort, proxyLogin, proxyPasswordproxy (Proxies)

Solution fields in getTaskResult:

Compatibility fieldv1 solution field
gRecaptchaResponsetoken
userAgentuser_agent

Example: compatibility API

POST /createTask
{
"clientKey": "nop_test_…",
"task": {
"type": "RecaptchaV2EnterpriseTaskProxyless",
"websiteURL": "https://example.com/login",
"websiteKey": "6Lc_aCMTAAAAABx7u2W0WPXnVbI_v6ZdbM6rYf16",
"enterprisePayload": {
"s": "S_VALUE_FROM_THE_PAGE"
}
}
}
Terminal window
export NOPTCHA_KEY=nop_test_... # your test or live key
# 1. create the task
curl -s -X POST "https://api.noptcha.com/createTask" \
-H 'Content-Type: application/json' \
-d @- <<EOF
{
"clientKey": "$NOPTCHA_KEY",
"task": {
"type": "RecaptchaV2EnterpriseTaskProxyless",
"websiteURL": "https://example.com/login",
"websiteKey": "6Lc_aCMTAAAAABx7u2W0WPXnVbI_v6ZdbM6rYf16",
"enterprisePayload": {
"s": "S_VALUE_FROM_THE_PAGE"
}
}
}
EOF
# 2. poll with the taskId from step 1 every few seconds until "status" is "ready"
TASK_ID=...
curl -s -X POST "https://api.noptcha.com/getTaskResult" \
-H 'Content-Type: application/json' \
-d @- <<EOF
{
"clientKey": "$NOPTCHA_KEY",
"taskId": $TASK_ID
}
EOF

In the sandbox getTaskResult returns "status": "ready" and solution:

{
"gRecaptchaResponse": "NOPTCHA_TEST_TOKEN_7259140378796032",
"userAgent": "Mozilla/5.0 (Noptcha test)"
}