Skip to content

Error catalogue

Every error response carries three machine-readable fields:

json
{ "errorId": 23, "errorCode": "ERROR_TASK_EXPIRED", "errorDescription": "Task result has expired." }

errorCode is the stable contract — script against it, not against errorId (which is preserved only for v1 compat).

errorIderrorCodeWhen
1ERROR_NO_SLOT_AVAILABLEAt thread limit — slow down or raise your thread limit
2ERROR_KEY_DOES_NOT_EXISTBad clientKey
3ERROR_TASK_NOT_FOUNDTask id not found or expired
4ERROR_POLL_LIMIT_EXCEEDEDToo many polls on the same task id (default 120, configurable)
5ERROR_TASK_TYPE_UNSUPPORTEDtask.type is missing or unsupported
6ERROR_PAYLOAD_TOO_LARGEInline payload exceeds the configured limit
7ERROR_CALLBACK_URL_INVALIDBad host, private IP, or wrong scheme
8ERROR_VALIDATIONA required field is missing / malformed
9ERROR_UPSTREAM_UNAVAILABLERedis or RabbitMQ unavailable — try again shortly
10ERROR_NOT_IMPLEMENTEDEndpoint is reserved for a future phase
11ERROR_CLIENT_BLOCKEDClient is suspended or blocked
22ERROR_QUEUE_PUBLISH_FAILEDRabbitMQ down — your admission was rolled back
23ERROR_TASK_EXPIREDTask existed but its result TTL elapsed
24ERROR_SERVICE_PAUSEDTask admission is temporarily paused — retry shortly
99ERROR_INTERNALBug. Open a ticket with the requestId header

Retry policy

CodeSafe to retry?Notes
ERROR_NO_SLOT_AVAILABLEyes, with backoffWatch the Retry-After header
ERROR_QUEUE_PUBLISH_FAILEDyesAdmission was rolled back, thread is free
ERROR_VALIDATIONnoFix the request
ERROR_INTERNALyes once, then alertWe page on 5xx rate >2 % for 10 m

CaptchaAI · phase 1 docs