Documentation Menu

General

Updated 9/3/2026

Solverify API Error Codes

Use this reference to understand Solverify API error codes, request validation limits, billing failures, task capacity errors, and recommended recovery actions. These errors can be returned by createTask, getTaskResult, getBalance, profile, and activeTasks requests.

Solverify customer API clients must inspect both the HTTP response and the JSON errorId. A successful HTTP request can still contain an API-level validation, authentication, billing, or task error.

Standard Solverify API Error Response

Most customer-facing validation and business errors use a consistent JSON structure and may be returned with HTTP 200:

{
  "errorId": 1,
  "errorCode": "ERROR_CODE_HERE",
  "errorDescription": "Human-readable explanation"
}
FieldTypeDescription
errorIdnumber0 indicates success. 1 indicates an API-level error.
errorCodestring or nullStable machine-readable code used by application logic.
errorDescriptionstring or nullHuman-readable details about the failure.

Some internal and node routes use HTTP status codes such as 400, 401, 404, 409, or 500. Always handle transport failures and non-success HTTP statuses in addition to checking errorId.

Request and Validation Errors

These errors indicate that the request or task payload must be corrected before retrying.

Error codeMeaningRecommended action
ERROR_INVALID_REQUESTThe request body contains invalid JSON or is missing required top-level fields.Validate the JSON structure and required fields before sending the request again.
ERROR_INVALID_TASKThe task object is malformed or required task parameters are missing or invalid.Compare the task payload with the documentation for that CAPTCHA type.
ERROR_UNSUPPORTED_TASKThe requested task type is not currently supported or priced.Use a supported task type and verify its exact task name.

Do not repeatedly retry validation errors with the same payload. Correct the request first.

API Key and Account Errors

Error codeMeaningRecommended action
ERROR_INVALID_KEYThe supplied clientKey was not found or is invalid.Verify the key and ensure whitespace or quotation marks were not included accidentally.
ERROR_KEY_EXPIREDThe API key has expired.Create or activate a valid API key before retrying.
ERROR_USER_NOT_FOUNDNo account profile was found for the API key's user.Verify the account and contact support if the key should be active.
ERROR_IP_BANNEDThe client IP was temporarily banned after repeated invalid API key attempts.Stop requests, correct the API key, and wait for the temporary restriction to end.
ERROR_REQUEST_TEMPORARILY_BANNEDAccount API access was temporarily blocked after repeated request failures.Stop automated retries, identify the repeated failure, and retry later with corrected requests.

Store API keys in environment variables or a secret manager. Never log the full clientKey when recording an error.

Billing and Task Limit Errors

Error codeMeaningRecommended action
ERROR_INSUFFICIENT_BALANCEThe account balance is lower than the required task price.Add funds or reduce submissions before creating another task.
ERROR_PENDING_LIMIT_EXCEEDEDA pay-per-solve account exceeded its active task limit.Wait for pending or processing tasks to finish before submitting more work.
ERROR_BILLING_EXPIREDThe thread or subscription billing period has expired.Renew billing before creating additional tasks.
ERROR_THREAD_LIMIT_EXCEEDEDA thread or subscription account exceeded its allowed active task count.Wait for active tasks to finish or adjust the assigned thread capacity.

Use the Get Balance API to check available credit, the Get Profile API for account-wide task counters, and the Active Tasks API for website-level queue information.

Capacity and Task Processing Errors

Error codeMeaningRecommended action
ERROR_NO_CAPACITYNo solver capacity is currently available for the requested task type.Retry later with bounded backoff instead of sending rapid repeated requests.
ERROR_TASK_CREATION_FAILEDThe API could not create the task.Review errorDescription, then retry cautiously if the request is valid.
ERROR_TASK_NOT_FOUNDThe task does not exist or is not accessible with the supplied API key.Verify the taskId and use the same API key that created the task.
ERROR_TASK_FAILEDThe task reached the failed state.Stop polling and inspect errorDescription for the task-specific reason.
ERROR_UNKNOWN_STATUSThe task has an unexpected internal status.Stop normal polling and contact support if the condition continues.
ERROR_TIMEOUTThe operation exceeded its allowed processing time.Retry according to the endpoint and use bounded backoff.

Internal API Errors

Error codeMeaningRecommended action
ERROR_INTERNALAn unexpected server-side error occurred.Retry with bounded backoff. Contact support if repeated attempts continue to fail.

Do not retry indefinitely. Set a maximum attempt count or overall deadline and log enough non-sensitive context to investigate repeated failures.

API Error Handling Examples

These examples demonstrate the important two-stage check: validate the HTTP response first, then inspect errorId in the JSON body.

curl --request POST \
  --url https://solver.solverify.net/getBalance \
  --header "Content-Type: application/json" \
  --data '{"clientKey":"YOUR_API_KEY"}'

Request Validation Limits

Requests and task fields must stay within these limits:

Field or requestValidation requirement
Request bodyMaximum size of 10 MB.
websiteURLValid URL with a maximum length of 2,048 characters.
websiteKeyMaximum length of 256 characters.
proxyTypeMust be http.
proxyAddressMaximum length of 256 characters.
proxyPortNumeric string containing 1 to 5 digits.
OCR base64Maximum length of 5,242,880 characters.
DataDome captchaUrlValid URL with a maximum length of 4,096 characters.
DataDome and Akamai useragentDo not send this field. Both solvers use Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36 by default.
Aliyun prefixRequired, with a maximum length of 128 characters.
Aliyun regionOptional; accepted values are sgp and cn.
Aliyun useragentOptional, with a maximum length of 512 characters.

Validate payloads before sending them. Client-side validation reduces failed requests and helps prevent temporary request restrictions caused by repeated invalid submissions.

Active Task Limits

Pay-per-solve accounts default to a maximum of 20 active tasks unless configured otherwise. Thread and subscription accounts are limited by their assigned thread count while billing is active.

Both pending and processing tasks count as active work. If a limit is reached, wait for existing tasks to complete before creating more tasks.

Retry Guidance

Use error-specific retry behavior instead of retrying every failure:

Error categoryRetry behavior
Invalid request or taskDo not retry until the payload is corrected.
Invalid or expired API keyDo not retry until valid credentials are configured.
Insufficient balance or expired billingResolve the billing condition before retrying.
Pending or thread limit exceededWait for active tasks to finish, then retry.
No capacity, timeout, or internal errorRetry with bounded exponential backoff and a maximum attempt count.
Task not found or task failedStop polling the same task ID and investigate the error.
Temporary IP or request banStop requests, correct the underlying issue, and wait before retrying.

Frequently Asked Questions

Why can a Solverify API error return HTTP 200?

Customer API errors use a consistent JSON response shape. HTTP 200 confirms that the API handled the request, while errorId: 1 reports a validation, authentication, billing, capacity, or task-level failure.

Should I only check the HTTP status code?

No. Check the HTTP status and parse the JSON response. A response can have a successful HTTP status while containing errorId: 1.

Which error means the Solverify API key is invalid?

ERROR_INVALID_KEY means the supplied clientKey was not found or is invalid. Verify that the correct key was loaded and that it does not contain extra spaces.

What should I do after ERROR_INSUFFICIENT_BALANCE?

Stop creating tasks and add funds to the account. Use POST /getBalance to confirm the updated balance before resuming submissions.

Should I retry ERROR_NO_CAPACITY immediately?

No. Wait before retrying and use bounded backoff. Rapid retries add request volume without creating solver capacity.

How should I handle ERROR_TASK_FAILED?

Stop polling that task ID and inspect errorDescription. Correct any task-specific issue before deciding whether to create a replacement task.

What information should I log for API errors?

Log the endpoint, errorCode, errorDescription, task ID when available, attempt count, and timestamp. Do not log the full API key, proxy credentials, or sensitive task payloads.