HardCaptcha
hCaptcha is a popular privacy-focused CAPTCHA alternative to reCAPTCHA. It appears as a checkbox challenge and is used on a wide range of websites, including Cloudflare-protected sites, Discord, and many others. hCaptcha can also run in enterprise mode with additional security parameters.
Supported Types
Section titled “Supported Types”| Type | Proxy | Description |
|---|---|---|
HardCaptchaTokenProxyLess | No | Standard (recommended) |
HardCaptchaToken | Yes | With proxy |
HardCaptchaEnterpriseProxyLess | No | Enterprise, no proxy |
HardCaptchaEnterprise | Yes | Enterprise with proxy |
Parameters
Section titled “Parameters”| Parameter | Type | Required | Description |
|---|---|---|---|
type | string | Yes | Task type from the table above |
websiteURL | string | Yes | URL of the page with the captcha |
websiteKey | string | Yes | hCaptcha site key |
isEnterprise | boolean | No | Set to true for enterprise hCaptcha |
enterprisePayload | object | No | Enterprise-specific parameters |
rqdata | string | No | Custom data parameter if present on the page |
Proxy Parameters
Section titled “Proxy Parameters”Required when using a proxy task type (HardCaptchaToken, HardCaptchaEnterprise).
| Parameter | Type | Required | Description |
|---|---|---|---|
proxyType | string | Yes | http, socks4, or socks5 |
proxyAddress | string | Yes | Proxy IP or hostname |
proxyPort | integer | Yes | Proxy port |
proxyLogin | string | No | Proxy username |
proxyPassword | string | No | Proxy password |
Create Task
Section titled “Create Task”Request
Section titled “Request”{ "clientKey": "YOUR_API_KEY", "task": { "type": "HardCaptchaTokenProxyLess", "websiteURL": "https://example.com/signup", "websiteKey": "a5f74b19-9e45-40e0-b45d-47ff91b7a6c2" }}Response
Section titled “Response”{ "errorId": 0, "taskId": "abc-123-def"}Solution Object
Section titled “Solution Object”{ "token": "P0_eyJ0eXAiOiJKV1QiLCJhbGci...", "respKey": "E0_eyJ0eXAiOiJKV1QiLCJhbGci...", "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36..."}| Field | Type | Description |
|---|---|---|
token | string | hCaptcha response token |
respKey | string | Response key (if applicable) |
userAgent | string | User agent used during solving |
How to Use
Section titled “How to Use”Once you receive the solution, inject it into the target page:
- Form fields — Set the value of the hidden
h-captcha-responseinput field. Many sites also check theg-recaptcha-responsefield, so set that as well. - Callback — Call the hCaptcha callback function with the token.
- User agent — If the site validates the user agent, use the
userAgentvalue from the solution for your subsequent requests.
Code Examples
Section titled “Code Examples”Python
Section titled “Python”import requestsimport time
API_KEY = "YOUR_API_KEY"
# Create taskresponse = requests.post("https://api.ucaptcha.net/createTask", json={ "clientKey": API_KEY, "task": { "type": "HardCaptchaTokenProxyLess", "websiteURL": "https://example.com/signup", "websiteKey": "a5f74b19-9e45-40e0-b45d-47ff91b7a6c2" }})task_id = response.json()["taskId"]
# Poll for resultwhile True: result = requests.post("https://api.ucaptcha.net/getTaskResult", json={ "clientKey": API_KEY, "taskId": task_id }).json()
if result["status"] == "ready": solution = result["solution"] print("Token:", solution["token"]) print("RespKey:", solution.get("respKey")) print("UserAgent:", solution.get("userAgent")) break elif result["status"] == "failed": print("Error:", result.get("errorDescription")) break
time.sleep(5)JavaScript
Section titled “JavaScript”const API_KEY = "YOUR_API_KEY";
const { taskId } = await fetch("https://api.ucaptcha.net/createTask", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ clientKey: API_KEY, task: { type: "HardCaptchaTokenProxyLess", websiteURL: "https://example.com/signup", websiteKey: "a5f74b19-9e45-40e0-b45d-47ff91b7a6c2" } })}).then(r => r.json());
while (true) { const result = await fetch("https://api.ucaptcha.net/getTaskResult", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ clientKey: API_KEY, taskId }) }).then(r => r.json());
if (result.status === "ready") { console.log("Token:", result.solution.token); console.log("RespKey:", result.solution.respKey); console.log("UserAgent:", result.solution.userAgent); break; } else if (result.status === "failed") { console.error("Error:", result.errorDescription); break; }
await new Promise(r => setTimeout(r, 5000));}# Create taskcurl -X POST https://api.ucaptcha.net/createTask \ -H "Content-Type: application/json" \ -d '{ "clientKey": "YOUR_API_KEY", "task": { "type": "HardCaptchaTokenProxyLess", "websiteURL": "https://example.com/signup", "websiteKey": "a5f74b19-9e45-40e0-b45d-47ff91b7a6c2" } }'
# Poll for result (replace TASK_ID with the taskId from above)curl -X POST https://api.ucaptcha.net/getTaskResult \ -H "Content-Type: application/json" \ -d '{ "clientKey": "YOUR_API_KEY", "taskId": "TASK_ID" }'Provider Coverage
Section titled “Provider Coverage”- 2Captcha
- Anti-Captcha
- DeathByCaptcha
- RiskByPass
- OnyxSolver
- 2Crawler
- Multibot
- uCaptcha Native
Aliases
Section titled “Aliases”The following legacy type names are also accepted for backward compatibility:
HardCaptchaTaskHardCaptchaTaskProxylessHardCaptchaTaskProxyLessHardCaptchaTokenHardCaptchaTokenProxyLessHardCaptchaEnterpriseHardCaptchaEnterpriseProxyLess