funsolver

Documentation

API reference and integration guide

FunCaptcha

Price per 1000 successful solves:$1.40 / 1k

createTask body

JSON
{
  "clientKey": "fsk_your_api_key_here",
  "task": {
    "type": "FunCaptchaTask",
    "websiteURL": "https://account.battle.net/recovery/ru/identify-account.html",
    "websitePublicKey": "9C3260E3-AD4C-6719-E0A9-56D21BFB0BCD",
    "proxy": "http://user:pass@host:port",
    "funcaptchaApiJSSubdomain": "blizzard-api.arkoselabs.com"
  }
}

task parameters

type
stringrequired
"FunCaptchaTask"
websiteURL
stringrequired
URL of the page where the captcha is shown.
websitePublicKey
stringrequired
FunCaptcha site key (also called publicKey).
proxy
stringrequired
Proxy as http://user:pass@host:port. Supported schemes: http, https, socks5.
funcaptchaApiJSSubdomain
string
api.js subdomain (e.g. blizzard-api.arkoselabs.com). Optional — auto-selected when omitted.
data
string
The trigger data. Either a raw blob string or "{"blob":"..."}". Required only for some sites (see cards below).
userAgent
string
UA used while solving. Picked from the pool when omitted.
cookies
string | object
Site cookies. A "name=val; name2=val2" string or {"name":"val"} object. Required for Uber to get a stable 0-wave solve.

Known integrations

If you target one of these sites, just copy the ready createTask body. Configuration for known sitekeys is applied automatically.

Full example (Python)

python
import requests, time

API = "https://api.funsolver.com"
KEY = "fsk_your_api_key_here"

create = requests.post(f"{API}/createTask", json={
    "clientKey": KEY,
    "task": {
        "type": "FunCaptchaTask",
        "websiteURL": "https://account.battle.net/recovery/ru/identify-account.html",
        "websitePublicKey": "9C3260E3-AD4C-6719-E0A9-56D21BFB0BCD",
        "proxy": "http://user:pass@host:port",
    },
}).json()
task_id = create["taskId"]

while True:
    r = requests.post(f"{API}/getTaskResult", json={"clientKey": KEY, "taskId": task_id}).json()
    if r.get("status") == "ready":
        print("token:", r["solution"]["token"])
        break
    if r.get("errorId"):
        raise RuntimeError(r["errorCode"], r.get("errorDescription"))
    time.sleep(1.5)
Spotted an error? Tell support.
For AI agents: machine-readable reference — /llms.txt