Getting Started

Migrate from CapMonster Cloud to CaptchaAI

CaptchaAI uses a compatible API format that makes switching from CapMonster Cloud straightforward. Most migrations require only changing the base URL and API key. This guide covers the exact steps.


What changes

Component CapMonster Cloud CaptchaAI
Submit URL https://api.capmonster.cloud/createTask https://ocr.captchaai.com/in.php
Result URL https://api.capmonster.cloud/getTaskResult https://ocr.captchaai.com/res.php
API key param clientKey key
API format JSON body Form-encoded (or JSON)
Task ID field taskId request (in response)
Result field solution object request (token string)

Quick migration: Change two lines

If your code uses a wrapper or SDK, the fastest path is replacing the base URL and key:

# Before (CapMonster Cloud)
API_URL = "https://api.capmonster.cloud"
CLIENT_KEY = "your_capmonster_key"

# After (CaptchaAI)
SUBMIT_URL = "https://ocr.captchaai.com/in.php"
RESULT_URL = "https://ocr.captchaai.com/res.php"
API_KEY = "your_captchaai_key"

Full migration: reCAPTCHA v2

CapMonster Cloud (before)

import requests
import time

resp = requests.post("https://api.capmonster.cloud/createTask", json={
    "clientKey": "CAPMONSTER_KEY",
    "task": {
        "type": "RecaptchaV2TaskProxyless",
        "websiteURL": "https://example.com",
        "websiteKey": "6Le-SITEKEY",
    }
}).json()
task_id = resp["taskId"]

while True:
    time.sleep(5)
    result = requests.post("https://api.capmonster.cloud/getTaskResult", json={
        "clientKey": "CAPMONSTER_KEY",
        "taskId": task_id,
    }).json()
    if result["status"] == "ready":
        token = result["solution"]["gRecaptchaResponse"]
        break

CaptchaAI (after)

import requests
import time

resp = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": "YOUR_API_KEY",
    "method": "userrecaptcha",
    "googlekey": "6Le-SITEKEY",
    "pageurl": "https://example.com",
    "json": "1",
}).json()
task_id = resp["request"]

while True:
    time.sleep(5)
    result = requests.get("https://ocr.captchaai.com/res.php", params={
        "key": "YOUR_API_KEY",
        "action": "get",
        "id": task_id,
        "json": "1",
    }).json()
    if result["status"] == 1:
        token = result["request"]
        break
    if result["request"] != "CAPCHA_NOT_READY":
        raise Exception(result["request"])

Parameter mapping

reCAPTCHA v2

CapMonster Cloud CaptchaAI
task.type: "RecaptchaV2TaskProxyless" method: "userrecaptcha"
task.websiteKey googlekey
task.websiteURL pageurl
task.isInvisible: true invisible: "1"

Cloudflare Turnstile

CapMonster Cloud CaptchaAI
task.type: "TurnstileTaskProxyless" method: "turnstile"
task.websiteKey sitekey
task.websiteURL pageurl

Image CAPTCHA

CapMonster Cloud CaptchaAI
task.type: "ImageToTextTask" method: "base64"
task.body body

JavaScript migration

CapMonster Cloud (before)

const axios = require('axios');

const resp = await axios.post('https://api.capmonster.cloud/createTask', {
  clientKey: 'CAPMONSTER_KEY',
  task: {
    type: 'RecaptchaV2TaskProxyless',
    websiteURL: 'https://example.com',
    websiteKey: '6Le-SITEKEY',
  }
});
const taskId = resp.data.taskId;

CaptchaAI (after)

const axios = require('axios');

const resp = await axios.post('https://ocr.captchaai.com/in.php', null, {
  params: {
    key: 'YOUR_API_KEY',
    method: 'userrecaptcha',
    googlekey: '6Le-SITEKEY',
    pageurl: 'https://example.com',
    json: 1,
  }
});
const taskId = resp.data.request;

Error code mapping

CapMonster Cloud CaptchaAI equivalent
ERROR_KEY_DOES_NOT_EXIST ERROR_KEY_DOES_NOT_EXIST
ERROR_ZERO_BALANCE ERROR_ZERO_BALANCE
ERROR_RECAPTCHA_TIMEOUT ERROR_CAPTCHA_UNSOLVABLE
ERROR_NO_SLOT_AVAILABLE ERROR_NO_SLOT_AVAILABLE
CAPTCHA_NOT_READY CAPCHA_NOT_READY

Note the spelling difference: CaptchaAI uses CAPCHA_NOT_READY (no T).


Balance check

CapMonster Cloud

resp = requests.post("https://api.capmonster.cloud/getBalance", json={
    "clientKey": "CAPMONSTER_KEY"
}).json()
balance = resp["balance"]

CaptchaAI

resp = requests.get("https://ocr.captchaai.com/res.php", params={
    "key": "YOUR_API_KEY",
    "action": "getbalance",
    "json": "1",
}).json()
balance = float(resp["request"])

Migration checklist

  • [ ] Get CaptchaAI API key from captchaai.com
  • [ ] Replace submit URL: api.capmonster.cloud/createTaskocr.captchaai.com/in.php
  • [ ] Replace result URL: api.capmonster.cloud/getTaskResultocr.captchaai.com/res.php
  • [ ] Change auth: clientKeykey
  • [ ] Change request format: JSON task object → form-encoded parameters
  • [ ] Update response parsing: taskIdrequest, solution.gRecaptchaResponserequest
  • [ ] Update error handling: CAPTCHA_NOT_READYCAPCHA_NOT_READY
  • [ ] Test with a single solve before switching production traffic

FAQ

Is CaptchaAI a drop-in replacement for CapMonster Cloud?

The API format differs (form-encoded vs JSON), but the concepts are the same. The migration typically takes 15-30 minutes.

Can I run both services simultaneously during migration?

Yes. Route a percentage of traffic to CaptchaAI while keeping CapMonster Cloud as a fallback, then shift fully once you've validated results.


Switch to CaptchaAI and start solving in minutes

Get your API key at captchaai.com.


Discussions (0)

No comments yet.

Related Posts

Tutorials CAPTCHA Solving Fallback Chains
Implement fallback chains for CAPTCHA solving with Captcha AI.

Implement fallback chains for CAPTCHA solving with Captcha AI. Cascade through solver methods, proxy pools, an...

Python Automation Cloudflare Turnstile
Apr 06, 2026
Comparisons WebDriver vs Chrome DevTools Protocol for CAPTCHA Automation
Compare Web Driver and Chrome Dev Tools Protocol (CDP) for CAPTCHA automation — detection, performance, capabilities, and when to use each with Captcha AI.

Compare Web Driver and Chrome Dev Tools Protocol (CDP) for CAPTCHA automation — detection, performance, capabi...

Python Automation Cloudflare Turnstile
Mar 27, 2026
Use Cases Automated Form Submission with CAPTCHA Handling
Complete guide to automating web form submissions that include CAPTCHA challenges — re CAPTCHA, Turnstile, and image CAPTCHAs with Captcha AI.

Complete guide to automating web form submissions that include CAPTCHA challenges — re CAPTCHA, Turnstile, and...

Python Cloudflare Turnstile reCAPTCHA v2
Mar 21, 2026
Explainers Reducing CAPTCHA Solve Costs: 10 Strategies
Cut CAPTCHA solving costs with Captcha AI using 10 practical strategies — from skipping unnecessary solves to batching and caching tokens.

Cut CAPTCHA solving costs with Captcha AI using 10 practical strategies — from skipping unnecessary solves to...

Python Cloudflare Turnstile reCAPTCHA v2
Mar 11, 2026
Comparisons Headless vs Headed Chrome for CAPTCHA Solving
Compare headless and headed Chrome for CAPTCHA automation — detection differences, performance trade-offs, and when to use each mode with Captcha AI.

Compare headless and headed Chrome for CAPTCHA automation — detection differences, performance trade-offs, and...

Python Automation Cloudflare Turnstile
Mar 09, 2026
API Tutorials CaptchaAI API Latency Optimization: Faster Solves
Reduce CAPTCHA solve latency with Captcha AI by optimizing poll intervals, connection pooling, prefetching, and proxy selection.

Reduce CAPTCHA solve latency with Captcha AI by optimizing poll intervals, connection pooling, prefetching, an...

Python Automation Cloudflare Turnstile
Feb 27, 2026
Tutorials Reusable CAPTCHA Modules for Client Projects
Build reusable CAPTCHA-solving modules for client projects using Captcha AI.

Build reusable CAPTCHA-solving modules for client projects using Captcha AI. Package solving logic into import...

Python Cloudflare Turnstile reCAPTCHA v2
Feb 20, 2026
Reference CaptchaAI Emulator: Drop-In Replacement for 2Captcha and AntiCaptcha
Use Captcha AI as a drop-in replacement for 2 Captcha and Anti Captcha APIs without changing your existing code — endpoint compatibility and adapter patterns.

Use Captcha AI as a drop-in replacement for 2 Captcha and Anti Captcha APIs without changing your existing cod...

Python Cloudflare Turnstile reCAPTCHA v2
Feb 03, 2026
API Tutorials Building a Python Wrapper Library for CaptchaAI API
Build a reusable Python wrapper library for the Captcha AI API with type hints, retry logic, context managers, and support for CAPTCHA types.

Build a reusable Python wrapper library for the Captcha AI API with type hints, retry logic, context managers,...

Python Automation Cloudflare Turnstile
Jan 31, 2026
Getting Started How to Choose the Right CAPTCHA Solving Method
Guide to selecting the correct Captcha AI method parameter for each CAPTCHA type — re CAPTCHA, Turnstile, Gee Test, image, and .

Guide to selecting the correct Captcha AI method parameter for each CAPTCHA type — re CAPTCHA, Turnstile, Gee...

Automation Cloudflare Turnstile
Mar 26, 2026
Getting Started CaptchaAI Proxy Configuration Guide
Complete guide to configuring proxies for Captcha AI.

Complete guide to configuring proxies for Captcha AI. Covers proxy formats, types (HTTP, SOCKS 5), authenticat...

Python Automation reCAPTCHA v2
Mar 14, 2026
Getting Started CaptchaAI API Response Formats Explained
Complete reference for Captcha AI API response formats — success responses, error codes, and parsing examples for every CAPTCHA type.

Complete reference for Captcha AI API response formats — success responses, error codes, and parsing examples...

Automation Cloudflare Turnstile
Mar 03, 2026