funsolver

Documentation

API reference and integration guide

reCAPTCHA v2 Enterprise

For Enterprise keys: the site loads enterprise.js and calls /recaptcha/enterprise/…. Checkbox or invisible, returns g-recaptcha-response. The token lives ~2 minutes — solve right before submitting the form.

Price per 1000 successful solves:$1.00 / 1k

task parameters

HTTP
POST https://api.funsolver.com/createTask
Content-Type: application/json

{
  "clientKey": "fsk_abc...",
  "task": {
    "type": "RecaptchaV2EnterpriseTask",
    "websiteURL": "https://example.com/login",
    "websiteKey": "6Lc_aCMTAAAAA...",
    "proxy": "http://user:pass@residential-host:port"
  }
}
type
stringrequired
"RecaptchaV2EnterpriseTask"
websiteURL
stringrequired
Full URL of the page hosting the captcha. The token binds to its domain.
websiteKey
stringrequired
Widget site key (the data-sitekey attribute or the k parameter of the /anchor request). websitePublicKey is accepted too.
proxy
stringrequired
Residential proxy: http://user:pass@host:port, socks5://user:pass@host:port, host:port:user:pass. The captcha is solved from the proxy IP.
isInvisible
bool
true for invisible reCAPTCHA.
pageAction
string
Value of the sa parameter of the /recaptcha/enterprise/anchor request, if present.
enterprisePayload
object
Extra widget parameters. If /recaptcha/enterprise/anchor has s, pass {"s": "<value>"}.
apiDomain
string
Domain the site loads the captcha from: www.google.com (default) or www.recaptcha.net.

Finding the parameters

Open the page, DevTools → Network, filter anchor. In the https://www.google.com/recaptcha/enterprise/anchor?… request:

k=...websiteKey
size=invisibleisInvisible: true
sa=...pageAction
s=...enterprisePayload.s
host www.recaptcha.netapiDomain: "www.recaptcha.net"

getTaskResult response

JSON
{
  "errorId": 0,
  "status": "ready",
  "solution": {
    "token":     "03AGdBq25...",
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/152.0.0.0 Safari/537.36"
  },
  "processingTime": 8.7
}

solution.token is the g-recaptcha-response value: put it into the form field (or pass it to the widget callback) and submit. solution.userAgent is the User-Agent the captcha was solved under: submit the form with this User-Agent through the same proxy.

Errors

ERROR_PROXY_REQUIREDproxy is missing.
ERROR_PROXY_FORMATProxy format is not recognised — check it.
ERROR_PROXY_UNREACHABLECould not connect through the proxy — check it or use another one.
ERROR_PROXY_BLOCKEDGoogle refused the check from the proxy IP ("automated queries") — rotate the IP.
ERROR_RECAPTCHA_INVALID_SITEKEYInvalid websiteKey. For an Enterprise key use RecaptchaV2EnterpriseTask.
ERROR_RECAPTCHA_INVALID_DOMAINThe key is not allowed on the websiteURL domain — pass the URL of the page that hosts the captcha.
ERROR_CAPTCHA_UNSOLVABLECould not solve in time — retry the task.
ERROR_SOLVER_UNAVAILABLESolvers are overloaded — retry in a few seconds.

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": "RecaptchaV2EnterpriseTask",
        "websiteURL": "https://example.com/login",
        "websiteKey": "6Lc_aCMTAAAAA...",
        "proxy": "http://user:pass@residential-host:port",
        # "isInvisible": True,
        # "enterprisePayload": {"s": "..."},
    },
}).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":
        token, ua = r["solution"]["token"], r["solution"]["userAgent"]
        print("g-recaptcha-response:", token)
        break
    if r.get("errorId"):
        raise RuntimeError(r["errorCode"], r.get("errorDescription"))
    time.sleep(2)
Spotted an error? Tell support.
For AI agents: machine-readable reference — /llms.txt