Skip to content
../products
FunCaptcha (Arkose Labs)FunCaptchaTaskProxyLess

FunCaptcha (Arkose Labs) Solver, solved in 20.0s.

Solve Arkose Labs FunCaptcha puzzles — rotation, matching, and image selection challenges.

$4.00per 1,000
~20.0savg solve
99%+success
3/mthroughput
websiteKey: 69A21A01-CC7B-B9C6-0F9A-E7FA…0.00s
POST/createTask type=FunCaptchaTaskProxyLess
taskId tsk_4u4gjolf
POLL/getTaskResult status=processing
status ready
token 0xfae86e93c08ff...
type: FunCaptchaTaskProxyLess● running on production solvers

What is FunCaptcha (Arkose Labs)?

FunCaptcha (by Arkose Labs) presents interactive puzzles: rotating 3D objects to match a target, selecting matching images, or identifying objects in scenes. FunCaptcha is considered one of the harder captchas to solve automatically due to its visual complexity.

How it works

1

Send Task

POST your FunCaptchaTaskProxyLess with the target URL and sitekey to our API. We'll queue it instantly.

2

We Solve

Capzy's proprietary solver returns valid FunCaptcha tokens for rotation, matching, and selection puzzles. Designed for authorized testing and automation.

3

Get Token

Poll getTaskResult — when status is 'ready', the solution contains the token to inject into the target page.

Quick integration

solve.py
import requests, time

API = "https://api.capzy.ai"
KEY = "capzy_your_key_here"

# Step 1: Create task
task = requests.post(f"{API}/createTask", json={
    "clientKey": KEY,
    "task": {
        "type": "FunCaptchaTaskProxyLess",
        "websiteKey": "69A21A01-CC7B-B9C6-0F9A-E7FA06677FFC",
        "websiteURL": "https://example.com"
    }
}).json()

task_id = task["taskId"]
print(f"Task created: {task_id}")

# Step 2: Poll for result
while True:
    result = requests.post(f"{API}/getTaskResult", json={
        "clientKey": KEY,
        "taskId": task_id
    }).json()

    if result["status"] == "ready":
        print("Solved!", result["solution"])
        break
    elif result["status"] == "failed":
        print("Failed:", result.get("errorDescription"))
        break

    time.sleep(1)

# Step 3: Use the result — paste the token into the site's captcha form field
token = result["solution"]["token"]
# Browser side: set the textarea value or the hidden input. Then submit.
# Server-to-server: post the token alongside the form fields you normally send.
resp = requests.post("https://target.example.com/submit", data={
    "username": "...",
    "captcha_response": token,   # <-- replace with the field name your site uses
})
print(resp.status_code)

Using your own proxy

Use FunCaptchaTask instead of FunCaptchaTaskProxyLess to route the solve through your own proxy. This is useful when the target site checks the IP that solved the captcha matches the IP submitting the form.

solve_proxy.py
import requests, time

API = "https://api.capzy.ai"
KEY = "capzy_your_key_here"

# Step 1: Create task
task = requests.post(f"{API}/createTask", json={
    "clientKey": KEY,
    "task": {
        "type": "FunCaptchaTask",
        "proxyPort": "8080",
        "proxyType": "http",
        "proxyLogin": "user",
        "websiteKey": "69A21A01-CC7B-B9C6-0F9A-E7FA06677FFC",
        "websiteURL": "https://example.com",
        "proxyAddress": "123.45.67.89",
        "proxyPassword": "pass"
    }
}).json()

task_id = task["taskId"]
print(f"Task created: {task_id}")

# Step 2: Poll for result
while True:
    result = requests.post(f"{API}/getTaskResult", json={
        "clientKey": KEY,
        "taskId": task_id
    }).json()

    if result["status"] == "ready":
        print("Solved!", result["solution"])
        break
    elif result["status"] == "failed":
        print("Failed:", result.get("errorDescription"))
        break

    time.sleep(1)

# Step 3: Use the result — paste the token into the site's captcha form field
token = result["solution"]["token"]
# Browser side: set the textarea value or the hidden input. Then submit.
# Server-to-server: post the token alongside the form fields you normally send.
resp = requests.post("https://target.example.com/submit", data={
    "username": "...",
    "captcha_response": token,   # <-- replace with the field name your site uses
})
print(resp.status_code)

additional proxy parameters

proxyTypetypestringreqyesProxy protocol: http or https
proxyAddresstypestringreqyesProxy IP address or hostname
proxyPorttypenumberreqyesProxy port number
proxyLogintypestringreqnoProxy username (if auth required)
proxyPasswordtypestringreqnoProxy password (if auth required)
userAgenttypestringreqnoUser-Agent string to use. Must match the UA you use when submitting the token

Task parameters

typetypestringreqyesFunCaptchaTaskProxyLess or FunCaptchaTask
websiteURLtypestringreqyesThe page URL
websiteKeytypestringreqyesThe public key (found in the FunCaptcha init call)
subdomaintypestringreqnoCustom API subdomain if the site uses one

Solution response

tokentypestringThe solved FunCaptcha token

Example response

Full getTaskResult response shape. The fields in the table above describe what's inside solution — the outer envelope (errorId, status) is identical for every captcha type.

{
  "errorId": 0,
  "status": "ready",
  "solution": {
    "token": "5e98aaef3c70d7e7f.7732870915|r=us-west-2|metabgclr=transparent|..."
  }
}

Error response

Failures use the same envelope with errorId: 1 plus errorCode + errorDescription. See the error-code reference for the full list.

{
  "errorId": 1,
  "errorCode": "ERROR_CAPTCHA_UNSOLVABLE",
  "errorDescription": "Solver gave up — automatically refunded."
}

Pending response

While the solver is still working, getTaskResult returns status: "processing". Poll every 1–2 seconds until ready or failed.

{
  "errorId": 0,
  "status": "processing"
}

Features

Rotation, matching, and selection puzzles
Standard + Enterprise variants
ML-powered image classification
Supports custom API subdomains
Proxy support for IP-sensitive deployments
High accuracy on standard challenge types

task types

proxyless: FunCaptchaTaskProxyLess

with proxy: FunCaptchaTask

Frequently asked questions

start solving funcaptcha (arkose labs).

$0.10 in free credits — no card. ~250 free solves to test before you spend.