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.

Base URL https://coresolver.lol

Endpoints

POST /createTaskQueue a captcha solve.
POST /getTaskResultPoll a task for its token.
POST /checkBalanceYour remaining credit.

All requests and responses are JSON. Prices: $4 per 1,000 successful solves — failed solves are not charged.

Quick example
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.

clientKey API key inside the JSON body. This is the standard hCaptcha-style field.
X-API-Key Header alternative, useful for GET-style calls.

An invalid or missing key returns errorId: 1 with ERROR_KEY_DOES_NOT_EXIST.

curl
curl -X POST https://coresolver.lol/checkBalance \
  -H "Content-Type: application/json" \
  -H "X-API-Key: your-api-key" \
  -d '{}'
same request, body key
{
  "clientKey": "your-api-key"
}

POST /createTask

Queue a solve. Returns a taskId immediately; the solve runs in the background.

POST /createTask

FieldTypeRequiredDescription
clientKeystringrequiredYour API key.
task.typestringrequiredHCaptchaTask
task.websiteURLstringrequiredPage the widget is rendered on.
task.websiteKeystringrequiredThe hCaptcha sitekey.
task.proxystringoptionalhttp://user:pass@host:port, also socks4:// / socks5://. Required unless proxyless is true.
task.proxylessbooleanoptionalUse our egress instead of your proxy.
task.rqdatastringoptionalEnterprise rqdata, when the site provides one.

Response: { "errorId": 0, "taskId": "…" }

curl
curl -X POST https://coresolver.lol/createTask \
  -H "Content-Type: application/json" \
  -d '{
    "clientKey": "your-api-key",
    "task": {
      "type": "HCaptchaTask",
      "websiteURL": "https://discord.com/register",
      "websiteKey": "a9b5fb07-92ff-493f-86fe-352a2803b3df",
      "proxy": "http://user:pass@1.2.3.4:8080"
    }
  }'

POST /getTaskResult

Poll until status is ready (usually 3–8 seconds).

POST /getTaskResult

FieldTypeRequiredDescription
clientKeystringrequiredYour API key.
taskIdstringrequiredValue 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.

curl
curl -X POST https://coresolver.lol/getTaskResult \
  -H "Content-Type: application/json" \
  -d '{
    "clientKey": "your-api-key",
    "taskId": "6f1c0a2e9b8d4c7aa1f3d2e5b6c7a8d9"
  }'

POST /checkBalance

Current credit on the key, in USD. One successful solve costs $0.004.

POST /checkBalance

FieldTypeRequiredDescription
clientKeystringrequiredYour 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
curl -X POST https://coresolver.lol/checkBalance \
  -H "Content-Type: application/json" \
  -d '{"clientKey": "your-api-key"}'
200 OK
{
  "errorId": 0,
  "balance": 12.4800
}

Errors

Failures return errorId: 1 plus an errorCode. A failed solve is never charged.

errorCodeCause
ERROR_KEY_DOES_NOT_EXISTMissing or invalid API key.
ERROR_BAD_REQUESTMalformed JSON or invalid websiteURL.
ERROR_TASK_NOT_SUPPORTEDUnsupported task type, or no proxy and proxyless is false.
ERROR_NO_SUCH_CAPCHA_IDUnknown taskId (or expired).
ERROR_QUEUE_FULLAt capacity — retry shortly.
ERROR_NOT_ENOUGH_BALANCEBalance is below the $0.004 cost of a solve. Top up to continue.
ERROR_CAPTCHA_UNSOLVABLESolve failed. Not billed.
invalid key
{
  "errorId": 1,
  "errorCode": "ERROR_KEY_DOES_NOT_EXIST"
}
failed solve
{
  "errorId": 1,
  "errorCode": "ERROR_CAPTCHA_UNSOLVABLE"
}