ReCAPTCHA Image (Phone)
Overview
Solve Recaptcha with ultra-fast speed, top 1 accuracy in the market. We provide services to solve all types of ReCaptcha Image on phones.
📱
This service allows you to send captcha images and receive indices of cells to click to solve the captcha.

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 | ReCaptchaPhoneTask |
task.subType | string | yes | Value equals 0 |
task.image | string | yes | Captcha image in base64 format, capture the captcha image display area (no border, only small square cells) |
task.other | string | yes | Question|Grid count • Question: "cars" (only take text from bold part) • Grid count: 3 (or 4, 5) → other: "cars|4" |
Request Example
POST /createTask HTTP/1.1
Host: api.achicaptcha.com
Content-Type: application/json
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "ReCaptchaPhoneTask",
"subType": "0",
"image": "iVBORw0KGgoAAAANSUhEUgAA...(base64 encoded image)",
"other": "cars|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: For type "grid", solution is a list of image indices to click, starting from 0
Status Explanation
errorId = 0andstatus = ready: Successfully solved, read result insolutionerrorId = 0andstatus = processing: Solving captcha, wait 2-3 seconds and try againerrorId > 0: System error, returns error code and description
Integration Examples
import requests
import time
def solve_recaptcha_phone(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': 'ReCaptchaPhoneTask',
'subType': '0',
'image': image_base64,
'other': f'{question}|{grid_count}'
}
}
response = requests.post(create_task_url, json=create_task_payload)
result = response.json()
if result['errorId'] != 0:
raise Exception(result['errorDescription'])
task_id = result['taskId']
# Step 2: Get result
get_result_url = 'https://api.achicaptcha.com/getTaskResult'
while True:
time.sleep(2) # Wait 2-3 seconds
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'] > 0:
raise Exception(result['errorDescription'])
if result['status'] == 'ready':
return result['solution'] # Returns "0,5,9" - indices to click
# If status == 'processing', continue loop
# Usage
image_base64 = 'iVBORw0KGgoAAAANSUhEUgAA...' # Base64 encoded captcha image
question = 'cars' # Text from bold part
grid_count = 4 # Grid count (3, 4, or 5)
solution = solve_recaptcha_phone(image_base64, question, grid_count, 'YOUR_API_KEY')
print('Grid indices to click:', solution) # Example: "0,5,9"
# Use solution to click corresponding cells
indices = [int(i) for i in solution.split(',')]
for index in indices:
# Click cell with corresponding index
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 the captcha image display area clearly, without borders or other UI elements
- Only include small square cells (grid) of the captcha
- Image in base64 format
- Ensure image has sufficient resolution for recognition
2. Determine Accurate Information
- Get question from bold text part of captcha (example: "cars", "traffic lights")
- Determine correct grid count (3x3, 4x4, or 5x5)
- Format
othercorrectly: "question|grid_count" (example: "cars|4")
3. Polling Interval
- Wait at least 2-3 seconds between result checks
- Don't spam API with too many consecutive requests
- Set timeout to avoid infinite loops (recommended 120 seconds)
4. Process Results
- Solution returned is a string of indices to click, separated by commas (example: "0,5,9")
- Index starts from 0, counting from left to right, top to bottom
- Parse string and click 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
- Don't hardcode API key in code
- Use environment variables
- Don't expose API key on client-side
Useful links: