HumanRecognition
Human-powered image captcha recognition. Workers read and transcribe text from captcha images.
HumanRecognition sends captcha images to human workers who read the text and type it back. Handles edge cases that AI cannot — heavily distorted text, color-based rules, or context-dependent challenges.
For standard captchas, use TextRecognition instead — it uses AI models and is significantly faster.
When to use HumanRecognition
- The captcha uses color-based rules — use the
commentfield (e.g."enter only the red characters"). - The captcha has visual instructions in a separate image — use the
imgInstructionsfield. - The captcha requires math — set
math: true. - AI-based
TextRecognitionreturns incorrect results for your captcha.
comment vs imgInstructions
comment is a text instruction telling the worker what to do. imgInstructions is a separate base64-encoded image shown alongside the captcha as a visual reference — use it when a text description isn't enough.
Setting caseSensitive, numeric, or math when you know the captcha format improves worker accuracy.
AntiCaptcha only supports numeric values 0-2. Values 3 or 4 are treated as 0 when routed to AntiCaptcha.
Supported Providers
| Provider | Price per 1,000 | Routing |
|---|---|---|
| $0.50 - $1.00 | ||
| $0.70 | ||
| $0.35 |
Request Schema
| Field | Type | Required | Description |
|---|---|---|---|
clientKey* | string | Yes | Your API key. Create one in the [AnySolver dashboard](/dashboard/api-keys). Example: |
task* | object | Yes | The task body. Required fields depend on the task type. See [Tasks](/docs/tasks) for per-task schemas. View task properties |
provider | No | Specific provider to use. If omitted, automatic routing selects the best provider. Example: | |
selectionMode | No | Routing strategy for this request. Overrides the API key default. See [Routing Strategies](/docs/getting-started/routing-strategies). Example: | |
keyPoolMode | No | Which provider key pool to use: `all` (default, uses AnySolver-managed keys and your own) or `platformOnly` (AnySolver-managed keys only). See [Key Pool Mode](/docs/getting-started/routing-strategies#key-pool-mode). Example: |
Task Object Properties
The task field accepts an object with the following properties:
| Field | Type | Required | Description |
|---|---|---|---|
type* | Yes | ||
imageBase64* | unknown | Yes | Base64-encoded captcha image that a human worker will read and transcribe. Example: |
websiteURL* | string | Yes | Page URL where the captcha appears. Provides context for the worker. Example: |
comment | string | No | Text instruction for the worker describing what to enter, for example enter only the red characters or ignore the strikethrough text. Example: |
imgInstructions | unknown | No | Separate base64-encoded instruction image shown alongside the captcha as a visual reference. Use when the captcha format is unusual and workers need an example of what to look for. |
phrase | boolean | No | When true, the answer must contain at least two words separated by a space. |
caseSensitive | boolean | No | When true, workers must preserve upper and lowercase exactly as shown in the image. |
numeric | number | No | Expected character types in the answer. 0 = no preference, 1 = numbers only, 2 = letters only, 3 = numbers or letters only (no special characters), 4 = must contain both numbers and letters. Example: |
math | boolean | No | When true, the captcha shows a math expression and the worker returns the calculated result (e.g. 2+6= returns 8). |
minLength | number | No | Minimum expected answer length. 0 means no constraint. Example: |
maxLength | number | No | Maximum expected answer length. 0 means no constraint. Example: |
languagePool | string | No | Routes the task to a worker pool by language. Common values: en for English, rn for Russia/Ukraine/Belarus/Kazakhstan. Example: |
{ "clientKey": "your-api-key-from-dashboard", "task": { "type": "HumanRecognition", "imageBase64": "/9j/4AAQSkZJRgABA...", "websiteURL": "https://example.com/login" }}Optional fields are not guaranteed across providers
Response Schema
| Field | Type | Required | Description |
|---|---|---|---|
status* | Yes | Task status: "processing", "ready", or "failed". Example: | |
errorId* | Yes | 0 = success, 1 = external error, 2 = internal error. Example: | |
taskId | string | No | Unique identifier returned when the task was created. Example: |
errorCode | No | Machine-readable error code. Example: | |
errorDescription | string | No | Human-readable error message with resolution hints. Example: |
cost | number | No | Actual cost charged for this task in USD. Example: |
taskType | No | The type of CAPTCHA task to solve. Example: | |
provider | No | Specific provider to use. If omitted, automatic routing selects the best provider. Example: | |
solution | object | No |
Solution Object Properties
The solution field contains an object with the following properties:
| Field | Type | Required | Description |
|---|---|---|---|
text* | string | Yes | Text from the captcha image as entered by the human worker. Example: |
raw* | Record<string, unknown> | Yes | Raw provider response data for advanced use cases. |