Migrating from CapMonster Cloud

Migration guides

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

  1. Set the base URL to https://api.solvecha.com.
  2. Put your Solvecha key in clientKey.
  3. Run a few tasks and compare the answers with your CapMonster Cloud results.
Python
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.

capmonstercloudclient (pip install capmonstercloudclient, tested with 4.3.1)
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"}
@zennolab_com/capmonstercloud-client (npm i @zennolab_com/capmonstercloud-client, tested with 2.9.2)
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, numeric and math are accepted and ignored. One model reads all text pictures.
  • Other classes. ComplexImageTask with the classes hcaptcha, funcaptcha and recognition answers ERROR_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.
  • getBalance returns your prepaid balance in US dollars. Plan quotas are in GET /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.

    ↑↓ to moveEnter to open