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

clientKeyrequired
string

Your API key

taskrequired
object

Task configuration object

task.typerequired
string

Task type, e.g. "AntiKasadaTask"

task.pageURLrequired
string

Target page URL with challenge parameters

task.proxyrequired
string

Proxy in format http://user:pass@host:port

task.userAgent
string

Browser user agent (default: Chrome 146)

task.acceptLanguage
string

Accept-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

clientKeyrequired
string

Your API key

taskIdrequired
string

Task 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

TypeServiceStatus
AntiKasadaTaskKasadaAvailable
TurnstileTaskTurnstileSoon
AWSWafTaskAWSWafSoon
GeeTestTaskGeeTestSoon
TikTokCaptchaTaskTikTokCaptchaSoon

Error Codes

All responses include errorId, errorCode, and errorDescription. When errorId is 0, the request was successful.

Error CodeDescription
ERROR_KEY_DENIED_ACCESSInvalid or missing clientKey
ERROR_ZERO_BALANCEInsufficient account balance
ERROR_TASK_NOT_SUPPORTEDUnknown or disabled task type
ERROR_TASKID_INVALIDTask ID not found
ERROR_CAPTCHA_UNSOLVABLESolve failed (not charged)
ERROR_INVALID_TASK_DATAInvalid request parameters
ERROR_SERVICE_UNAVALIABLEService temporarily unavailable