UNLOCK API
reCAPTCHA v3

reCAPTCHA v3

How to send a reCAPTCHA v3 task to UNLOCK API with createTask or in.php: task type names, every parameter, the solution object, proxy fields and code samples in 7 languages.
Price
$0.55 $0.00055 per task
You send
Page URL, site key, page action and minimum score
You get
Token for g-recaptcha-response

Overview and price

Task type names

Use the first name to solve without a proxy. Use the second name and add the proxy fields to solve through your own proxy. The price is the same.
RecaptchaV3TaskProxylessWithout proxy
RecaptchaV3TaskThrough your proxy

Also accepted: RecaptchaV3Enterprise, RecaptchaV3EnterpriseTaskProxyless, RecaptchaV3EnterpriseTask

Task object

type
StringRequired
Task type name. Matched in any letter case. RecaptchaV3TaskProxyless | RecaptchaV3Task
websiteURL
StringRequired
Full address of the page where the CAPTCHA appears, starting with http:// or https://.
websiteKey
StringRequired
The site key of the CAPTCHA widget, found in the page source (for example data-sitekey).
pageAction
StringOptional
The action name the page sends with execute, for example login.
minScore
NumberOptional
Score you need, from 0.1 to 0.9.
isEnterprise
BooleanOptional
true for reCAPTCHA v3 Enterprise.
apiDomain
StringOptional
Domain the widget loads from: google.com or recaptcha.net.

Fields not listed here are passed to the solver as sent.

Proxy fields

Only for the proxy type name. Send either the separate fields or one proxy string.
proxyType
StringRequired
http, https, socks4 or socks5.
proxyAddress
StringRequired
Proxy IP address or host name.
proxyPort
IntegerRequired
Proxy port.
proxyLogin
StringOptional
Proxy user name, if the proxy needs one.
proxyPassword
StringOptional
Proxy password, if the proxy needs one.
proxy
String
All proxy fields in one string, for example http://user:pass@1.2.3.4:8080.

Using a proxy

Request

POST /createTask
{
  "clientKey": "YOUR_API_KEY",
  "task": {
    "type": "RecaptchaV3TaskProxyless",
    "websiteURL": "https://example.com/login",
    "websiteKey": "6LcR_RsTAAAAAFJR_5ZdbQd0SMxL7yIDmSXH1-lo",
    "pageAction": "login",
    "minScore": 0.7
  }
}

Solution object

Returned in solution when status is ready.
gRecaptchaResponse
String
The token. Put it in the g-recaptcha-response field (or h-captcha-response for hCaptcha), or pass it to the page callback.
POST /getTaskResult
{
  "errorId": 0,
  "taskId": 1001,
  "status": "ready",
  "solution": {
    "gRecaptchaResponse": "03AGdBq27hXmT6Rq9k..."
  },
  "cost": "0.00055",
  "createTime": 1791640000,
  "endTime": 1791640014,
  "solveCount": 1
}

Code samples

import time, requests

API = "https://unlock-api.com"
KEY = "YOUR_API_KEY"

task = requests.post(f"{API}/createTask", json={
    "clientKey": KEY,
    "task": {
      "type": "RecaptchaV3TaskProxyless",
      "websiteURL": "https://example.com/login",
      "websiteKey": "6LcR_RsTAAAAAFJR_5ZdbQd0SMxL7yIDmSXH1-lo",
      "pageAction": "login",
      "minScore": 0.7
    }
}).json()
if task["errorId"]:
    raise SystemExit(task["errorCode"])

for _ in range(60):   # 60 x 5 s = the 5 minute task limit
    time.sleep(5)
    r = requests.post(f"{API}/getTaskResult", json={"clientKey": KEY, "taskId": task["taskId"]}).json()
    if r["errorId"]:
        raise SystemExit(f"{r['errorCode']}: {r.get('errorDescription', '')}")   # failed tasks are refunded
    if r["status"] == "ready":
        print(r["solution"]["gRecaptchaResponse"])
        break
else:
    raise SystemExit("timed out")

in.php form method

The same task with the classic form request. res.php returns the answer as text.
in.php, res.php
curl -s "https://unlock-api.com/in.php" -d "key=YOUR_API_KEY&method=userrecaptcha&version=v3&action=login&min_score=0.7&googlekey=SITE_KEY&pageurl=https://example.com/login&json=1"
# {"status":1,"request":"1001"}

curl -s "https://unlock-api.com/res.php?key=YOUR_API_KEY&action=get&id=1001&json=1"
# {"status":0,"request":"CAPCHA_NOT_READY"}  then  {"status":1,"request":"ANSWER"}

Form API: in.php and res.php