Documentation
API reference and integration guide
OverviewFunCaptchaFunCaptcha ProxylessFunCaptcha BDACastlereCAPTCHA v2reCAPTCHA v2 EnterprisereCAPTCHA v3reCAPTCHA v3 EnterpriseTurnstilehCaptchaCloudflareImage→TextMath ImageFC ClassificationDataDome
reCAPTCHA v2
Solves the “I'm not a robot” checkbox and invisible reCAPTCHA v2 (isInvisible). Returns g-recaptcha-response. The token lives ~2 minutes — solve right before submitting the form.
Price per 1000 successful solves:$0.90 / 1k
task parameters
HTTP
POST https://api.funsolver.com/createTask
Content-Type: application/json
{
"clientKey": "fsk_abc...",
"task": {
"type": "RecaptchaV2Task",
"websiteURL": "https://example.com/login",
"websiteKey": "6Lc_aCMTAAAAA...",
"proxy": "http://user:pass@residential-host:port"
}
}typestringrequired
"RecaptchaV2Task"websiteURLstringrequired
Full URL of the page hosting the captcha. The token binds to its domain.
websiteKeystringrequired
Widget site key (the
data-sitekey attribute or the k parameter of the /anchor request). websitePublicKey is accepted too.proxystringrequired
Residential proxy:
http://user:pass@host:port, socks5://user:pass@host:port, host:port:user:pass. The captcha is solved from the proxy IP.isInvisiblebool
true for invisible reCAPTCHA.pageActionstring
Value of the
sa parameter of the /recaptcha/api2/anchor request, if present.recaptchaDataSValuestring
Value of the
s parameter of the /recaptcha/api2/anchor request, if present (the data-s attribute). Without it the token is rejected on such sites.apiDomainstring
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/api2/anchor?… request:
k=...websiteKeysize=invisibleisInvisible: truesa=...pageActions=...recaptchaDataSValuehost www.recaptcha.netapiDomain: "www.recaptcha.net"path /recaptcha/enterprise/anchorEnterprise: use RecaptchaV2EnterpriseTaskgetTaskResult 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": "RecaptchaV2Task",
"websiteURL": "https://example.com/login",
"websiteKey": "6Lc_aCMTAAAAA...",
"proxy": "http://user:pass@residential-host:port",
# "isInvisible": True,
# "recaptchaDataSValue": "...",
},
}).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