API KEY
To get the API key, create an account in MultiBot.
APIKEY: - your key to the MultiBot service
THE ADDRESS OF SENDING THE TASK [ POST, GET ]
http://api.multibot.in/in.php
IMPORTANT: When sending a POST, the content type should be "multipart/form-data"
GETTING A RESPONSE [ GET ]
http://api.multibot.in/res.php?key=APIKEY&id=ID
ID: - captcha id
GET A BALANCE [ GET ]
http://api.multibot.in/res.php?action=userinfo&key=APIKEY
Response in JSON format:
{"email":"my@gmail.com","balance":"15774"}
GET the current userAgent [ GET ]
http://api.multibot.in/res.php?action=useragent&key=APIKEY
Solving hCaptcha using a token.
Insert the received token into the h-captcha-response
field
or pass it to the callback function window.hcaptchaCallback(token)
.
Get the callback function: [ JavaScript ]
(() => {
var _hCap;
Object.defineProperty(window, "hcaptcha", {
get: function (){
return _hCap;
},
set: function (e){
_hCap = e;
var _Render = e.render;
_hCap.render = function (a, b){
window.hcaptchaCallback = b.callback;
return _Render(a, b);
};
},
});
})()
List of parameters for GET/POST requests
Parameter | Type | Required | Value |
---|---|---|---|
key | String | Yes | Your API key |
method | String | Yes | hcaptcha |
sitekey | String | Yes | The value of the "data-sitekey" parameter found in the page code |
pageurl | String | Yes | Full URL of the page |
domain | String | No | Domain from which hCaptcha is loaded: hcaptcha.com or js.hcaptcha.com |
data | String | No | Most often appears as the "rqdata" parameter in network requests. Format: "data": "rqDataValue" |
cookies | String | No | We will return cookies in the captcha response, but only when using json=1. Format: KEY:Value, separator - semicolon, e.g., KEY1:Value1;KEY2:Value2; |
json | Number. Default: 0 | No | 1 — response in JSON format |
proxy | String | No | LOGIN:PASS@IP:PORT |
Example of sending a request. [ Python ]
import requests
params = {
"key": APIKEY,
"method": "hcaptcha",
"pageurl": "https://multibot.in/captchas/hcaptcha/",
"sitekey": "5860d916-b6c4-4274-9bfa-3f32d13cedda",
"json": "1"
}
for key in params:
params[key] = (None, params[key])
requests.post('http://api.multibot.in/in.php', files=params)
reCaptcha [ Token ]
reCAPTCHA solution using a token.
Insert the received token into the field g-recaptcha-response
or pass it to the callback function window.reCaptchaCallback(token)
.
Get the callback function: [ JavaScript ]
(() => {
function getRecaptchaInfo(widget){
for(let k1 in widget){
for(let k2 in widget[k1]){
for(let k3 in widget[k1][k2]){
if(k3 === "callback"){
if(typeof widget[k1][k2][k3] === "function"){
window.reCaptchaCallback = widget[k1][k2][k3];
}
}
}
}
}
};
for(let widgetId in ___grecaptcha_cfg.clients){
getRecaptchaInfo(___grecaptcha_cfg.clients[widgetId]);
}
})()
List of parameters for GET/POST requests
Parameter | Type | Required | Value |
---|---|---|---|
key | String | yes | Your API key |
method | String | yes | userrecaptcha |
version | String.Default: v2 | no | reCAPTCHA version: v2 or v3 |
enterprise | String.Default: 0 | no | 1 — indicates that this is a reCAPTCHA Enterpise |
googlekey | String | yes | The value of the "sitekey" parameter that you found in the site code |
pageurl | String | yes | Address of a webpage |
action | String | no | The value of the "action" parameter that you found in the site code |
domain | String | no | The domain from which reCAPTCHA is loaded: recaptcha.net or google.com |
data-s | String | no | The value of the "data-s" parameter found on the page. |
cookies | String | no | In the response to the captcha, we will return cookies, but only when using json=1.Format: KEY:The value is separated by a semicolon, for example: KEY1:Value1;KEY2:Value2; |
json | Number.By default: 0 | no | 1 — response in JSON format |
proxy | String | no | LOGIN:PASS@IP:PORT |
An example of sending a request. [ Python ]
import requests
params = {
"key": APIKEY,
"method": "userrecaptcha",
"pageurl": "https://www.google.com/recaptcha/api2/demo",
"googlekey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
"json": "1"
}
for key in params:
params[key] = (None, params[key])
requests.post('http://api.multibot.in/in.php', files=params)
Solving a regular captcha Turnstile using a token.
Insert the received token into the field name="cf-turnstile-response"
or pass it to the callback function.
List of parameters for GET/POST requests
Parameter | Type | Required | Value |
---|---|---|---|
key | String | yes | Your API key |
method | String | yes | turnstile |
sitekey | String | yes | The value of the "sitekey" parameter that you found in the site code |
pageurl | String | yes | Address of a webpage |
action | String | no | The value of the additional "action" parameter found on the page. |
json | Number.By default: 0 | no | 1 — response in JSON format |
proxy | String | no | LOGIN:PASS@IP:PORT |
An example of sending a request. [ Python ]
import requests
params = {
"key": APIKEY,
"method": "turnstile",
"pageurl": "https://turnstile.zeroclover.io/",
"sitekey": "0x4AAAAAAAEwzhD6pyKkgXC0",
"json": "1"
}
for key in params:
params[key] = (None, params[key])
requests.post('http://api.multibot.in/in.php', files=params)
AuthKong [ Token ]
An AuthKong solution using a token.
Insert the received token into the field name="captcha-response"
or pass it to the callback function.
List of parameters for GET/POST requests
Parameter | Type | Required | Value |
---|---|---|---|
key | String | yes | Your API key |
method | String | yes | authkong |
sitekey | String | yes | The value of the sitekey parameter that you found in the site code |
pageurl | String | yes | Address of a webpage |
json | Number.By default: 0 | no | 1 — response in JSON format |
proxy | String | no | LOGIN:PASS@IP:PORT |
An example of sending a request. [ Python ]
import requests
params = {
"key": APIKEY,
"method": "authkong",
"pageurl": "https://authkong.com/demo",
"sitekey": "275bdd8ffae8e8f5be51b73180ffb8ac2959e243fb10c34df48f72a0bbb6ee37",
"json": "1"
}
for key in params:
params[key] = (None, params[key])
requests.post('http://api.multibot.in/in.php', files=params)
Image [ OCR ]
Recognition of text from an image.
List of parameters for POST requests
Parameter | Type | Required | Value |
---|---|---|---|
key | String | yes | Your API key |
method | String | yes | universal |
body | String | yes | picture in Base64 |
json | Number.By default: 0 | no | 1 — response in JSON format |
An example of sending a request. [ Python ]
import requests
params = {
"key": APIKEY,
"method": "universal",
"body": "iVBORw0KG...EFUeF6Ev",
"json": "1"
}
for key in params:
params[key] = (None, params[key])
requests.post('http://api.multibot.in/in.php', files=params)
Slider [ Coordinate ]
The answer will have the number of pixels by which you need to move the slider.


List of parameters for POST requests
Parameter | Type | Required | Value |
---|---|---|---|
key | String | yes | Your API key |
method | String | yes | slider |
background | String | yes | main picture in Base64 |
piece | String | yes | slider image in Base64 |
json | Number.By default: 0 | no | 1 — response in JSON format |
An example of sending a request. [ Python ]
import requests
params = {
"key": APIKEY,
"method": "slider",
"background": "iVBORw0KG...EFUeF6Ev",
"piece": "iVBORw0KG...EFUeF6Ev",
"json": "1"
}
for key in params:
params[key] = (None, params[key])
requests.post('http://api.multibot.in/in.php', files=params)
Icons [ Coordinate ]
The response will have an order of coordinates for clicks ( X:Y,X:Y,X:Y )
.

List of parameters for POST requests
Parameter | Type | Required | Value |
---|---|---|---|
key | String | yes | Your API key |
method | String | yes | icons |
task | String | yes | The order of images for clicks |
body | String | yes | picture in Base64 |
json | Number.By default: 0 | no | 1 — response in JSON format |
An example of sending a request. [ Python ]
import requests
params = {
"key": APIKEY,
"method": "icons",
"task": "calendar,buy,star",
"body": "iVBORw0KG...EFUeF6Ev",
"json": "1"
}
for key in params:
params[key] = (None, params[key])
requests.post('http://api.multibot.in/in.php', files=params)
RsCaptcha [ Coordinate ]
The response will contain the coordinates of the click.



List of parameters for POST requests
Parameter | Type | Required | Value |
---|---|---|---|
key | String | yes | Your API key |
method | String | yes | rscaptcha |
body | String | yes | picture in Base64 |
json | Number.By default: 0 | no | 1 — response in JSON format |
An example of sending a request. [ Python ]
import requests
params = {
"key": APIKEY,
"method": "rscaptcha",
"body": "iVBORw0KG...EFUeF6Ev",
"json": "1"
}
for key in params:
params[key] = (None, params[key])
requests.post('http://api.multibot.in/in.php', files=params)
Upside-Down [ Coordinate ]
The response will contain the coordinates of the click.


List of parameters for POST requests
Parameter | Type | Required | Value |
---|---|---|---|
key | String | yes | Your API key |
method | String | yes | upside |
body | String | yes | picture in Base64 |
json | Number.By default: 0 | no | 1 — response in JSON format |
An example of sending a request. [ Python ]
import requests
params = {
"key": APIKEY,
"method": "upside",
"body": "iVBORw0KG...EFUeF6Ev",
"json": "1"
}
for key in params:
params[key] = (None, params[key])
requests.post('http://api.multibot.in/in.php', files=params)
AntiBot [ Coordinate ]
The response will contain the order of the image IDs for the click.
The image IDs can be found on the page (the "rel" attribute), or assigned an individual value for each image.


List of parameters for POST requests
Parameter | Type | Required | Value |
---|---|---|---|
key | String | yes | Your API key |
method | String | yes | antibot |
main | String | yes | main picture in Base64 |
* | number (identifier) | yes | a picture to click in Base64 |
json | Number.By default: 0 | no | 1 — response in JSON format |
An example of sending a request. [ Python ]
import requests
params = {
"key": APIKEY,
"method": "antibot",
"main": "iVBORw0KG...EFUeF6Ev",
"1652": "iVBORw0KG...EFUeF6Ev",
"5606": "iVBORw0KG...EFUeF6Ev",
"8655": "iVBORw0KG...EFUeF6Ev",
"2707": "iVBORw0KG...EFUeF6Ev",
"json": "1"
}
for key in params:
params[key] = (None, params[key])
requests.post('http://api.multibot.in/in.php', files=params)
Mouse Movement [ Path ]
The "Mouse Movement" method calculates the trajectory of mouse cursor movement between specified points, including both regular movement and drag-and-drop (movement with pressed button).
The method accepts a nested list of route point coordinates in [start, end] format:
[[x1, y1], [x2, y2], ..., [xn, yn]]
where each [x, y] pair represents point coordinates.
Upon successful execution, you will receive the mouse movement path between points:
[[x, y, sleep], [x, y, sleep], ...]
where x, y - cursor coordinates at each step, sleep - delay (in milliseconds) before the next step.
Parameters Description
clientKey
: your service API key.
type
: humanMove
Task Creation Method
POST http://api.multibot.in/createTask
Request
// combined (movement and drag)
{
"clientKey": "APIKEY",
"type":"humanMove",
"task": [
{"type": "move", "patch":[[0,0], [100,100]]},
{"type": "drag", "patch":[[100,100], [190,190]]},
{"type": "move", "patch":[[190,190], [320,320]]}
]
}
// movement only
{
"clientKey": "APIKEY",
"type":"humanMove",
"task": [
{"type": "move", "patch":[[0,0], [190,190], [210,210], [320,320]]}
]
}
# example
import requests
requests.post(
'http://api.multibot.in/createTask',
headers={'content-type': 'application/json'},
json=payload,
timeout=10
).json()
Response
{
"errorId":0,
"taskId":407533072
}
Task Result Retrieval Method
POST http://api.multibot.in/getTaskResult
Request
{
"clientKey":"API_KEY",
"taskId": 407533072
}
# example
import requests
requests.post(
'http://api.multibot.in/getTaskResult',
headers={'content-type': 'application/json'},
json=payload,
timeout=10
).json()
Response
// combined (movement and drag)
{
"errorId": 0,
"status": "ready",
"cost": 1,
"answers": [
{
"type": "move",
"path": [[1,-1,8], [8,0,7], ...],
"start": [0,0],
"end": [100,100]
},
{
"type": "drag",
"path": [[104,106,8], [108,112,7], ...],
"start": [100,100],
"end": [190,190]
},
{
"type": "move",
"path": [[193,193,6], [198,202,9], ...],
"start": [190,190],
"end": [320,320]
}
],
"spentTime": 1
}
// movement only
{
"errorId": 0,
"status": "ready",
"cost": 1,
"answers": [
{
"type": "move",
"path": [[0,1,15], [0,2,7], ...],
"start": [0,0],
"end": [190,190]
},
{
"type": "move",
"path": [[194,194,7], [198,198,9], ...],
"start": [190,190],
"end": [210,210]
},
{
"type": "move",
"path": [[212,210,8], [214,213,7], ...],
"start": [210,210],
"end": [320,320]
}
],
"spentTime": 2
}
errorId: Error identifier.
0 - no errors, task created successfully, task identifier is in the taskId parameter
1 - error occurred, information is in the errorCode property.
taskId:
Task identifier for subsequent use in getTaskResult method.
status:
processing - task is being executed
ready - task completed, solution is in the answers property
error - task failed to execute.
answers: Dictionary with data
type - movement or drag
path - path as nested list (x,y,sleep)
start - movement start point
end - movement end point
spentTime:
Time spent on task execution in seconds.
cost:
Task cost, deducted from your balance.
Error description
Make sure that the type of captcha you need to solve is supported by the service.
Error Text | Description |
---|---|
ERROR_METHOD_DOES_NOT_EXIST | The captcha type is incorrectly specified (the value of the "method" parameter). |
WRONG_METHOD | The captcha type is not specified (the value of the "method" parameter). |
ERROR_BAD_DATA | One (or more) parameters for the captcha were not passed. |
ERROR_WRONG_USER_KEY | The API key does not exist in the system or has an incorrect format. |
ERROR_ZERO_BALANCE | Top up your account balance to continue recognition. |
WRONG_COUNT_IMG | Less than three images were sent for the "antibot" method.3 or more are needed. |
CAPCHA_NOT_READY | The solution to this captcha is not ready yet. |
WRONG_CAPTCHA_ID | A captcha with this ID was not found. |
WRONG_REQUESTS_LINK WRONG_LOAD_PAGEURL |
Check the format of the "pageurl" parameter. |
ERROR_SITEKEY SITEKEY_IS_INCORRECT |
Invalid sitekey. |
WRONG_RESULT | The service could not solve the captcha. |
HCAPTCHA_NOT_FOUND TURNSTILE_NOT_FOUND |
This type of captcha is missing on the page passed in the "pageurl" parameter. |
Browser extension.
Chrome:
Firefox:
Loading the extension (zip) with settings:
1. Unzip the zip file
2. Remove the following lines in the manifest.json file:
"options_ui": {
"open_in_tab": true,
"page": "options/options.html"
},
3. Enter the apiKey in the "\common\config.js" file and select the types of captchas (true - enable, false - disable):
default: {
isPluginEnabled: true,
apiKey: null, // your service key, e.g.: "Dghhh....545Fg"
email: null,
autoSubmitForms: false, // submit forms upon successful captcha solving
submitFormsDelay: 3, // delay (sec) before submit
hcaptchabase64Attempts: 30, // attempts to solve hCaptcha via clicks
hcaptchaType: "token", // hCaptcha solving method ("token" or "click")
afterDecisionAntibot: true, // If there's AntiBot on the page, solve it first
refreshPage: true, // Refresh the page if captcha solving fails
deleteCoockie: false, // Delete session cookies when refreshing the page
oneCaptchaPerPage: true, // Sequential captcha solving
interceptorRecaptcha: false, // Script injection for reCaptcha
solveNormal: false, // Normal captcha (text on image)
solveRecaptchaV2: false, // RecaptchaV2
solveRecaptchaV3: false, // RecaptchaV3
solveHCaptcha: false, // HCaptcha
solveAntiBot: false, // AntiBot
solveFaucetPay: false, // FaucetPay
solveUpside: false, // Upside-Down
solveTurnstile: false, // Turnstile
solveIconCaptcha: false, // IconCaptcha
normalSources: [],
autoSubmitRules: [],
hostsForClick: ["store.steampowered.com"],
defaultTimeoutToken: 300,
defaultTimeout: 30
},