API Reference
Suppress uses a REST API compatible with the capsolver format. All endpoints accept POST requests with JSON bodies.
Base URL: https://api.suppress.sh
Authentication
All requests require a clientKey in the JSON body. Get your key from the dashboard after signing up.
{
"clientKey": "your-api-key-here"
}POST /createTask
Create a new solving task. Returns immediately with a task ID while the solve runs in the background.
Request body
clientKeyrequiredYour API key
taskrequiredTask configuration object
task.typerequiredTask type, e.g. "AntiKasadaTask"
task.pageURLrequiredTarget page URL with challenge parameters
task.proxyrequiredProxy in format http://user:pass@host:port
task.userAgentBrowser user agent (default: Chrome 146)
task.acceptLanguageAccept-Language header (default: "en-US,en;q=0.9")
Example request
curl -X POST https://api.suppress.sh/createTask \
-H "Content-Type: application/json" \
-d '{
"clientKey": "your-api-key",
"task": {
"type": "AntiKasadaTask",
"pageURL": "https://example.com/fp?x-kpsdk-v=j-1.2.291",
"proxy": "http://user:pass@host:port",
"userAgent": "Mozilla/5.0 ...",
"acceptLanguage": "en-US,en;q=0.6"
}
}'Response
{
"errorId": 0,
"errorCode": "",
"errorDescription": "",
"taskId": "550e8400-e29b-41d4-a716-446655440000",
"status": "processing"
}POST /getTaskResult
Poll for the result of a task. Recommended polling interval is 3 seconds.
Request body
clientKeyrequiredYour API key
taskIdrequiredTask ID from createTask response
Response (processing)
{
"errorId": 0,
"taskId": "...",
"status": "processing"
}Response (ready)
{
"errorId": 0,
"taskId": "...",
"status": "ready",
"solution": {
"ct": "x-kpsdk-ct header value",
"cd": "x-kpsdk-cd JSON string",
"h": "x-kpsdk-h header value"
}
}Response (failed)
{
"errorId": 1,
"errorCode": "ERROR_CAPTCHA_UNSOLVABLE",
"errorDescription": "Captcha not recognized",
"taskId": "...",
"status": "failed"
}Failed tasks are not charged. Your balance is automatically refunded.
POST /getBalance
Check your current account balance.
Request
{
"clientKey": "your-api-key"
}Response
{
"errorId": 0,
"balance": 9.997,
"packages": []
}Balance is in USD. 1 unit = $0.001.
Task Types
| Type | Service | Status |
|---|---|---|
| AntiKasadaTask | Kasada | Available |
| TurnstileTask | Turnstile | Soon |
| AWSWafTask | AWSWaf | Soon |
| GeeTestTask | GeeTest | Soon |
| TikTokCaptchaTask | TikTokCaptcha | Soon |
Error Codes
All responses include errorId, errorCode, and errorDescription. When errorId is 0, the request was successful.
| Error Code | Description |
|---|---|
| ERROR_KEY_DENIED_ACCESS | Invalid or missing clientKey |
| ERROR_ZERO_BALANCE | Insufficient account balance |
| ERROR_TASK_NOT_SUPPORTED | Unknown or disabled task type |
| ERROR_TASKID_INVALID | Task ID not found |
| ERROR_CAPTCHA_UNSOLVABLE | Solve failed (not charged) |
| ERROR_INVALID_TASK_DATA | Invalid request parameters |
| ERROR_SERVICE_UNAVALIABLE | Service temporarily unavailable |