ReCAPTCHA Image
Overview
Solve ReCaptcha image challenges with ultra-fast speed and top accuracy. We support all types of ReCaptcha image challenges — both on browsers and phones.
Our browser extension automatically solves ReCaptcha image challenges for you. No manual work needed — just install and it handles everything in the background.
For API integration, send the captcha image and receive the indices of cells to click to solve the challenge.

1. Create Task
Request
POST https://api.achicaptcha.com/createTask
Parameters
| Parameter Name | Data Type | Required? | Description |
|---|---|---|---|
clientKey | string | yes | Api key |
task.type | string | yes | ComplexImageTask |
task.subType | string | yes | recaptcha |
task.image | string | yes | One or more captcha images in base64 format, separated by |. Capture only the grid area (no borders, no surrounding UI elements). Example: base64img1|base64img2 |
task.other | string | yes | Question|Grid count • Question: full question text shown in the captcha prompt (e.g. Select all images with a bus)• Grid count: number of columns/rows (3, 4, or 5) → example: "Select all images with a bus|4" |
Request Example
POST /createTask HTTP/1.1
Host: api.achicaptcha.com
Content-Type: application/json
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "ComplexImageTask",
"subType": "recaptcha",
"image": "iVBORw0KGgoAAAANSUhEUgAA...(base64 encoded image)",
"other": "Select all images with a bus|4"
}
}Response
When successful, server returns errorId = 0 and taskId
{
"errorId": 0,
"taskId": "f2fc70d6-c76b-4fba-9480-205ac1fe9fb9"
}2. Get Result
Request
POST https://api.achicaptcha.com/getTaskResult
Parameters
| Parameter Name | Data Type | Required? | Description |
|---|---|---|---|
clientKey | string | yes | Api key |
taskId | string | yes | TaskId obtained from (1) |
Request Example
POST /getTaskResult HTTP/1.1
Host: api.achicaptcha.com
Content-Type: application/json
{
"clientKey": "YOUR_API_KEY",
"taskId": "f2fc70d6-c76b-4fba-9480-205ac1fe9fb9"
}Response
{
"errorId": 0,
"status": "ready",
"solution": "0,5,9"
}Note: solution is a comma-separated list of cell indices to click, starting from 0, counted left-to-right, top-to-bottom.
Status Explanation
errorId = 0: Successfully solved, read result insolutionerrorId = 1: Still solving, wait 2–3 seconds and try againerrorId > 1: System error, returns error code and description
Integration Examples
import requests
import time
def solve_recaptcha_image(image_base64, question, grid_count, api_key='YOUR_API_KEY'):
# Step 1: Create task
create_task_url = 'https://api.achicaptcha.com/createTask'
create_task_payload = {
'clientKey': api_key,
'task': {
'type': 'ComplexImageTask',
'subType': 'recaptcha',
'image': image_base64,
'other': f'{question}|{grid_count}'
}
}
response = requests.post(create_task_url, json=create_task_payload)
result = response.json()
if result['errorId'] > 1:
raise Exception(result['errorDescription'])
task_id = result['taskId']
# Step 2: Poll for result
get_result_url = 'https://api.achicaptcha.com/getTaskResult'
while True:
time.sleep(2) # Wait 2–3 seconds between polls
get_result_payload = {
'clientKey': api_key,
'taskId': task_id
}
response = requests.post(get_result_url, json=get_result_payload)
result = response.json()
if result['errorId'] > 1:
raise Exception(result['errorDescription'])
if result['status'] == 'ready':
return result['solution'] # e.g. "0,5,9"
# status == 'processing' → keep polling
# Usage
image_base64 = 'iVBORw0KGgoAAAANSUhEUgAA...' # Base64 encoded captcha grid
question = 'Select all images with a bus' # Full question text from the captcha prompt
grid_count = 4 # Grid size (3, 4, or 5)
solution = solve_recaptcha_image(image_base64, question, grid_count, 'YOUR_API_KEY')
print('Indices to click:', solution) # e.g. "0,5,9"
# Click the corresponding cells
indices = [int(i) for i in solution.split(',')]
for index in indices:
print(f'Click cell index: {index}')Common Error Codes
| Error Code | Description | Notes |
|---|---|---|
| 0 | success | Success |
| 1 | processing | Processing |
| 2 | missing required fields | Missing required fields, check parameters again |
| 3 | task not supported | Task type not supported |
| 4 | task creation failed | Task creation failed |
| 5 | client key does not exist | API key does not exist, check API key again |
| 6 | insufficient account balance | Insufficient account balance, add more credits |
| 7 | task failed, please create a new task | Task failed, please create a new task |
| 8 | task ID does not exist | Task ID does not exist |
Best Practices
For best results when using Achicaptcha API, follow these principles:
1. Prepare Captcha Image
- Capture only the grid area — no borders, no surrounding UI elements
- Works for both browser and phone ReCaptcha grids
- Encode each image as base64 and concatenate multiple images with
|(e.g.base64img1|base64img2) - Ensure sufficient resolution for accurate recognition
2. Determine Accurate Information
- Use the full question text shown in the captcha prompt (e.g.
Select all images with a bus,Select all squares with traffic lights) - Determine the correct grid size: 3×3, 4×4, or 5×5
- Format
otheras"question|grid_count"(e.g."Select all images with a bus|4")
3. Polling Interval
- Wait at least 2–3 seconds between result checks
- Avoid sending too many consecutive requests
- Set a timeout to prevent infinite loops (recommended: 120 seconds)
4. Process Results
solutionis a comma-separated string of cell indices (e.g."0,5,9")- Index starts from 0, counted left-to-right, top-to-bottom
- Parse the string and click the corresponding cells
5. Retry Logic
- Implement retry for temporary errors like
ERROR_NO_SLOT_AVAILABLE - Use exponential backoff when retrying
- Limit maximum retry attempts
6. API Key Security
- Do not hardcode your API key in source code
- Use environment variables or a secrets manager
- Never expose your API key on the client side
Useful links: