Switching from CapSolver, Anti-Captcha or CapMonster
Code written against the createTask / getTaskResult API
that CapSolver, Anti-Captcha, CapMonster Cloud and 2Captcha's API v2 share runs here. Use
https://api.nonecap.com/compat/capsolver,
/compat/anticaptcha or /compat/capmonster (the same
endpoint under three names) with your NoneCap API key as
clientKey. It accepts the HCaptchaTask and
HCaptchaTaskProxyless task types with websiteURL,
websiteKey, enterprisePayload.rqdata (or CapMonster's
data), userAgent and either vendor's proxy fields; any
other task type answers ERROR_TASK_NOT_SUPPORTED at once. The solution carries
gRecaptchaResponse, token,
respKey, captchaKey and userAgent,
so each vendor's client finds its own field. getBalance answers in credits.
# pip install capsolver
import capsolver
capsolver.api_key = "nc_live_••••"
capsolver.api_base = "https://api.nonecap.com/compat/capsolver"
solution = capsolver.solve({
"type": "HCaptchaTaskProxyLess",
"websiteURL": "https://example.com/login",
"websiteKey": "…",
})
print(solution["gRecaptchaResponse"]) # the hCaptcha token
The official capsolver Python package takes the base URL in
capsolver.api_base (or the CAPSOLVER_API_BASE variable).
Anti-Captcha's and CapSolver's Node packages hardcode their hosts, so Node code calls the two URLs directly:
curl https://api.nonecap.com/compat/anticaptcha/createTask \
-H "Content-Type: application/json" \
-d '{"clientKey": "nc_live_••••", "task": {"type": "HCaptchaTaskProxyless", "websiteURL": "https://example.com/login", "websiteKey": "…"}}'
# → {"errorId":0,"taskId":"solve_…","status":"idle"}
curl https://api.nonecap.com/compat/anticaptcha/getTaskResult \
-H "Content-Type: application/json" \
-d '{"clientKey": "nc_live_••••", "taskId": "solve_…"}'
# → {"errorId":0,"status":"processing"} until {"errorId":0,"status":"ready","solution":{"gRecaptchaResponse":"P1_…","respKey":"…","userAgent":"…"}}