API referenceReferenceError codes

Error codes

Every failure is an HTTP 200 with errorId set to 1. Read the body, never the status line: a 4xx or 5xx from us means the request never reached the service.

The shape of an error

JSON

{
  "errorId": 1,
  "errorCode": "ERROR_KEY_DENIED_ACCESS",
  "errorDescription": "That client key is not on any account.",
  "taskId": ""
}
FieldTypeWhat it means
errorIdInteger0 for fine, 1 for failed. Nothing else.
errorCodeStringA stable string. Branch on this.
errorDescriptionStringOne sentence for a human. Wording may change; do not match on it.

Account and key

CodeWhat happenedWhat to do
ERROR_KEY_DENIED_ACCESSThe key is not on any account.Copy it again from the dashboard. Watch for trailing whitespace.
ERROR_ZERO_BALANCENot enough left to cover the task.Add funds. Queued tasks still finish.
ERROR_SETTLEMENT_FAILEDThe solve worked, the billing did not.Retry. The task was not charged.
ERROR_KEY_TEMP_BLOCKEDToo many failed requests on this key.It clears itself after 5 minutes. Fix the request first.
ERROR_IP_BANNEDToo many errors from one address.It clears after 30 minutes. This is almost always a loop with no sleep.

The request itself

CodeWhat happenedWhat to do
ERROR_INVALID_TASK_DATAA field is missing or malformed.Read errorDescription. It names the field.
ERROR_TASK_NOT_SUPPORTEDNo such task type.Check spelling and case. Type strings are case sensitive.
ERROR_BAD_REQUESTThe body did not parse as JSON.Check the content type header and the encoding.
ERROR_TASKID_INVALIDNo such id, or it is older than 5 minutes, or you have polled 120 times.Create the task again.
ERROR_RATE_LIMITToo many requests in too short a window.Back off. Doubling the wait each time clears it fastest.

The solve

CodeWhat happenedWhat to do
ERROR_CAPTCHA_UNSOLVABLEWe could not answer it.Not billed. Retry once; a second failure usually means the wrong type.
ERROR_TASK_TIMEOUTNothing after 120 seconds.Not billed. Retry.
ERROR_PROXY_BANNEDThe target site blocks your proxy address.Rotate the address.
ERROR_PROXY_CONNECT_REFUSEDWe could not reach your proxy at all.Check the port and the firewall. Not billed.
ERROR_PROXY_AUTH_FAILEDThe proxy rejected the username or password.Check the credentials. Not billed.
ERROR_SERVICE_UNAVAILABLEWe are under load or down.Retry after a few seconds. Status is on the dashboard.

What to retry, and what not to

  • Retry ERROR_SERVICE_UNAVAILABLE, ERROR_RATE_LIMIT, ERROR_SETTLEMENT_FAILED and ERROR_TASK_TIMEOUT, backing off each time.
  • Retry ERROR_CAPTCHA_UNSOLVABLE once, then stop and look at the task type.
  • Never retry ERROR_KEY_DENIED_ACCESS, ERROR_TASK_NOT_SUPPORTED or ERROR_INVALID_TASK_DATA. The same request will fail the same way and walk you into a block.

Last updated 21 September 2026