Migrate from Anti-Captcha, 2Captcha or CapSolver
Move an existing integration by changing the host: what stays the same and what to adjust for Anti-Captcha, 2Captcha and CapSolver.
이 섹션은 영어로 표시됩니다.
The API speaks the Anti-Captcha JSON protocol and the 2Captcha in.php / res.php protocol. In most cases you replace the host and the key — and the rest of the code stays as it is.
| Coming from | Old host | New host | What else |
|---|---|---|---|
| Anti-Captcha | api.anti-captcha.com | neurocaptcha.com | nothing: same methods, fields and error ids |
| 2Captcha, RuCaptcha | 2captcha.com, rucaptcha.com | neurocaptcha.com | in.php / res.php — see 2Captcha compatibility |
| CapSolver | api.capsolver.com | neurocaptcha.com | rename task types, split the proxy string — below |
Anti-Captcha#
Replace https://api.anti-captcha.com with https://neurocaptcha.com. createTask, getTaskResult, getBalance, getQueueStats, getSpendingStats, reportIncorrectRecaptcha and reportCorrectRecaptcha take the same fields (clientKey, task, softId, callbackUrl) and return the same answers. Error ids follow the Anti-Captcha registry.
https://api.anti-captcha.com/createTask
https://neurocaptcha.com/createTaskNoCaptchaTaskandNoCaptchaTaskProxylessare accepted as aliases ofRecaptchaV2TaskandRecaptchaV2TaskProxyless.languagePoolis accepted and ignored.reportIncorrectImageCaptchaanswersERROR_NO_SUCH_CAPCHA_ID: there are no image tasks.- getQueueStats knows queues 5, 6, 18, 19 and 20.
- Webhooks to
callbackUrlare signed — see Webhooks. - If an SDK keeps the host in a constant without a setting, call the HTTP API directly — it is two requests, see examples.
2Captcha and RuCaptcha#
Replace 2captcha.com (or rucaptcha.com) with neurocaptcha.com in the in.php and res.php addresses. Keep key, method=userrecaptcha and the other parameters.
https://2captcha.com/in.php?key=…&method=userrecaptcha&googlekey=…&pageurl=…
https://neurocaptcha.com/in.php?key=…&method=userrecaptcha&googlekey=…&pageurl=…Many client libraries let you set the host — for example, the official 2Captcha Python library takes it as server:
from twocaptcha import TwoCaptcha
solver = TwoCaptcha("YOUR_API_KEY", server="neurocaptcha.com")
result = solver.recaptcha(sitekey="6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-", url="https://www.google.com/recaptcha/api2/demo")
print(result["code"])Only reCAPTCHA is supported (method=userrecaptcha: v2, invisible v2, v3, Enterprise). Other methods answer ERROR_BAD_PARAMETERS.
CapSolver#
CapSolver uses the same createTask → getTaskResult flow. Change api.capsolver.com to neurocaptcha.com and adjust a few details. Task type names differ in letter case:
| CapSolver | NeuroCaptcha |
|---|---|
ReCaptchaV2TaskProxyLess | RecaptchaV2TaskProxyless |
ReCaptchaV2Task | RecaptchaV2Task |
ReCaptchaV2EnterpriseTaskProxyLess | RecaptchaV2EnterpriseTaskProxyless |
ReCaptchaV2EnterpriseTask | RecaptchaV2EnterpriseTask |
ReCaptchaV3TaskProxyLess | RecaptchaV3TaskProxyless |
ReCaptchaV3EnterpriseTaskProxyLess | RecaptchaV3EnterpriseTaskProxyless |
ReCaptchaV3EnterpriseTask | RecaptchaV3EnterpriseTask |
ReCaptchaV3Task | RecaptchaV3TaskProxyless (without proxy) or RecaptchaV3EnterpriseTask |
- Proxy: instead of one
proxystring (type:host:port:login:password) passproxyType,proxyAddress,proxyPort,proxyLoginandproxyPassword. - Errors: every answer is HTTP 200 — check
errorId != 0anderrorCode, not the HTTP status. - taskId is an integer. Send it back as a number, not as a string.
- appId →
softId(an integer from the developer program). - feedbackTask → reportIncorrectRecaptcha / reportCorrectRecaptcha.
- getToken (synchronous) is not available: use
createTask+getTaskResultor a webhook.
Checklist#
- Create a test key and run your integration against
https://neurocaptcha.com— test tasks are free. - Check the task type names against the list.
- Make sure any
errorIdother than 0 is handled as an error, andERROR_NO_SLOT_AVAILABLE/ERROR_TOO_MUCH_REQUESTSare retried with a pause. - Switch to a live key and top up the balance.