Captcha Reader – AI-Powered Captcha Solver Service with API Access

A reliable captcha reader is essential when you need to automate flows protected by challenges like Google reCAPTCHA, Cloudflare Turnstile/Challenge, and other ones without breaking your architecture or UX. CapMonster Cloud provides an AI-powered captcha solver service with a clean HTTP API and official SDKs that let you integrate captcha solutions directly into your applications, bots, and backend services.
This guide walks you through using CapMonster Cloud as a CAPTCHA reader using Google reCAPTCHA v3 as an example: the core API workflow, demo/sandbox integration, and full code examples taken directly from the official documentation, including JSON requests and SDK usage. By the end, you’ll know how to plug this captcha service into your own captcha app, captcha bot, or automation stack.
1. How CapMonster Cloud works as a captcha reader
CapMonster Cloud acts as a cloud-based captcha solver: you send a description of the captcha task (site URL, keys, and options), the service solves it on its side, then returns a token or text answer you can submit to the target site. The platform supports common captcha types such as Google reCAPTCHA v2 and v3 (including Enterprise versions), as well as generic image-based tasks via ImageToTextTask and other task types documented in the API.
Every request you send defines a task object that describes the captcha to solve and a solution object that you receive later, such as a gRecaptchaResponse token. For reCAPTCHA v3 specifically, the task types RecaptchaV3TaskProxyless and RecaptchaV3EnterpriseTask uses CapMonster Cloud’s own proxy infrastructure, so you don’t need to manage proxies yourself when you integrate this captcha solver into your flows.
Key roles CapMonster Cloud can play in your stack include:
As a captcha solution backend for your scraping tools and test harnesses.
As a captcha remover step inside automation flows (e.g., login or form submission).
As a reusable captcha service module shared across multiple microservices.
2. Core CapMonster Cloud API workflow
CapMonster Cloud’s HTTP API is organized around a simple pattern: create a task and then poll for its result. All requests use JSON POST and include your clientKey, the unique API key from your CapMonster Cloud account.
At a high level, a typical captcha solve flow looks like this:
Prepare a task object with the right type and captcha parameters (for example, RecaptchaV3TaskProxyless plus websiteURL, websiteKey, minScore, and pageAction).
Call the createTask method at https://api.CapMonster.cloud/createTask with your clientKey and the task object.
- Poll https://api.CapMonster.cloud/getTaskResult with the returned taskId until the status becomes ready, then read the solution (e.g., gRecaptchaResponse).
3. Getting started: account, keys, sandbox and captcha demo
To use CapMonster Cloud as a captcha reader, you first obtain a clientKey (API key) from your account, which you then pass in every API call as the clientKey field.
For safe development and testing, the CapMonster provides dedicated demo pages, such as https://lessons.zennolab.com/captchas/recaptcha/v3.php?level=beta for the reCAPTCHA v3 or https://capmonster.cloud/en/demo/recaptcha-v2 for the reCAPTCHA v2. These demo endpoints act as a sandbox where you can integrate and debug your captcha online solving logic without touching production systems, making it an ideal captcha demo target.
A recommended setup pattern is:
- Use local development or staging environments wired against the lessons.zennolab.com test page to verify your captcha solution flow.
- Once stable, swap websiteURL and websiteKey to match your real application pages while keeping the same CapMonster Cloud API integration patterns.
This approach lets you integrate your captcha reader safely before moving to production traffic.
4. Captcha solution via reCAPTCHA v3 API (demo)
The reCAPTCHA v3 task type RecaptchaV3TaskProxyless is a good example of turning CapMonster Cloud into a production-ready captcha reader for invisible challenges. The docs explain that reCAPTCHA v3 runs in the background, evaluates user behavior, and returns a score from 0.1 to 0.9; your captcha bot or app needs to set minScore and pageAction appropriately when creating tasks.
4.1. Create a RecaptchaV3TaskProxyless task
For the reCAPTCHA v3, the createTask request for a demo page looks like this:
{
"clientKey": "API_KEY",
"task": {
"type": "RecaptchaV3TaskProxyless",
"websiteURL": "https://lessons.zennolab.com/captchas/recaptcha/v3.php?level=beta",
"websiteKey": "6Le0xVgUAAAAAIt20XEB4rVhYOODgTl00d8juDob",
"minScore": 0.3,
"pageAction": "myverify"
}
}Here
websiteURL points to the sandbox reCAPTCHA v3 page at lessons.zennolab.com.
websiteKey is the public ReCaptcha site key extracted from the page’s scripts.
minScore specifies the minimum acceptable trust score for the solution, from 0.1 to 0.9.
pageAction mirrors the action string passed to grecaptcha.execute, such as 'login_test' or the "myverify" used in this example.
Your backend or captcha service wrapper would send this JSON via POST to https://api.CapMonster.cloud/createTask, then read the returned taskId if errorId is 0.
4.2. Poll getTaskResult for the captcha solution
Once the task is created, you retrieve the captcha solution using the getTaskResult method.
Request
{
"clientKey":"API_KEY",
"taskId": 407533072
}Response
{
"errorId":0,
"status":"ready",
"solution": {
"gRecaptchaResponse":"3AHJ_VuvYIBNBW5yyv0zRYJ75VkOKvhKj9_xGBJKnQimF72rfoq3Iy-DyGHMwLAo6a3"
}
}The `solution.gRecaptchaResponse` field is a token string that should be inserted into the reCAPTCHA v3 form field `<textarea ></textarea>`. The docs note that this is the value returned when solving the captcha and is what turns your API call into a complete captcha solve in the browser or HTTP client.
In a browser-based automation scenario, your captcha bot could:
- Call createTask and then getTaskResult from your backend service.
- Inject gRecaptchaResponse into the hidden textarea on the target page.
- Submit the form, effectively using CapMonster Cloud as a captcha remover step between page rendering and form submission.
Together, these steps implement a full captcha solution pipeline for reCAPTCHA v3.
5. Building a captcha app or captcha bot with SDKs
CapMonster Cloud provides official SDK libraries that wrap the HTTP API and make it easier to build a captcha app, internal captcha service, or larger captcha bot without hand-crafting every JSON request. The reCAPTCHA v3 documentation page includes ready-to-use examples for JavaScript, Python, and .NET.
5.1. JavaScript SDK example
// https://github.com/ZennoLab/CapMonstercloud-client-js
import {
CapMonsterCloudClientFactory,
ClientOptions,
RecaptchaV3ProxylessRequest
} from '@zennolab_com/CapMonstercloud-client';
document.addEventListener('DOMContentLoaded', async () => {
const cmcClient = CapMonsterCloudClientFactory.Create(
new ClientOptions({ clientKey: 'YOUR_API_KEY' }) // Specify your CapMonster Cloud API key
);
// Optionally, you can check the balance
const balance = await cmcClient.getBalance();
console.log('Balance:', balance);
const recaptchaV3Request = new RecaptchaV3ProxylessRequest({
websiteURL: 'https://lessons.zennolab.com/captchas/recaptcha/v3.php?level=beta', // URL of your page with captcha
websiteKey: '6Le0xVgUAAAAAIt20XEB4rVhYOODgTl00d8juDob',
minScore: 0.6,
pageAction: 'myverify',
});
const solution = await cmcClient.Solve(recaptchaV3Request);
console.log('Solution:', solution);
});This example shows how to:
- Initialize the client with clientKey.
- Optionally call getBalance() to check account funds.
- Construct a RecaptchaV3ProxylessRequest with the demo site URL and key.
- Call Solve to perform a captcha solve and log the solution.
You can adapt this pattern inside browser extensions, Node.js scripts, or web automation controllers when building your captcha reader.
5.2. Python SDK example
# https://github.com/Zennolab/CapMonstercloud-client-python
import asyncio
from CapMonstercloudclient import CapMonsterClient, ClientOptions
from CapMonstercloudclient.requests import RecaptchaV3ProxylessRequest
client_options = ClientOptions(api_key="YOUR_API_KEY") # Specify your CapMonster Cloud API key
cap_monster_client = CapMonsterClient(options=client_options)
# Optionally, you can check the balance
balance = asyncio.run(cap_monster_client.get_balance())
print("Balance:", balance)
recaptcha_v3_request = RecaptchaV3ProxylessRequest(
websiteUrl="https://lessons.zennolab.com/captchas/recaptcha/v3.php?level=beta", # URL of your page with captcha
websiteKey="6Le0xVgUAAAAAIt20XEB4rVhYOODgTl00d8juDob",
minScore=0.6,
pageAction="myverify"
)
async def solve_captcha():
return await cap_monster_client.solve_captcha(recaptcha_v3_request)
responses = asyncio.run(solve_captcha())
print(responses)This snippet demonstrates an asynchronous solve_captcha call with the same demo websiteUrl and websiteKey that you saw in the raw JSON example, giving you a complete captcha solve via a simple method call.
5.3. .NET SDK example
// https://github.com/ZennoLab/CapMonstercloud-client-dotnet
using Zennolab.CapMonsterCloud.Requests;
using Zennolab.CapMonsterCloud;
class Program
{
static async Task Main(string[] args)
{
var clientOptions = new ClientOptions
{
ClientKey = "YOUR_API_KEY" // Specify your CapMonster Cloud API key
};
var cmCloudClient = CapMonsterCloudClientFactory.Create(clientOptions);
// Optionally, you can check the balance
var balance = await cmCloudClient.GetBalanceAsync();
Console.WriteLine("Balance: " + balance);
var recaptchaV3Request = new RecaptchaV3ProxylessRequest
{
WebsiteUrl = "https://lessons.zennolab.com/captchas/recaptcha/v3.php?level=beta", // URL of your page with captcha
WebsiteKey = "6Le0xVgUAAAAAIt20XEB4rVhYOODgTl00d8juDob",
MinScore = 0.6,
PageAction = "myverify"
};
var recaptchaV3Result = await cmCloudClient.SolveAsync(recaptchaV3Request);
Console.WriteLine("Solution: " + recaptchaV3Result.Solution.Value);
}
}Here, SolveAsync hides the low-level createTask and getTaskResult calls, returning a typed result object with the solution value ready to be injected into the target page or HTTP request. You can embed this into a console tool, microservice, or larger captcha app that centralizes captcha solve logic for multiple systems.
6. Error handling, bad tokens, and token acceptance
The createTask documentation describes the standard error model you’ll integrate into your captcha reader or captcha service wrapper. Each response includes an errorId, where 0 means success and a non-zero value indicates an error with an accompanying errorCode and errorDescription.
The createTask API method includes this example of an error response:
{
"errorId": 1,
"errorCode": "ERROR_KEY_DOES_NOT_EXIST",
"errorDescription": "Account authorization key not found in the system or has incorrect format",
"taskId": 0
}A robust captcha solve implementation should:
- Check errorId after every createTask call and handle cases such as invalid API keys or malformed tasks.
- Handle network timeouts or temporary service issues by retrying with backoff where appropriate.
- When polling getTaskResult, continue until you receive a final status (ready or an error) and log rejected tokens or unusual patterns for later analysis.
Treat any rejection of the gRecaptchaResponse by the target site as a signal to log context (URL, action, score, response body) so you can tune minScore, verify that your websiteKey and pageAction are correct, or re-check that you are using the right captcha type for that endpoint.
7. Implementation checklist for your captcha reader
When you build your own captcha reader, captcha extension logic, or captcha bot around CapMonster Cloud, this checklist will help keep things consistent with the official docs:
Sign up at CapMonster Cloud
And retrieve your clientKey.
Identify captcha type
Confirm that the page uses reCAPTCHA v3 and not another variant (e.g., reCAPTCHA v2) and choose RecaptchaV3TaskProxyless accordingly.
Extract required parameters
From the page, get websiteKey and the pageAction associated with grecaptcha.execute, as described in the reCAPTCHA v3 documentation.
Choose the right task type
Use RecaptchaV3TaskProxyless for reCAPTCHA v3, RecaptchaV2Task for the v2 example, or other task types like ImageToTextTask when solving image captchas.
Implement createTask
Send a JSON POST to https://api.CapMonster.cloud/createTask with your clientKey and properly filled task object.
Implement getTaskResult polling
Periodically call https://api.CapMonster.cloud/getTaskResult with the returned taskId until you see status":"ready", then read the solution (e.g., gRecaptchaResponse).
Inject the captcha solution
For reCAPTCHA v3, place `solution.gRecaptchaResponse` into `<textarea id="g-recaptcha-response"></textarea>` before submitting the form.
Validate in sandbox/demo
Test your full flow against the demo page https://lessons.zennolab.com/captchas/recaptcha/v3.php?level=beta before targeting your own site or production pages.
Monitor and refine
Log errors and rejected tokens, adjust minScore and pageAction if needed, and keep your implementation aligned with the latest CapMonster Cloud documentation.
This process gives you a structured, repeatable way to implement a captcha solve step — whether you are building a standalone captcha app, integrating into existing automation, or exposing a shared captcha service internally.
Conclusion
CapMonster Cloud provides a robust, AI-powered captcha reader that you can integrate into your web scraping, automation, or testing workflows via clean HTTP API calls or official SDKs. By following the well documented createTask and getTaskResult patterns — and using the provided demo pages for initial validation — you can build reliable captcha solutions without reinventing the wheel.
Create an account at CapMonster Cloud today and see how straightforward automated captcha solving can be. Visit the official documentation at docs.CapMonster.cloud for the latest API references, task types, and integration examples.
NB: Please note that the product is intended for automating tests on your own websites and sites you have legal access to.






