Skip to content

hCaptcha

Summary

PropertyValue
v1 typehcaptcha
Compatibility namesHCaptchaTask, HCaptchaTaskProxyless
Proxyoptional (Proxies)
Deadline120 seconds (starting value). A task not solved by then fails with timeout and is not charged.
2captcha legacy APImethod=hcaptcha (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 hCaptcha.

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
user_agent
optional
string

Browser User-Agent.

min length 1 · max length 1,024
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
resp_key
optional
string

Value some sites require together with the token (respKey).

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": "hcaptcha",
"params": {
"website_url": "https://accounts.hcaptcha.com/demo",
"website_key": "a5f74b19-9e45-40e0-b45d-47ff91b7a6c2"
}
}
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": "hcaptcha",
"params": {
"website_url": "https://accounts.hcaptcha.com/demo",
"website_key": "a5f74b19-9e45-40e0-b45d-47ff91b7a6c2"
}
}
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
HCaptchaTaskrequired
HCaptchaTaskProxylessignored

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

Compatibility fieldv1 parameter
enterprisePayloadenterprise_payload
isInvisibleis_invisible
rqdataenterprise_payload.rqdata
userAgentuser_agent
websiteKeywebsite_key
websiteURLwebsite_url
proxyType, proxyAddress, proxyPort, proxyLogin, proxyPasswordproxy (Proxies)

Solution fields in getTaskResult:

Compatibility fieldv1 solution field
gRecaptchaResponsetoken
userAgentuser_agent
respKeyresp_key

Example: compatibility API

POST /createTask
{
"clientKey": "nop_test_…",
"task": {
"type": "HCaptchaTaskProxyless",
"websiteURL": "https://accounts.hcaptcha.com/demo",
"websiteKey": "a5f74b19-9e45-40e0-b45d-47ff91b7a6c2"
}
}
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": "HCaptchaTaskProxyless",
"websiteURL": "https://accounts.hcaptcha.com/demo",
"websiteKey": "a5f74b19-9e45-40e0-b45d-47ff91b7a6c2"
}
}
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)"
}