API Quick Start

  1. Get your API key in Dashboard.
  2. Send a task to in.php (multipart/form-data) or createTask (application/json).
  3. Get the result via res.php?id=... or getTaskResult.
  4. Check balance and user-agent via action=userinfo and action=useragent.

Core Endpoints

Endpoint Method Description
https://api.multibot.cloud/in.php POST/GET Submit task to classic API
https://api.multibot.cloud/res.php?key=APIKEY&id=ID GET Get result
https://api.multibot.cloud/createTask POST JSON Create task in JSON API
https://api.multibot.cloud/getTaskResult POST JSON Get result from JSON API
https://api.multibot.cloud/res.php?action=userinfo&key=APIKEY GET Balance and email
https://api.multibot.cloud/res.php?action=useragent&key=APIKEY GET Current user-agent

UA: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36

Try request

Build a quick request sample for any method below.

hCaptcha [Token]

Solve hCaptcha and return a token in h-captcha-response.

POST/GET https://api.multibot.cloud/in.php

Parameter Type Required Value
key String Yes Your API key
method String Yes hcaptcha
sitekey String Yes data-sitekey value on the page
pageurl String Yes Full page URL
enterprise Number (0/1) No 1 for hCaptcha Enterprise
data String No rqdata (usually for Enterprise)
isInvisible Number (0/1) No 1 for invisible mode
json Number (0/1) No 1 - JSON response
proxy String No http://LOGIN:PASS@IP:PORT or socks5://...
callbackUrl String No Result webhook (POST json)
						import requests

params = {
    "key": "APIKEY",
    "method": "hcaptcha",
    "pageurl": "https://site.com",
    "sitekey": "SITEKEY",
    "json": "1",
}

files = {k: (None, v) for k, v in params.items()}
resp = requests.post("https://api.multibot.cloud/in.php", files=files, timeout=20)
print(resp.text)
					
						(async () => {
  const params = new FormData();
  params.append("key", "APIKEY");
  params.append("method", "hcaptcha");
  params.append("pageurl", "https://site.com");
  params.append("sitekey", "SITEKEY");
  params.append("json", "1");

  const resp = await fetch("https://api.multibot.cloud/in.php", {
    method: "POST",
    body: params,
  });
  console.log(await resp.text());
})();
					

hCaptcha Click [Base64]

Solve hCaptcha by clicks: Grid, Canvas, Drag (JSON API).

POST https://api.multibot.cloud/createTask

Parameter Type Required Value
clientKey String Yes Your API key
type String Yes hCaptchaBase64
task.request_type String Yes Grid | Canvas | Drag
task.question String Yes Challenge text in English
task.body String Yes Image in Base64
task.examples Array No List of example images in Base64
task.humanMove Array No Mouse path [[start],[end]]
						import requests

payload = {
    "clientKey": "APIKEY",
    "type": "hCaptchaBase64",
    "task": {
        "request_type": "Grid",
        "question": "Select matching images",
        "body": "BASE64_IMAGE"
    }
}

resp = requests.post("https://api.multibot.cloud/createTask", json=payload, timeout=20)
print(resp.text)
					
						(async () => {
  const payload = {
      "clientKey": "APIKEY",
      "type": "hCaptchaBase64",
      "task": {
          "request_type": "Grid",
          "question": "Select matching images",
          "body": "BASE64_IMAGE"
      }
  }

  const resp = await fetch("https://api.multibot.cloud/createTask", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify(payload),
  });
  console.log(await resp.text());
})();
					

reCaptcha [Token]

Solve reCaptcha (v2/v3), token in g-recaptcha-response.

POST/GET https://api.multibot.cloud/in.php

Parameter Type Required Value
key String Yes Your API key
method String Yes userrecaptcha
version String No v2 (default) or v3
enterprise Number (0/1) No 1 for Enterprise
googlekey String Yes sitekey
pageurl String Yes Full page URL
action String No action for v3/Enterprise
json Number (0/1) No 1 - JSON response
proxy String No LOGIN:PASS@IP:PORT
callbackUrl String No Result webhook
						import requests

params = {
    "key": "APIKEY",
    "method": "userrecaptcha",
    "pageurl": "https://www.google.com/recaptcha/api2/demo",
    "googlekey": "SITEKEY",
    "json": "1",
}

files = {k: (None, v) for k, v in params.items()}
resp = requests.post("https://api.multibot.cloud/in.php", files=files, timeout=20)
print(resp.text)
					
						(async () => {
  const params = new FormData();
  params.append("key", "APIKEY");
  params.append("method", "userrecaptcha");
  params.append("pageurl", "https://www.google.com/recaptcha/api2/demo");
  params.append("googlekey", "SITEKEY");
  params.append("json", "1");

  const resp = await fetch("https://api.multibot.cloud/in.php", {
    method: "POST",
    body: params,
  });
  console.log(await resp.text());
})();
					

Turnstile [Token]

Regular Turnstile: token in cf-turnstile-response.

POST/GET https://api.multibot.cloud/in.php

Parameter Type Required Value
key String Yes Your API key
method String Yes turnstile
sitekey String Yes sitekey on the page
pageurl String Yes Full page URL
action String No Optional action parameter
json Number (0/1) No 1 - JSON response
proxy String No LOGIN:PASS@IP:PORT
callbackUrl String No Result webhook
						import requests

params = {
    "key": "APIKEY",
    "method": "turnstile",
    "pageurl": "https://site.com",
    "sitekey": "SITEKEY",
    "json": "1",
}

files = {k: (None, v) for k, v in params.items()}
resp = requests.post("https://api.multibot.cloud/in.php", files=files, timeout=20)
print(resp.text)
					
						(async () => {
  const params = new FormData();
  params.append("key", "APIKEY");
  params.append("method", "turnstile");
  params.append("pageurl", "https://site.com");
  params.append("sitekey", "SITEKEY");
  params.append("json", "1");

  const resp = await fetch("https://api.multibot.cloud/in.php", {
    method: "POST",
    body: params,
  });
  console.log(await resp.text());
})();
					

Turnstile on CloudFlare [Managed]

Managed challenge flow on CloudFlare with action/data/pagedata.

POST/GET https://api.multibot.cloud/in.php

Parameter Type Required Value
key String Yes Your API key
method String Yes turnstile
sitekey String Yes sitekey
pageurl String Yes Full page URL
action String Yes action parameter
data String Yes cData parameter
pagedata String Yes chlPageData parameter
json Number (0/1) No 1 - JSON response
proxy String No LOGIN:PASS@IP:PORT
callbackUrl String No Result webhook
						import requests

params = {
    "key": "APIKEY",
    "method": "turnstile",
    "pageurl": "https://site.com",
    "sitekey": "SITEKEY",
    "action": "managed",
    "data": "CDATA",
    "pagedata": "PAGEDATA",
    "json": "1",
}

files = {k: (None, v) for k, v in params.items()}
resp = requests.post("https://api.multibot.cloud/in.php", files=files, timeout=20)
print(resp.text)
					
						(async () => {
  const params = new FormData();
  params.append("key", "APIKEY");
  params.append("method", "turnstile");
  params.append("pageurl", "https://site.com");
  params.append("sitekey", "SITEKEY");
  params.append("action", "managed");
  params.append("data", "CDATA");
  params.append("pagedata", "PAGEDATA");
  params.append("json", "1");

  const resp = await fetch("https://api.multibot.cloud/in.php", {
    method: "POST",
    body: params,
  });
  console.log(await resp.text());
})();
					

CloudFlare [cf_clearance]

Bypass the Just a moment page and get cf_clearance cookie.

POST/GET https://api.multibot.cloud/in.php

Parameter Type Required Value
key String Yes Your API key
method String Yes turnstile
pageurl String Yes CloudFlare page URL
cf_clearance Number Yes 1
body String Yes Base64 HTML "Just a moment"
sitekey String No Default: 0x4AAAAAAADnPIDROrmt1Wwj
proxy String Yes LOGIN:PASS@IP:PORT
json Number (0/1) No 1 - JSON response
callbackUrl String No Result webhook
						import requests

params = {
    "key": "APIKEY",
    "method": "turnstile",
    "pageurl": "https://site.com",
    "cf_clearance": "1",
    "body": "BASE64_HTML",
    "proxy": "LOGIN:PASS@IP:PORT",
    "json": "1",
}

files = {k: (None, v) for k, v in params.items()}
resp = requests.post("https://api.multibot.cloud/in.php", files=files, timeout=20)
print(resp.text)
					
						(async () => {
  const params = new FormData();
  params.append("key", "APIKEY");
  params.append("method", "turnstile");
  params.append("pageurl", "https://site.com");
  params.append("cf_clearance", "1");
  params.append("body", "BASE64_HTML");
  params.append("proxy", "LOGIN:PASS@IP:PORT");
  params.append("json", "1");

  const resp = await fetch("https://api.multibot.cloud/in.php", {
    method: "POST",
    body: params,
  });
  console.log(await resp.text());
})();
					

FunCaptcha [Token]

Solve Arkose FunCaptcha with proxy/browser/HTTP settings.

POST https://api.multibot.cloud/in.php

Parameter Type Required Value
key String Yes Your API key
method String Yes FunCaptcha
sitekey String Yes sitekey value
proxy String Yes PROTOCOL://LOGIN:PASS@IP:PORT
browser_version String Yes Example: 145 or Edge145
locale String No Default: en-US
http_version Number No 2 by default, 3 for UDP proxy
blob String No For specific Arkose integrations
solve_pow Number (0/1) No 1 for ProofOfWork
extra_name String No For example: roblox_recovery
cookies String No Format: key=value; key=value
json Number (0/1) No 1 - JSON response
callbackUrl String No Result webhook

FunCaptcha Integration

Embedded helper with compatible browser versions and supported sitekeys. No iframe, directly inside the method section.

Supported browser versions

Choose a Chrome version to get matching User-Agent and Sec-CH-UA headers.

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36Sec-CH-UA: "Not(A:Brand";v="8", "Chromium";v="144", "Google Chrome";v="144"

Important: browser_version, User-Agent and Sec-CH-UA must match each other.

Supported sites (sitekey)

If you need another site, contact support with integration details and sitekey.

						import requests

params = {
    "key": "APIKEY",
    "method": "FunCaptcha",
    "sitekey": "SITEKEY",
    "proxy": "http://user:pass@host:port",
    "browser_version": "145",
    "json": "1",
}

files = {k: (None, v) for k, v in params.items()}
resp = requests.post("https://api.multibot.cloud/in.php", files=files, timeout=20)
print(resp.text)
					
						(async () => {
  const params = new FormData();
  params.append("key", "APIKEY");
  params.append("method", "FunCaptcha");
  params.append("sitekey", "SITEKEY");
  params.append("proxy", "http://user:pass@host:port");
  params.append("browser_version", "145");
  params.append("json", "1");

  const resp = await fetch("https://api.multibot.cloud/in.php", {
    method: "POST",
    body: params,
  });
  console.log(await resp.text());
})();
					

CaptchaFox [Token]

Solve CaptchaFox via in.php.

POST/GET https://api.multibot.cloud/in.php

Parameter Type Required Value
key String Yes Your API key
method String Yes captchafox
sitekey String Yes sitekey on the page
pageurl String Yes Full page URL
json Number (0/1) No 1 - JSON response
proxy String No LOGIN:PASS@IP:PORT
callbackUrl String No Result webhook
						import requests

params = {
    "key": "APIKEY",
    "method": "captchafox",
    "pageurl": "https://captchafox.com/",
    "sitekey": "SITEKEY",
    "json": "1",
}

files = {k: (None, v) for k, v in params.items()}
resp = requests.post("https://api.multibot.cloud/in.php", files=files, timeout=20)
print(resp.text)
					
						(async () => {
  const params = new FormData();
  params.append("key", "APIKEY");
  params.append("method", "captchafox");
  params.append("pageurl", "https://captchafox.com/");
  params.append("sitekey", "SITEKEY");
  params.append("json", "1");

  const resp = await fetch("https://api.multibot.cloud/in.php", {
    method: "POST",
    body: params,
  });
  console.log(await resp.text());
})();
					

Geetest v4 [Token]

Supports slide, icon, nine, winlinze, ai.

POST/GET https://api.multibot.cloud/in.php

Parameter Type Required Value
key String Yes Your API key
method String Yes geetest
captchaId String Yes captcha_id
riskType String Yes ai|slide|icon|nine|winlinze
challenge String No challenge if required
json Number (0/1) No 1 - JSON response
proxy String No http://... or socks5://...
callbackUrl String No Result webhook
						import requests

params = {
    "key": "APIKEY",
    "method": "geetest",
    "captchaId": "CAPTCHA_ID",
    "riskType": "slide",
    "json": "1",
}

files = {k: (None, v) for k, v in params.items()}
resp = requests.post("https://api.multibot.cloud/in.php", files=files, timeout=20)
print(resp.text)
					
						(async () => {
  const params = new FormData();
  params.append("key", "APIKEY");
  params.append("method", "geetest");
  params.append("captchaId", "CAPTCHA_ID");
  params.append("riskType", "slide");
  params.append("json", "1");

  const resp = await fetch("https://api.multibot.cloud/in.php", {
    method: "POST",
    body: params,
  });
  console.log(await resp.text());
})();
					

Image [OCR]

Recognize text from an image (Base64).

POST https://api.multibot.cloud/in.php

Parameter Type Required Value
key String Yes Your API key
method String Yes universal
body String Yes Image in Base64
json Number (0/1) No 1 - JSON response
callbackUrl String No Result webhook
						import requests

params = {
    "key": "APIKEY",
    "method": "universal",
    "body": "BASE64_IMAGE",
    "json": "1",
}

files = {k: (None, v) for k, v in params.items()}
resp = requests.post("https://api.multibot.cloud/in.php", files=files, timeout=20)
print(resp.text)
					
						(async () => {
  const params = new FormData();
  params.append("key", "APIKEY");
  params.append("method", "universal");
  params.append("body", "BASE64_IMAGE");
  params.append("json", "1");

  const resp = await fetch("https://api.multibot.cloud/in.php", {
    method: "POST",
    body: params,
  });
  console.log(await resp.text());
})();
					

Slider [Coordinate]

Universal slider method. Response: offset in pixels from the left edge.

POST https://api.multibot.cloud/in.php

Parameter Type Required Value
key String Yes Your API key
method String Yes slider
background String Yes Background in Base64
piece String Yes Puzzle piece in Base64
json Number (0/1) No 1 - JSON response
callbackUrl String No Result webhook
						import requests

params = {
    "key": "APIKEY",
    "method": "slider",
    "background": "BASE64_BACKGROUND",
    "piece": "BASE64_PIECE",
    "json": "1",
}

files = {k: (None, v) for k, v in params.items()}
resp = requests.post("https://api.multibot.cloud/in.php", files=files, timeout=20)
print(resp.text)
					
						(async () => {
  const params = new FormData();
  params.append("key", "APIKEY");
  params.append("method", "slider");
  params.append("background", "BASE64_BACKGROUND");
  params.append("piece", "BASE64_PIECE");
  params.append("json", "1");

  const resp = await fetch("https://api.multibot.cloud/in.php", {
    method: "POST",
    body: params,
  });
  console.log(await resp.text());
})();
					

Icons [Coordinate]

Universal icon-click method (Geetest/FaucetPay/Tencent/Yidun/Yandex). Response: click coordinates [X:Y, X:Y].

POST https://api.multibot.cloud/in.php

Parameter Type Required Value
key String Yes Your API key
method String Yes icons
type String Yes geetest_v3 | geetest_v4 | faucetpay | tencent | yidun | yandex
task String Yes Icon order or reference icon URLs
body String Yes Image in Base64
json Number (0/1) No 1 - JSON response
callbackUrl String No Result webhook
						import requests

params = {
    "key": "APIKEY",
    "method": "icons",
    "type": "faucetpay",
    "task": "calendar,buy,star",
    "body": "BASE64_IMAGE",
    "json": "1",
}

files = {k: (None, v) for k, v in params.items()}
resp = requests.post("https://api.multibot.cloud/in.php", files=files, timeout=20)
print(resp.text)
					
						(async () => {
  const params = new FormData();
  params.append("key", "APIKEY");
  params.append("method", "icons");
  params.append("type", "faucetpay");
  params.append("task", "calendar,buy,star");
  params.append("body", "BASE64_IMAGE");
  params.append("json", "1");

  const resp = await fetch("https://api.multibot.cloud/in.php", {
    method: "POST",
    body: params,
  });
  console.log(await resp.text());
})();
					

Classification [Coordinate]

Universal classification method (pCaptcha/GeetestGrid/AmazonGrid). Response: list of click coordinates.

POST https://api.multibot.cloud/in.php

Parameter Type Required Value
key String Yes Your API key
method String Yes cls
type String Yes pCaptcha | GeetestGrid | AmazonGrid
task String Yes Challenge text or reference, depends on type
body String Yes Image in Base64
json Number (0/1) No 1 - JSON response
callbackUrl String No Result webhook
						import requests

params = {
    "key": "APIKEY",
    "method": "cls",
    "type": "pCaptcha",
    "task": "Find the airplane",
    "body": "BASE64_IMAGE",
    "json": "1",
}

files = {k: (None, v) for k, v in params.items()}
resp = requests.post("https://api.multibot.cloud/in.php", files=files, timeout=20)
print(resp.text)
					
						(async () => {
  const params = new FormData();
  params.append("key", "APIKEY");
  params.append("method", "cls");
  params.append("type", "pCaptcha");
  params.append("task", "Find the airplane");
  params.append("body", "BASE64_IMAGE");
  params.append("json", "1");

  const resp = await fetch("https://api.multibot.cloud/in.php", {
    method: "POST",
    body: params,
  });
  console.log(await resp.text());
})();
					

RsCaptcha / IconCaptcha [Coordinate]

Response: click coordinates.

POST https://api.multibot.cloud/in.php

Parameter Type Required Value
key String Yes Your API key
method String Yes rscaptcha
body String Yes Image in Base64
json Number (0/1) No 1 - JSON response
callbackUrl String No Result webhook
						import requests

params = {
    "key": "APIKEY",
    "method": "rscaptcha",
    "body": "BASE64_IMAGE",
    "json": "1",
}

files = {k: (None, v) for k, v in params.items()}
resp = requests.post("https://api.multibot.cloud/in.php", files=files, timeout=20)
print(resp.text)
					
						(async () => {
  const params = new FormData();
  params.append("key", "APIKEY");
  params.append("method", "rscaptcha");
  params.append("body", "BASE64_IMAGE");
  params.append("json", "1");

  const resp = await fetch("https://api.multibot.cloud/in.php", {
    method: "POST",
    body: params,
  });
  console.log(await resp.text());
})();
					

Upside-Down [Coordinate]

Response: click coordinates.

POST https://api.multibot.cloud/in.php

Parameter Type Required Value
key String Yes Your API key
method String Yes upside
body String Yes Image in Base64
json Number (0/1) No 1 - JSON response
callbackUrl String No Result webhook
						import requests

params = {
    "key": "APIKEY",
    "method": "upside",
    "body": "BASE64_IMAGE",
    "json": "1",
}

files = {k: (None, v) for k, v in params.items()}
resp = requests.post("https://api.multibot.cloud/in.php", files=files, timeout=20)
print(resp.text)
					
						(async () => {
  const params = new FormData();
  params.append("key", "APIKEY");
  params.append("method", "upside");
  params.append("body", "BASE64_IMAGE");
  params.append("json", "1");

  const resp = await fetch("https://api.multibot.cloud/in.php", {
    method: "POST",
    body: params,
  });
  console.log(await resp.text());
})();
					

AntiBot [Coordinate]

Response: order of image identifiers to click.

POST https://api.multibot.cloud/in.php

Parameter Type Required Value
key String Yes Your API key
method String Yes antibot
main String Yes Main image in Base64
* Number/String Yes Identifier -> image in Base64
json Number (0/1) No 1 - JSON response
callbackUrl String No Result webhook
						import requests

params = {
    "key": "APIKEY",
    "method": "antibot",
    "main": "BASE64_MAIN",
    "1652": "BASE64_IMAGE_1",
    "5606": "BASE64_IMAGE_2",
    "8655": "BASE64_IMAGE_3",
    "json": "1",
}

files = {k: (None, v) for k, v in params.items()}
resp = requests.post("https://api.multibot.cloud/in.php", files=files, timeout=20)
print(resp.text)
					
						(async () => {
  const params = new FormData();
  params.append("key", "APIKEY");
  params.append("method", "antibot");
  params.append("main", "BASE64_MAIN");
  params.append("1652", "BASE64_IMAGE_1");
  params.append("5606", "BASE64_IMAGE_2");
  params.append("8655", "BASE64_IMAGE_3");
  params.append("json", "1");

  const resp = await fetch("https://api.multibot.cloud/in.php", {
    method: "POST",
    body: params,
  });
  console.log(await resp.text());
})();
					

Mouse Movement [Path]

Generate a human-like move/drag trajectory between points.

POST https://api.multibot.cloud/createTask

Parameter Type Required Value
clientKey String Yes Your API key
type String Yes humanMove
task Array Yes List of segments with type and patch
						import requests

payload = {
    "clientKey": "APIKEY",
    "type": "humanMove",
    "task": [
        {
            "type": "move",
            "patch": "[[0,0],[100,100]]"
        },
        {
            "type": "drag",
            "patch": "[[100,100],[190,190]]"
        }
    ]
}

resp = requests.post("https://api.multibot.cloud/createTask", json=payload, timeout=20)
print(resp.text)
					
						(async () => {
  const payload = {
      "clientKey": "APIKEY",
      "type": "humanMove",
      "task": [
          {
              "type": "move",
              "patch": "[[0,0],[100,100]]"
          },
          {
              "type": "drag",
              "patch": "[[100,100],[190,190]]"
          }
      ]
  }

  const resp = await fetch("https://api.multibot.cloud/createTask", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify(payload),
  });
  console.log(await resp.text());
})();
					

Error Description

Error Description
ERROR_METHOD_DOES_NOT_EXIST Captcha type (method) is incorrect.
WRONG_METHOD Parameter method is missing.
ERROR_BAD_DATA One or more required parameters are missing.
ERROR_WRONG_USER_KEY API key does not exist or has an invalid format.
ERROR_ZERO_BALANCE Insufficient balance.
WRONG_COUNT_IMG For method=antibot, fewer than 3 images were sent.
CAPCHA_NOT_READY Solution is not ready yet, try again later.
WRONG_CAPTCHA_ID Captcha with this ID was not found.
WRONG_REQUESTS_LINK / WRONG_LOAD_PAGEURL Check pageurl format.
ERROR_SITEKEY / SITEKEY_IS_INCORRECT Invalid sitekey.
WRONG_RESULT Service could not solve the captcha.
HCAPTCHA_NOT_FOUND / TURNSTILE_NOT_FOUND The required captcha type was not found on the provided page.

Extensions

Useful tools and browser extensions for faster integration.