Migration guides
Migrating from CapMonster Cloud
Move reCAPTCHA image grids and text pictures from CapMonster Cloud to Solvecha. Change the base URL and the key.
On this page
Solvecha takes CapMonster Cloud's createTask, getTaskResult and getBalance calls for two task types. For these you change the base URL and the key.
| CapMonster Cloud task | Solvecha |
|---|---|
ComplexImageTask with class recaptcha |
Works. The answer is answer: one true or false per tile. |
ImageToTextTask |
Works. The answer is text. |
Everything else (RecaptchaV2Task, TurnstileTask, HCaptchaTask, other ComplexImageTask classes, custom tasks and so on) |
Not supported. The answer is ERROR_TASK_NOT_SUPPORTED. |
Solvecha returns answers for the pictures you send, not finished tokens. If you need a token without your own browser, stay with CapMonster Cloud for that task type, or let the browser extension click the tiles in a real browser.
#What to change
- Set the base URL to
https://api.solvecha.com. - Put your Solvecha key in
clientKey. - Run a few tasks and compare the answers with your CapMonster Cloud results.
import requests
result = requests.post("https://api.solvecha.com/createTask", json={
"clientKey": "YOUR_API_KEY",
"task": {
"type": "ComplexImageTask",
"class": "recaptcha",
"imagesBase64": [image_b64],
"metadata": {"Task": "Click on traffic lights", "Grid": "3x3"},
},
}).json()
tiles = result["solution"]["answer"] # [True, False, True, ...]The answer comes in the createTask response, up to 15 seconds. If it takes longer, status is processing: call getTaskResult with the taskId. The taskId is a number, as at CapMonster Cloud. Every answer has HTTP status 200, also errors, except 429 when you send too many requests.
#Already using an official client? Change one setting
We ran both clients against Solvecha with a real grid picture and a text picture on 23 October 2026. image_b64 is a base64 picture.
import asyncio
from capmonstercloudclient import CapMonsterClient, ClientOptions
from capmonstercloudclient.requests import RecaptchaComplexImageTaskRequest, ImageToTextRequest
client = CapMonsterClient(options=ClientOptions(api_key="YOUR_API_KEY", service_url="https://api.solvecha.com")) # service_url is the only change
grid = asyncio.run(client.solve_captcha(RecaptchaComplexImageTaskRequest(
imagesBase64=[image_b64], metadata={"Task": "Click on traffic lights", "Grid": "3x3"})))
# {"answer": [True, False, True, ...]}
text = asyncio.run(client.solve_captcha(ImageToTextRequest(image_bytes=text_bytes)))
# {"text": "x7Kp2"}import { CapMonsterCloudClientFactory, ClientOptions, ComplexImageRecaptchaRequest } from "@zennolab_com/capmonstercloud-client";
const client = CapMonsterCloudClientFactory.Create(new ClientOptions({
clientKey: "YOUR_API_KEY",
serviceUrl: "https://api.solvecha.com", // the only change
}));
const grid = await client.Solve(new ComplexImageRecaptchaRequest({
imagesBase64: [imageB64],
metaData: { Task: "Click on traffic lights", Grid: "3x3" },
}));
// { solution: { answer: [true, false, true, ...] } }#Field mapping
| CapMonster Cloud | Solvecha |
|---|---|
clientKey |
Your Solvecha key. |
softId |
Read as a partner code. A value that is not a known code is ignored. |
task.imagesBase64 |
One picture is read as a grid. Up to 9 pictures are read as single tiles. |
task.imageUrls |
Solvecha downloads the picture. Only https on port 443 works. Addresses in private or reserved ranges are refused. |
task.metadata.Grid |
3x3, 4x4 or 1x1. Without it, the picture size decides: up to 160 px is one tile, up to 380 px is 3x3, larger is 4x4. |
task.metadata.Task |
The instruction in words, for example Click on traffic lights. |
task.metadata.TaskDefinition |
A reCAPTCHA object code such as /m/015qff. If we know the code, it is used instead of Task. |
solution.answer |
One true or false per tile, left to right, top to bottom. |
solution.text (ImageToTextTask) |
The recognised text. It is case-sensitive. |
| Errors | errorId 1, errorCode, errorDescription and taskId 0. Codes in use: ERROR_KEY_DOES_NOT_EXIST, ERROR_ZERO_BALANCE, ERROR_CAPTCHA_UNSOLVABLE, ERROR_TASK_NOT_SUPPORTED, ERROR_NO_SUCH_CAPCHA_ID, ERROR_BAD_PARAMETERS, ERROR_RATE_LIMIT. |
#Check these points
- Text options. The options
CapMonsterModule,recognizingThreshold,Case,numericandmathare accepted and ignored. One model reads all text pictures. - Other classes.
ComplexImageTaskwith the classeshcaptcha,funcaptchaandrecognitionanswersERROR_TASK_NOT_SUPPORTED. - Price model. Solvecha has a free tier (100 solves per day), pay per use from a prepaid balance ($0.10 per 1,000 successful solves, $0.12 incl. 19 % VAT in Germany) and monthly plans with a daily quota. A task is charged once, when its solution is returned. See Plans and billing and the compare page.
getBalancereturns your prepaid balance in US dollars. Plan quotas are inGET /v1/status.
The field names were read from the CapMonster Cloud documentation and the source of the official clients on 23 October 2026. Check them against their current pages before you rely on them.
More on the native format: Create a reCAPTCHA job.
Solvecha is an independent service. It is not affiliated with NopeCHA, 2Captcha, CapSolver, Google or CloakHQ. Their names describe compatibility or recommendations only. Figures come from our own tests, see the compare page.