Guide
Task(Token)
hCaptcha

HCaptcha: solving hCaptcha

TIP

Create the task with the createTask method and get the result with the getTaskResult method.

TIP

Now we have met the requirements of almost all high score websites, and also support invisible

ℹ️Please be sure to use the userAgent returned by our API.

If our token is not accepted, please contact us

The task type types that we support:

  • HCaptchaTaskProxyLess is using the server’s built-in proxy

Create Task

Create a task with the createTask to create a task.

Task Object Structure

PropertiesTypeRequiredDescription
typeStringRequiredHCaptchaTaskProxyLess
websiteURLStringRequiredWeb address of the website using hcaptcha, generally it’s fixed value. (Ex: https://google.com)
websiteKeyStringRequiredThe domain public key, rarely updated. (Ex: b989d9e8-0d14-41sda0-870f-97b5283ba67d)
isInvisibleBooleanOptionalSet true if it’s a invisible captcha
enterprisePayloadObjectOptionalCustom data that is used in some implementations of hCaptcha Enterprise.
So you need to put true in the isEnterprise parameter. In most cases you see it as rqdata inside network requests.
IMPORTANT: you MUST provide userAgent if you submit captcha with data parameter.
The value should match the User-Agent you use when interacting with the target website,you can learn by how to get HCaptcha rqdata
userAgentStringOptionalBrowser’s User-Agent which is used in emulation. It is required that you use a signature of a modern browser, otherwise Google will ask you to “update your browser”.

Example Request

POST https://api.capsolver.com/createTask
Host: api.capsolver.com
Content-Type: application/json
{
  "clientKey": "YOUR_API_KEY",
  "task": {
    "type": "HCaptchaTaskProxyLess",
    "websiteURL": "https://www.yourwebsite.com/",
    "websiteKey": "00000000-0000-0000-0000-000000000000",
    // Optional:
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36"
  }
}

After you submit the task to us, you should receive in the response a ‘taskId’ if it’s successful. Please read errorCode: full list of errors if you didn’t receive the task id.

Example Response

{
  "errorId": 0,
  "errorCode": "",
  "errorDescription": "",
  "taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}

Getting Result

Use the getTaskResult method to get the recognition results

Depending on the system load, you will get the results within the interval of 1s to 10s

Example Request

POST https://api.capsolver.com/getTaskResult
Host: api.capsolver.com
Content-Type: application/json
 
{
  "clientKey": "YOUR_API_KEY",
  "taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}

Example Response

{
  "errorId": 0,
  "errorCode": null,
  "errorDescription": null,
  "solution": {
    //userAgent used to solve the captcha
    "userAgent": "xxx",
    //expireTime of the token
    "expireTime": 1671615324290,
    "timestamp": 1671615024290,
    "captchaKey": "E0_xxx",
    //token of the captcha
    "gRecaptchaResponse": "3AHJ....."
  },
  "status": "ready"
}

Use SDK Request

# pip install --upgrade capsolver
# export CAPSOLVER_API_KEY='...'
 
import capsolver
 
# capsolver.api_key = "..."
solution = capsolver.solve({
    "type": "HCaptchaTaskProxyLess",
    "websiteURL": "",
    "websiteKey": "00000000-0000-0000-0000-000000000000",
})

Sample Code

# pip install requests
import requests
import time
 
# TODO: set your config
api_key = "YOUR_API_KEY"  # your api key of capsolver
site_key = "00000000-0000-0000-0000-000000000000"  # site key of your target site
site_url = "https://www.yourwebsite.com"  # page url of your target site
 
 
def capsolver():
    payload = {
        "clientKey": api_key,
        "task": {
            "type": 'HCaptchaTaskProxyLess',
            "websiteKey": site_key,
            "websiteURL": site_url
        }
    }
    res = requests.post("https://api.capsolver.com/createTask", json=payload)
    resp = res.json()
    task_id = resp.get("taskId")
    if not task_id:
        print("Failed to create task:", res.text)
        return
    print(f"Got taskId: {task_id} / Getting result...")
 
    while True:
        time.sleep(1)  # delay
        payload = {"clientKey": api_key, "taskId": task_id}
        res = requests.post("https://api.capsolver.com/getTaskResult", json=payload)
        resp = res.json()
        status = resp.get("status")
        if status == "ready":
            return resp.get("solution", {}).get('gRecaptchaResponse')
        if status == "failed" or resp.get("errorId"):
            print("Solve failed! response:", res.text)
            return
 
 
token = capsolver()
print(token)