Skip to content
API
Funcaptcha

Funcaptcha Image

Overview

FunCaptcha (also known as Arkose Labs Captcha) is an interactive captcha type that requires users to perform actions such as rotating images, dragging and dropping objects to solve challenges. It is used by many major websites such as Roblox, Epic Games, Outlook, etc.

🎮

FunCaptcha is designed to both protect against bots and create a "fun" experience for users through interactive mini-games.

FunCaptcha FunCaptcha FunCaptcha

1. Create Task

Request

POST https://api.achicaptcha.com/createTask

Parameters

Parameter NameData TypeRequired?Description
clientKeystringyesApi key
task.typestringyesFuncaptchaImageTask
task.subTypestringyesValue equals 1
task.imagestringyesBase64 of image
task.otherstringyesQuestion
Example: "Use the arrows to rotate the object to face in the direction of the hand"

Request Example

POST /createTask HTTP/1.1
Host: api.achicaptcha.com
Content-Type: application/json
 
{
  "clientKey": "YOUR_API_KEY",
  "task": {
    "type": "FuncaptchaImageTask",
    "subType": "1",
    "image": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBD...",
    "other": "Use the arrows to rotate the object to face in the direction of the hand"
  }
}

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 NameData TypeRequired?Description
clientKeystringyesApi key
taskIdstringyesTaskId 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": "1" // Image index to click (Starting from 0)
}

Status Explanation

  • errorId = 0 and status = ready: Successfully solved, read result in solution.answer (array of image indices)
  • errorId = 0 and status = processing: Solving captcha, wait 2 seconds and try again
  • errorId > 0: System error, returns error code and error description

Integration Examples

import requests
import time
 
def solve_funcaptcha_image(image_base64, question, 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': 'FuncaptchaImageTask',
            'subType': '1',
            'image': image_base64,
            'other': question
        }
    }
    
    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 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']
        
        # If status == 'processing', continue loop
 
# Usage
image_base64 = '/9j/4AAQSkZJRgABAQAAAQABAAD/2wBD...'  # Base64 of image
question = 'Use the arrows to rotate the object to face in the direction of the hand'
solution = solve_funcaptcha_image(image_base64, question, 'YOUR_API_KEY')
print('FunCaptcha solution:', solution)

Common Error Codes

Error CodeDescriptionNotes
0successSuccess
1processingProcessing
2missing required fieldsMissing required fields, check parameters again
3task not supportedTask type not supported
4task creation failedTask creation failed
5client key does not existAPI key does not exist, check API key again
6insufficient account balanceInsufficient account balance, add more credits
7task failed, please create a new taskTask failed, please create a new task
8task ID does not existTask ID does not exist

Best Practices

For best results when using Achicaptcha API for FunCaptcha Image, follow these principles:

1. Base64 Image Processing

  • Only accepts a single image. For phone users, merge into one large image before sending
  • Ensure image is properly encoded in Base64 format
  • Remove prefix data:image/...;base64, if present
  • Check that image size is reasonable (not too large)

2. Question

  • Provide the exact question from FunCaptcha challenge
  • The question helps the system better understand the challenge type
  • Example: "Use the arrows to rotate the object to face in the direction of the hand"

3. Polling Interval

  • Wait at least 2 seconds between result checks
  • Don't spam API with too many consecutive requests
  • Set a timeout to avoid infinite loops (recommended 60 seconds for image tasks)

4. Result Processing

  • Result returned is a single number (index starting from 0)
  • Use this result to submit to FunCaptcha

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: