Skip to content

reCAPTCHA v3 Enterprise

Summary

PropertyValue
v1 typerecaptcha.v3.enterprise
Compatibility namesRecaptchaV3EnterpriseTask, RecaptchaV3TaskProxyless
Proxynot used
Deadline120 seconds (starting value). A task not solved by then fails with timeout and is not charged.
2captcha legacy APImethod=userrecaptcha&version=v3&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
page_action
optional
string

The action passed to grecaptcha.execute.

min length 1 · max length 256
min_score
optional
number

Minimum score the token should reach (0.1 to 0.9).

≥ 0.1 · ≤ 0.9
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

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.v3.enterprise",
"params": {
"website_url": "https://example.com/login",
"website_key": "6Lc_aCMTAAAAABx7u2W0WPXnVbI_v6ZdbM6rYf16",
"page_action": "login"
}
}
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.v3.enterprise",
"params": {
"website_url": "https://example.com/login",
"website_key": "6Lc_aCMTAAAAABx7u2W0WPXnVbI_v6ZdbM6rYf16",
"page_action": "login"
}
}
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
RecaptchaV3EnterpriseTaskignored
RecaptchaV3TaskProxylessignoredOnly with isEnterprise: true.

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

Solution fields in getTaskResult:

Compatibility fieldv1 solution field
gRecaptchaResponsetoken
userAgentuser_agent

Example: compatibility API

POST /createTask
{
"clientKey": "nop_test_…",
"task": {
"type": "RecaptchaV3TaskProxyless",
"isEnterprise": true,
"websiteURL": "https://example.com/login",
"websiteKey": "6Lc_aCMTAAAAABx7u2W0WPXnVbI_v6ZdbM6rYf16",
"pageAction": "login"
}
}
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": "RecaptchaV3TaskProxyless",
"isEnterprise": true,
"websiteURL": "https://example.com/login",
"websiteKey": "6Lc_aCMTAAAAABx7u2W0WPXnVbI_v6ZdbM6rYf16",
"pageAction": "login"
}
}
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)"
}