CAPI / GUIDE

Errors and retries

API response codes and what to check when a scenario fails.

Key or balance

If access is denied, check the key with /key. After /rotate, update the plugin setting. If the available balance is too low, top up the account.

Images and task type

Check the captcha type, all required images and that they belong to one round. GeeTest Icon needs three hints, Slide — the puzzle fragment, Nine — the current task's hint.

Clicks do not match the picture

Check the scale, the widget's position and that no windows overlap it. After the captcha refreshes, start over with the new round's data.

Session and proxy

Keep the browser session and proxy until the task is finished. After a network failure, check the task state in the plugin and the dashboard history before repeating the whole scenario.

API response codes

Every API error is returned as a JSON object: number is the error number, code its code, detail the server message, hint a short piece of advice; errors tied to a task also have task_id (also in the X-Task-Id header). The number and the code do not change: rely on them, not on the detail text.

A solve refusal (4001 unsolvable_image, HTTP 422) is not a server fault: detail says at which step the solver stopped and what it saw. The reserve for such a task is released. Keep the images you sent: they are a sample for training the model.

Retry a network failure with the same Idempotency-Key and the same body: an already issued solution is returned without another charge.

NumberCodeHTTPMeaningWhat to do
1001unauthorized401The API key is wrong or revoked, or the account is blocked.Check the key with /key; after /rotate update the plugin setting.
1002blocked403The account is blocked.Contact the administrator.
1003forbidden403Access to the resource is denied for this account.Check the account permissions.
1010plugin_signature_required403The plugin signature headers X-Capi-* are missing or malformed.Update the plugin; do not send X-Capi-* headers in direct requests.
1011plugin_request_expired403The time of the signed plugin request is outside the allowed window (120 s).Check the computer clock and retry.
1012plugin_version_not_permitted403This plugin version is disabled.Download the current version from the downloads page.
1013plugin_signature_invalid403The plugin signature does not match the one the server computed.Check that the plugin has your API key and update it.
1014plugin_replay409A plugin request with this nonce was already accepted.Send a new request instead of resending the old one.
1015report_salt_required403The report has no report_salt from the solve response.Send the report_salt received in the response to the task.
1016invalid_report_proof403The report_salt does not belong to this task.Use the report_salt from the response to this very task.
2001insufficient_balance402The available balance is lower than the task price.Top up the balance.
2002price_unavailable503No tariff is set for this captcha type.Retry later or contact the administrator.
2003rate_limit429The account created more tasks in a minute than allowed.Wait a minute and retry.
2004too_many_pending429Too many tasks without a report.Send /v1/report for the finished tasks.
2005report_expired409The report deadline of the task has passed.Send the report right after the captcha provider check.
2006not_solved409The task has no solution: the solve failed.No report is needed for such a task.
2007idempotency_conflict409The Idempotency-Key or operation ID was already used with a different body.Use a new key for a new request; resend the same body for a network retry.
2008request_pending_or_failed409The task with this Idempotency-Key is still running or has failed.Check /v1/task/{task_id} or send the request with a new key.
3001invalid_request422The request parameters failed validation.Compare the parameters with the route description.
3002invalid_json400The body is not JSON of the expected shape.Send a JSON object, e.g. {"image": "<base64>"}.
3003invalid_image400The image is empty or not a valid base64 string.Send the whole image as base64.
3004payload_too_large413The image or the request body is over the limit.Shrink the image or drop extra data.
3005captcha_type_required400The captcha type is not set.Set it in the path /v1/solve/{type} or in the captcha_type parameter.
3006unknown_captcha_type404There is no such captcha type.Take the type from the list in detail or from the docs.
3007invalid_variant400The model or type value is not an available one.Pick a value from the list in detail.
3008invalid_report400The report has no task_id or its result is not an allowed one.Send {"task_id": ..., "result": "success|fail|continue"}.
3009invalid_request_key400The Idempotency-Key must be 1 to 128 characters long.Use a UUID.
3010not_found404The task or resource is not found or belongs to another account.Check the identifier.
3011invalid_result400The report result is not success, fail or continue.Send one of the three results.
3012method_not_allowed405The route does not support this HTTP method.Check the method in the route description.
3013bad_request400The request is invalid.Read detail.
3014conflict409The state of the resource does not allow the operation.Read detail.
4001unsolvable_image422The images were read but the solver has no answer for them. detail names the step and what the solver saw. The reserve is released.Keep the images you sent as a dataset sample and request a new captcha round.
4002solver_busy429All solving slots are busy.Retry in a second (Retry-After header).
4003inference_failed500The solver failed. The reserve is released.Retry; if it persists, send the task ID.
4004inference_timeout504Solving did not finish in time. The reserve is released.Retry the request.
5000internal_error500Internal server error.Retry later; if it persists, send the request time.
5001database_unavailable503The database is unavailable.Retry later.
5002plugin_config_unavailable503The plugin configuration on the server is unavailable.Retry later.
5003journal_unavailable503The task journal is not configured on the server.Contact the administrator.
5004billing_disabled503Billing is disabled on the server.Contact the administrator.
5005service_unavailable503The service is temporarily unavailable.Retry later.

Data for troubleshooting

Keep the plugin version, captcha type, task ID, time and error message. Do not publish your API key, proxy passwords or cookies.