Reference

API Endpoint Mapping: CaptchaAI vs Competitors

Switching CAPTCHA solving providers shouldn't require rewriting your integration. This reference maps CaptchaAI's API endpoints, parameters, and responses against 2Captcha, Anti-Captcha, and CapMonster Cloud — so you know exactly what to change.


Base URLs

Provider Submit endpoint Result endpoint
CaptchaAI https://ocr.captchaai.com/in.php https://ocr.captchaai.com/res.php
2Captcha https://2captcha.com/in.php https://2captcha.com/res.php
Anti-Captcha https://api.anti-captcha.com/createTask https://api.anti-captcha.com/getTaskResult
CapMonster Cloud https://api.capmonster.cloud/createTask https://api.capmonster.cloud/getTaskResult

CaptchaAI uses the same URL structure as 2Captcha. Migrating from 2Captcha requires only changing the domain.


API style

Provider API style Content type Auth
CaptchaAI Form/query params application/x-www-form-urlencoded key param
2Captcha Form/query params application/x-www-form-urlencoded key param
Anti-Captcha JSON body application/json clientKey in body
CapMonster Cloud JSON body application/json clientKey in body

reCAPTCHA v2

CaptchaAI / 2Captcha

POST /in.php
  key=API_KEY
  method=userrecaptcha
  googlekey=SITE_KEY
  pageurl=PAGE_URL
  json=1

Anti-Captcha / CapMonster

POST /createTask
{
  "clientKey": "API_KEY",
  "task": {
    "type": "RecaptchaV2TaskProxyless",
    "websiteURL": "PAGE_URL",
    "websiteKey": "SITE_KEY"
  }
}

Parameter mapping

CaptchaAI Anti-Captcha/CapMonster Description
key clientKey API key
method=userrecaptcha type=RecaptchaV2TaskProxyless Task type
googlekey websiteKey reCAPTCHA sitekey
pageurl websiteURL Target page URL
invisible=1 isInvisible: true Invisible reCAPTCHA
enterprise=1 type=RecaptchaV2EnterpriseTaskProxyless Enterprise flag

reCAPTCHA v3

CaptchaAI / 2Captcha

POST /in.php
  key=API_KEY
  method=userrecaptcha
  googlekey=SITE_KEY
  pageurl=PAGE_URL
  version=v3
  action=verify
  min_score=0.7

Anti-Captcha / CapMonster

{
  "clientKey": "API_KEY",
  "task": {
    "type": "RecaptchaV3TaskProxyless",
    "websiteURL": "PAGE_URL",
    "websiteKey": "SITE_KEY",
    "minScore": 0.7,
    "pageAction": "verify"
  }
}

Cloudflare Turnstile

CaptchaAI

POST /in.php
  key=API_KEY
  method=turnstile
  sitekey=SITE_KEY
  pageurl=PAGE_URL

Anti-Captcha

{
  "clientKey": "API_KEY",
  "task": {
    "type": "TurnstileTaskProxyless",
    "websiteURL": "PAGE_URL",
    "websiteKey": "SITE_KEY"
  }
}

hCaptcha

CaptchaAI / 2Captcha

POST /in.php
  key=API_KEY
  method=hcaptcha
  sitekey=SITE_KEY
  pageurl=PAGE_URL

Anti-Captcha

{
  "clientKey": "API_KEY",
  "task": {
    "type": "HCaptchaTaskProxyless",
    "websiteURL": "PAGE_URL",
    "websiteKey": "SITE_KEY"
  }
}

GeeTest v3

CaptchaAI / 2Captcha

POST /in.php
  key=API_KEY
  method=geetest
  gt=GT_VALUE
  challenge=CHALLENGE_VALUE
  pageurl=PAGE_URL

Anti-Captcha

{
  "clientKey": "API_KEY",
  "task": {
    "type": "GeeTestTaskProxyless",
    "websiteURL": "PAGE_URL",
    "gt": "GT_VALUE",
    "challenge": "CHALLENGE_VALUE"
  }
}

Image CAPTCHA

CaptchaAI / 2Captcha

POST /in.php
  key=API_KEY
  method=base64
  body=BASE64_IMAGE

Anti-Captcha

{
  "clientKey": "API_KEY",
  "task": {
    "type": "ImageToTextTask",
    "body": "BASE64_IMAGE"
  }
}

Polling for results

CaptchaAI / 2Captcha

GET /res.php?key=API_KEY&action=get&id=TASK_ID&json=1

Response: {"status":1,"request":"TOKEN"}
Not ready: {"status":0,"request":"CAPCHA_NOT_READY"}

Anti-Captcha / CapMonster

POST /getTaskResult
{
  "clientKey": "API_KEY",
  "taskId": 123456
}

Response: {"status":"ready","solution":{"gRecaptchaResponse":"TOKEN"}}
Not ready: {"status":"processing"}

Balance check

Provider Endpoint Response
CaptchaAI GET /res.php?key=KEY&action=getbalance 12.345
2Captcha GET /res.php?key=KEY&action=getbalance 12.345
Anti-Captcha POST /getBalance {"clientKey":"KEY"} {"balance":12.345}
CapMonster POST /getBalance {"clientKey":"KEY"} {"balance":12.345}

Error codes

Scenario CaptchaAI / 2Captcha Anti-Captcha
Wrong API key ERROR_WRONG_USER_KEY ERROR_KEY_DOES_NOT_EXIST
Zero balance ERROR_ZERO_BALANCE ERROR_ZERO_BALANCE
Bad sitekey ERROR_WRONG_GOOGLEKEY ERROR_RECAPTCHA_INVALID_SITEKEY
Not ready CAPCHA_NOT_READY status: "processing"
Rate limited ERROR_TOO_MUCH_REQUESTS ERROR_TOO_MUCH_REQUESTS

Migration checklist

  • [ ] Change base URL to ocr.captchaai.com
  • [ ] Update API key
  • [ ] If migrating from Anti-Captcha/CapMonster: convert JSON body to form params
  • [ ] Replace clientKey with key
  • [ ] Replace task type with method
  • [ ] Update polling to use GET instead of POST (if from Anti-Captcha)
  • [ ] Test with a single task before full migration

FAQ

Is CaptchaAI a drop-in replacement for 2Captcha?

Nearly. Change 2captcha.com to ocr.captchaai.com in your base URL and update your API key. The parameter names and response format are identical.

Do existing 2Captcha libraries work with CaptchaAI?

Yes. Most 2Captcha client libraries let you override the base URL. Set it to https://ocr.captchaai.com and they work without code changes.


Switch to CaptchaAI with minimal code changes

Get your API key at captchaai.com.


Discussions (0)

No comments yet.