A fast, async REST API for solving hCaptcha challenges. Submit a solve task, then poll for the result — typically ready in 10–30 seconds.
All API requests are made over HTTPS to:
https://solver.axilon.app/api
Include your API key in the X-API-Key header on every request. Generate a key from your dashboard.
GET /api/solve X-API-Key: ax_your_key_here
Send a single GET request with the target URL and sitekey to receive a solved token:
# Step 1 — submit the solve task
curl "https://solver.axilon.app/api/solve?url=https://discord.com&sitekey=a9b5fb07-92ff-493f-86fe-352a2803b3df" \
-H "X-API-Key: ax_your_key_here"
# => { "taskid": "q0wfg" }
# Step 2 — poll until status == "success"
curl "https://solver.axilon.app/api/task/q0wfg" \
-H "X-API-Key: ax_your_key_here"
# => { "status": "success", "token": "P1_eyJ...", "userAgent": "Mozilla/5.0 ...", "time": 12.44 }
# Use the returned userAgent as your User-Agent header when submitting the tokenAll endpoints accept and return JSON.
/api/solveSubmit a captcha solve task. Returns immediately with a taskid — the solve runs asynchronously. Poll /api/task/:id until status is 'success' to retrieve the token.
| Parameter | Type | Required | Description |
|---|---|---|---|
| url | string | required | The page URL where the hCaptcha is embedded. |
| sitekey | string | required | The hCaptcha sitekey found on the target page. |
| rqdata | string | optional | Optional enterprise rqdata string extracted from the page source. |
| proxy | string | optional | HTTP/HTTPS proxy in user:pass@host:port or host:port format. |
{
"taskid": "q0wfg"
}/api/task/:id every 3 seconds until status is "success"./api/task/:idPoll the result of a previously submitted solve task. Requires the same X-API-Key header used when submitting.
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | required | The task ID returned by /api/solve. |
// Pending
{ "status": "not_ready", "token": null, "userAgent": null, "time": null }
// Solved
{
"status": "success",
"token": "P1_eyJ0eXAiOiJKV1Qi...",
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) ...",
"time": 12.44
}
// Failed
{ "status": "error", "token": null, "userAgent": null, "time": 8.01 }h-captcha-response form field. Tokens expire ~120 seconds after issuance — submit immediately.userAgent as your User-Agent header when submitting the token to the target site. This prevents fingerprint mismatch and avoids detection by services like Discord./api/balanceReturns the current credit balance for your API key account.
{
"balance": 12.4800,
"currency": "USD"
}All errors are returned with an appropriate HTTP status code and a JSON body.
| HTTP Status | Error | Description |
|---|---|---|
| 400 | missing_parameter | A required query parameter (url or sitekey) is missing. |
| 401 | missing_api_key | The X-API-Key header was not included in the request. |
| 402 | insufficient_balance | Your account balance is too low to submit a solve task. |
| 403 | invalid_api_key | The provided API key is invalid or has been revoked. |
| 503 | solver_unavailable | The solving backend is temporarily unavailable. Retry shortly. |
| 500 | internal_error | An unexpected server error occurred. Contact support if persistent. |
// 402 — insufficient balance
{
"error": "Insufficient balance",
"balance": 0.0000,
"required": 0.006
}
// 401 — missing header
{ "error": "Missing X-API-Key header" }
// 403 — invalid key
{ "error": "Invalid or revoked API key" }Best practices for reliable captcha solving in production: