API Reference
Create a task, poll for the result, done. hCaptcha tokens in one API.
Overview
Core Solver is a JSON API. Create a task with your target URL and sitekey, then poll until the token is ready. You are only billed for successful solves.
Endpoints
All requests and responses are JSON. Prices: $4 per 1,000 successful solves — failed solves are not charged.
import requests, time
BASE = "https://coresolver.lol"
KEY = "your-api-key"
task = requests.post(f"{BASE}/createTask", json={
"clientKey": KEY,
"task": {
"type": "HCaptchaTask",
"websiteURL": "https://discord.com/register",
"websiteKey": "a9b5fb07-92ff-493f-86fe-352a2803b3df",
"proxyless": True,
},
}).json()
while True:
r = requests.post(f"{BASE}/getTaskResult", json={
"clientKey": KEY, "taskId": task["taskId"],
}).json()
if r.get("status") == "ready":
print(r["solution"]["gRecaptchaResponse"])
break
time.sleep(1)
Authentication
Every request needs your API key. Send it as clientKey in the JSON body — or as an X-API-Key header / ?key= query parameter.
An invalid or missing key returns errorId: 1 with ERROR_KEY_DOES_NOT_EXIST.
curl -X POST https://coresolver.lol/checkBalance \
-H "Content-Type: application/json" \
-H "X-API-Key: your-api-key" \
-d '{}'
{
"clientKey": "your-api-key"
}
POST /createTask
Queue a solve. Returns a taskId immediately; the solve runs in the background.
POST /createTask
| Field | Type | Required | Description |
|---|---|---|---|
| clientKey | string | required | Your API key. |
| task.type | string | required | HCaptchaTask |
| task.websiteURL | string | required | Page the widget is rendered on. |
| task.websiteKey | string | required | The hCaptcha sitekey. |
| task.proxy | string | optional | http://user:pass@host:port, also socks4:// / socks5://. Required unless proxyless is true. |
| task.proxyless | boolean | optional | Use our egress instead of your proxy. |
| task.rqdata | string | optional | Enterprise rqdata, when the site provides one. |
Response: { "errorId": 0, "taskId": "…" }
POST /getTaskResult
Poll until status is ready (usually 3–8 seconds).
POST /getTaskResult
| Field | Type | Required | Description |
|---|---|---|---|
| clientKey | string | required | Your API key. |
| taskId | string | required | Value returned by /createTask. |
Solution
gRecaptchaResponse is the token to submit on the target site. userAgent is the UA the token was minted with — send the same one.
POST /checkBalance
Current credit on the key, in USD. One successful solve costs $0.004.
POST /checkBalance
| Field | Type | Required | Description |
|---|---|---|---|
| clientKey | string | required | Your API key. |
Balance is per account and shared by all your keys. It never expires, and only successful solves are charged ($0.004 each).
curl -X POST https://coresolver.lol/checkBalance \
-H "Content-Type: application/json" \
-d '{"clientKey": "your-api-key"}'
{
"errorId": 0,
"balance": 12.4800
}
Errors
Failures return errorId: 1 plus an errorCode. A failed solve is never charged.
| errorCode | Cause |
|---|---|
| ERROR_KEY_DOES_NOT_EXIST | Missing or invalid API key. |
| ERROR_BAD_REQUEST | Malformed JSON or invalid websiteURL. |
| ERROR_TASK_NOT_SUPPORTED | Unsupported task type, or no proxy and proxyless is false. |
| ERROR_NO_SUCH_CAPCHA_ID | Unknown taskId (or expired). |
| ERROR_QUEUE_FULL | At capacity — retry shortly. |
| ERROR_NOT_ENOUGH_BALANCE | Balance is below the $0.004 cost of a solve. Top up to continue. |
| ERROR_CAPTCHA_UNSOLVABLE | Solve failed. Not billed. |
{
"errorId": 1,
"errorCode": "ERROR_KEY_DOES_NOT_EXIST"
}
{
"errorId": 1,
"errorCode": "ERROR_CAPTCHA_UNSOLVABLE"
}