# Error dictionary

`errorId` is always `0` or `1`. `errorCode` strings are the contract and are **not** translated.

| errorCode | When | Description | Client action |
|---|---|---|---|
| `ERROR_KEY_DOES_NOT_EXIST` | — | The clientKey is invalid or not found | Check the key in the portal; do not retry with the same value. |
| `ERROR_ZERO_BALANCE` | — | Insufficient account balance | Stop creating tasks; top up. Available = balance − frozen. |
| `ERROR_TASK_NOT_SUPPORTED` | — | The task type is not supported | Check the type string and whether the type is enabled. A disabled type also returns this code. |
| `ERROR_TASK_NOT_ACTIVE` | — | The task type is not active | Listed for compatibility. Today's binary never returns it: inactive types disappear from the registry. |
| `ERROR_TASK_DENIED` | — | Task creation denied | The account is blocked. Contact support. |
| `ERROR_RATE_LIMIT` | — | Rate limit exceeded | Back off; the window is per API key. |
| `ERROR_NO_SLOT_AVAILABLE` | — | No processing slot available | Retry later. Also used when an Akamai session is busy. |
| `CAPTCHA_NOT_READY` | — | Task result is not ready yet | Keep polling getTaskResult every 1–2s. |
| `ERROR_CAPTCHA_UNSOLVABLE` | — | Failed to solve the captcha | Do not charge-retry blindly; inspect the site and parameters. |
| `ERROR_BAD_REQUEST` | — | Request is malformed | Fix missing fields, types, URL/base64, or timeout. |
| `ERROR_INTERNAL` | — | Internal server error | Retry with backoff; contact support if it persists. |
| `ERROR_TASK_NOT_FOUND` | — | Task not found | Wrong taskId or it belongs to another key. |
| `ERROR_TASK_EXPIRED` | — | Task has expired | Create a new task. Also used when an Akamai browser session expired. |
| `ERROR_TOO_MANY_REQUESTS` | — | Too many result query attempts | Stop polling this taskId (cap 120). |

Source: https://kaptra.ai/docs/error-codes/error-dictionary
