Conventions
All solve APIs share one JSON envelope. Vendor differences live in POST /v1/solve/:type inputs and success data.
Base URL
text
https://api.hitcaptcha.comPaths below are relative to that root. For self-hosted setups, substitute your own {BASE}.
Endpoints
| Method | Path | Auth | Notes |
|---|---|---|---|
| GET | /health | No | Liveness |
| GET | /v1/solvers | Yes | Available solvers |
| POST | /v1/solve/:type | Yes | Solve |
type is one of akamai / kasada / datadome / reese84 (lowercase). Unknown types → NOT_FOUND.
See Authentication.
Content-Type
Body must be a JSON object, max 2MB:
http
Content-Type: application/jsonArrays, empty bodies, or non-objects → INVALID_INPUT.
Success
json
{
"ok": true,
"type": "kasada",
"data": {},
"cost_ms": 123,
"charged_points": 2,
"balance_points": 998
}| Field | Type | Notes |
|---|---|---|
ok | boolean | Always true |
type | string | Path vendor |
data | object | Vendor result |
cost_ms | number | Server time in ms |
charged_points | number | Points charged (if billed) |
balance_points | number | Balance after charge (if billed) |
Failure
HTTP status varies; body shape is fixed:
json
{
"ok": false,
"type": "kasada",
"error": { "code": "TIMEOUT", "message": "kasada timeout after 90000ms" },
"cost_ms": 90001
}Unexpected errors never return internal stacks — they become INTERNAL.