API Reference

API Documentation

A fast, async REST API for solving hCaptcha challenges. Submit a solve task, then poll for the result — typically ready in 10–30 seconds.

Base URL

All API requests are made over HTTPS to:

url
https://solver.axilon.app/api

Authentication

Include your API key in the X-API-Key header on every request. Generate a key from your dashboard.

http
GET /api/solve
X-API-Key: ax_your_key_here
Keep your API key confidential do not expose it in client-side code. Rotate it from the dashboard if compromised.

Quick Start

Send a single GET request with the target URL and sitekey to receive a solved token:

curl
# 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 token

Endpoints

All endpoints accept and return JSON.

GET/api/solve

Submit 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.

Query Parameters

ParameterTypeRequiredDescription
urlstringrequiredThe page URL where the hCaptcha is embedded.
sitekeystringrequiredThe hCaptcha sitekey found on the target page.
rqdatastringoptionalOptional enterprise rqdata string extracted from the page source.
proxystringoptionalHTTP/HTTPS proxy in user:pass@host:port or host:port format.

Success Response

json
{
  "taskid": "q0wfg"
}
Balance is deduct only if the response is "success". Poll /api/task/:id every 3 seconds until status is "success".
GET/api/task/:id

Poll the result of a previously submitted solve task. Requires the same X-API-Key header used when submitting.

Path Parameters

ParameterTypeRequiredDescription
idstringrequiredThe task ID returned by /api/solve.

Response

json
// 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 }
Submit the token via the h-captcha-response form field. Tokens expire ~120 seconds after issuance — submit immediately.
Important: Use the returned 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.
GET/api/balance

Returns the current credit balance for your API key account.

Success Response

json
{
  "balance": 12.4800,
  "currency": "USD"
}

Error Codes

All errors are returned with an appropriate HTTP status code and a JSON body.

HTTP StatusErrorDescription
400missing_parameterA required query parameter (url or sitekey) is missing.
401missing_api_keyThe X-API-Key header was not included in the request.
402insufficient_balanceYour account balance is too low to submit a solve task.
403invalid_api_keyThe provided API key is invalid or has been revoked.
503solver_unavailableThe solving backend is temporarily unavailable. Retry shortly.
500internal_errorAn unexpected server error occurred. Contact support if persistent.
json
// 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" }

Integration Tips

Best practices for reliable captcha solving in production:

User-Agent matching
Always use the userAgent returned in the task response as your User-Agent header when submitting the token to the target site. Mismatched User-Agents are a primary detection vector — services like Discord will reject tokens where the submitting client's fingerprint doesn't match the solving browser.
Timeout handling
The solve endpoint returns a taskid instantly. Polling typically resolves in 10–30 seconds. Set a maximum of 40 poll attempts (3s apart = 120s) before treating the task as timed out.
Token expiry
Tokens expire after approximately 120 seconds (2 minutes). Submit them immediately don't cache.
Proxy tips
Use residential or mobile proxies for best success rates on strict targets. Datacenter proxies may reduce accuracy.
rqdata extraction
For Discord and similar Enterprise targets, scrape and forward the rqdata from the page's hCaptcha config to boost success rate.
Retry logic
If you receive a 503, implement exponential back-off (start at 2s). Balance 402s are final top up via your dashboard.

Need help?

Join our Discord for support, feature requests, and to chat with the team.

Join Discord