Methods
The API has three POST methods. createTask sends the captcha for solving, getTaskResult returns the solution, and getBalance shows the account balance. Each request uses a JSON body with clientKey.
POST /createTask#
Creates a captcha solving task and returns its taskId. The task type price is reserved on the balance and charged only if the task is solved.
The request accepts an optional top-level languagePool field. It is separate from the task object and applies to all captcha types.
Request#
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "RecaptchaV2TaskProxyless",
"websiteURL": "https://example.com/login",
"websiteKey": "6Le-xxxxxxxxxxxxxxxxxxxxxxxxxxxx"
},
"languagePool": "en"
}
languagePool accepts:
enfor the English-language worker poolrufor the Russian-language worker pool
Response#
{
"errorId": 0,
"taskId": 100
}
Supported task types#
RecaptchaV2TaskProxyless
RecaptchaV2Task
RecaptchaV3TaskProxyless
RecaptchaV2EnterpriseTaskProxyless
RecaptchaV2EnterpriseTask
TurnstileTaskProxyless
TurnstileTask
YandexSmartCaptchaTaskProxyless
YandexSmartCaptchaTask
GeeTestTaskProxyless
GeeTestTask
TencentTaskProxyless
TencentTask
ImageToTextTask
CoordinatesTask
Types without the Proxyless suffix use your proxy and require:
proxyType
proxyAddress
proxyPort
The optional proxy authentication fields are:
proxyLogin
proxyPassword
For most proxy-based captcha types, proxyType accepts:
http
socks4
socks5
Yandex SmartCaptcha additionally supports:
https
reCAPTCHA v2#
Types:
RecaptchaV2TaskProxyless
RecaptchaV2Task
| Parameter | Required | Type | Description |
|---|---|---|---|
websiteURL |
yes | string | Full URL of the page where the captcha is located |
websiteKey |
yes | string | Value of the data-sitekey attribute of the reCAPTCHA widget |
isInvisible |
no | bool | true for invisible reCAPTCHA |
recaptchaDataSValue |
no | string | Value of the data-s parameter used on some Google pages |
apiDomain |
no | string | Domain used to load reCAPTCHA, google.com or recaptcha.net |
userAgent |
no | string | User-Agent used during solving |
cookies |
no | string | Cookies associated with the solving session |
enterprisePayload |
no | object | Additional parameters for reCAPTCHA v2 Enterprise when supported by the task |
For RecaptchaV2Task, add:
| Parameter | Required | Type | Description |
|---|---|---|---|
proxyType |
yes | string | http, socks4, or socks5 |
proxyAddress |
yes | string | Proxy IP address or hostname |
proxyPort |
yes | int | Proxy port |
proxyLogin |
no | string | Proxy authentication login |
proxyPassword |
no | string | Proxy authentication password |
Task example#
{
"type": "RecaptchaV2TaskProxyless",
"websiteURL": "https://example.com/login",
"websiteKey": "6Le-xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"isInvisible": false
}
Solution#
The solution key is:
gRecaptchaResponse
reCAPTCHA v2 Enterprise#
Types:
RecaptchaV2EnterpriseTaskProxyless
RecaptchaV2EnterpriseTask
The parameters are the same as reCAPTCHA v2.
For Enterprise tasks, enterprisePayload can be used to pass additional Enterprise-specific parameters.
Task example#
{
"type": "RecaptchaV2EnterpriseTaskProxyless",
"websiteURL": "https://example.com/login",
"websiteKey": "6Le-xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"enterprisePayload": {
"s": "data-s-value"
}
}
For RecaptchaV2EnterpriseTask, add the proxy parameters:
{
"type": "RecaptchaV2EnterpriseTask",
"websiteURL": "https://example.com/login",
"websiteKey": "6Le-xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"proxyType": "http",
"proxyAddress": "1.2.3.4",
"proxyPort": 8080
}
Solution#
The solution key is:
gRecaptchaResponse
reCAPTCHA v3#
Type:
RecaptchaV3TaskProxyless
A proxy is not required for reCAPTCHA v3.
| Parameter | Required | Type | Description |
|---|---|---|---|
websiteURL |
yes | string | Full URL of the page with the captcha |
websiteKey |
yes | string | Site key of the reCAPTCHA v3 widget |
minScore |
yes | float | Required score: 0.3, 0.7, or 0.9 |
pageAction |
no | string | Value of the action parameter used by the website |
isEnterprise |
no | bool | Set to true for reCAPTCHA v3 Enterprise |
apiDomain |
no | string | google.com or recaptcha.net |
minScore must be one of:
0.3
0.7
0.9
Task example#
{
"type": "RecaptchaV3TaskProxyless",
"websiteURL": "https://example.com/login",
"websiteKey": "6Le-xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"minScore": 0.3,
"pageAction": "login",
"isEnterprise": false
}
Solution#
The solution key is:
gRecaptchaResponse
Cloudflare Turnstile#
Types:
TurnstileTaskProxyless
TurnstileTask
| Parameter | Required | Type | Description |
|---|---|---|---|
websiteURL |
yes | string | Full URL of the page where Turnstile is loaded |
websiteKey |
yes | string | Turnstile sitekey |
action |
no | string | action value from the turnstile.render call |
data |
no | string | cData value from the turnstile.render call |
pagedata |
no | string | chlPageData value from the turnstile.render call |
userAgent |
no | string | User-Agent used during solving |
The action, data, and pagedata parameters are required for Cloudflare Challenge pages when the page provides these values.
For TurnstileTask, add:
| Parameter | Required | Type | Description |
|---|---|---|---|
proxyType |
yes | string | http, socks4, or socks5 |
proxyAddress |
yes | string | Proxy IP address or hostname |
proxyPort |
yes | int | Proxy port |
proxyLogin |
no | string | Proxy authentication login |
proxyPassword |
no | string | Proxy authentication password |
Standalone Turnstile example#
{
"type": "TurnstileTaskProxyless",
"websiteURL": "https://example.com/login",
"websiteKey": "0x4AAAAAAAxxxxxxxxxxxxxxxx"
}
Cloudflare Challenge example#
{
"type": "TurnstileTaskProxyless",
"websiteURL": "https://example.com/",
"websiteKey": "0x4AAAAAAAxxxxxxxxxxxxxxxx",
"action": "managed",
"data": "80001aa1affffc21",
"pagedata": "3gAFo2l...55NDFPRFE9",
"userAgent": "Mozilla/5.0 ..."
}
Solution#
The solution key is:
token
For Cloudflare Challenge pages, the response also includes userAgent.
Yandex SmartCaptcha#
Types:
YandexSmartCaptchaTaskProxyless
YandexSmartCaptchaTask
Yandex SmartCaptcha supports token-based solving.
| Parameter | Required | Type | Description |
|---|---|---|---|
websiteURL |
yes | string | Full URL of the page where the captcha is loaded |
websiteKey |
yes | string | Yandex SmartCaptcha sitekey |
userAgent |
no | string | User-Agent used during solving |
cookies |
no | string | Cookies in name1=value1;name2=value2 format |
For YandexSmartCaptchaTask, add:
| Parameter | Required | Type | Description |
|---|---|---|---|
proxyType |
yes | string | http, https, socks4, or socks5 |
proxyAddress |
yes | string | Proxy IP address or hostname |
proxyPort |
yes | int | Proxy port |
proxyLogin |
no | string | Proxy authentication login |
proxyPassword |
no | string | Proxy authentication password |
Task example#
{
"type": "YandexSmartCaptchaTaskProxyless",
"websiteURL": "https://example.com/login",
"websiteKey": "Y5Lh0ti..."
}
Solution#
The solution key is:
token
Example:
{
"errorId": 0,
"status": "ready",
"solution": {
"token": "dV9xNjYyNTU3NjkxO4k9OTQuNVMuMjkuMjM9..."
}
}
Yandex SmartCaptcha image tasks#
Yandex SmartCaptcha image tasks use CoordinatesTask.
Only the object-selection variant is documented here.
imgType: smart_captcha
| Parameter | Required | Type | Description |
|---|---|---|---|
type |
yes | string | CoordinatesTask |
body |
yes | string | Main captcha image in Base64 |
imgType |
yes | string | smart_captcha |
imgInstructions |
yes | string | Instruction image in Base64 |
comment |
no | string | Text instruction for the worker |
Task example#
{
"type": "CoordinatesTask",
"body": "BASE64_IMAGE",
"imgType": "smart_captcha",
"imgInstructions": "BASE64_INSTRUCTION_IMAGE",
"comment": "select objects in the order of the instruction"
}
Solution#
The solution key is:
coordinates
Image to Text#
Type:
ImageToTextTask
This task recognizes text from an image. It does not require websiteURL, websiteKey, or proxy parameters.
| Parameter | Required | Type | Description |
|---|---|---|---|
body |
yes | string | Image encoded in Base64 |
phrase |
no | bool | Set to true if the answer contains multiple words |
case |
no | bool | Set to true to make the answer case-sensitive |
numeric |
no | int | Character type restriction |
math |
no | bool | Set to true if the image contains a mathematical expression |
minLength |
no | int | Minimum answer length |
maxLength |
no | int | Maximum answer length |
comment |
no | string | Additional instruction for the worker |
imgInstructions |
no | string | Optional instruction image in Base64 |
numeric values:
0 = not specified
1 = numbers only
2 = letters only
3 = any characters, but at least one number
4 = any characters, but at least one letter
Task example#
{
"type": "ImageToTextTask",
"body": "iVBORw0KGgoAAAANSUhEUgAA...",
"numeric": 1,
"minLength": 4,
"maxLength": 6
}
Solution#
The solution key is:
text
Example:
{
"errorId": 0,
"status": "ready",
"solution": {
"text": "aB3fX9"
}
}
Coordinates#
Type:
CoordinatesTask
The task returns coordinates of points to click on an image.
Supported image formats:
JPEG
PNG
GIF
Maximum file size:
600 kB
Maximum image dimension:
1000 px
| Parameter | Required | Type | Description |
|---|---|---|---|
body |
yes | string | Image encoded in Base64 |
comment |
no | string | Text instruction shown to the worker |
imgInstructions |
no | string | Optional instruction image in Base64 |
minClicks |
no | int | Minimum number of clicks. Default: 1 |
maxClicks |
no | int | Maximum number of clicks |
Task example#
{
"type": "CoordinatesTask",
"body": "BASE64_IMAGE",
"comment": "click on the green apple",
"minClicks": 1,
"maxClicks": 3
}
Solution#
{
"errorId": 0,
"status": "ready",
"solution": {
"coordinates": [
{
"x": 358,
"y": 268
}
]
}
}
The solution key is:
coordinates
Coordinates are measured relative to the top-left corner of the captcha image.
GeeTest v3#
Types:
GeeTestTaskProxyless
GeeTestTask
The same task types are used for GeeTest v4. The version is selected using version.
For GeeTest v3, version defaults to 3.
| Parameter | Required | Type | Description |
|---|---|---|---|
websiteURL |
yes | string | Full URL of the page where GeeTest is loaded |
gt |
yes | string | GeeTest gt value |
challenge |
yes | string | Current GeeTest challenge value |
geetestApiServerSubdomain |
no | string | Custom GeeTest API server subdomain |
userAgent |
no | string | User-Agent used during solving |
risk_type |
no | string | Dynamic risk_type value from the captcha loading request |
version |
no | int | GeeTest version. Defaults to 3 |
For GeeTestTask, add:
proxyType
proxyAddress
proxyPort
proxyLogin
proxyPassword
Task example#
{
"type": "GeeTestTaskProxyless",
"websiteURL": "https://example.com/login",
"gt": "f2ae6cadcf7886856696c46d84d109d1",
"challenge": "12345678abc90123d45678e90123f45g6"
}
Solution#
The solution contains:
challenge
validate
seccode
Example:
{
"errorId": 0,
"status": "ready",
"solution": {
"challenge": "12345678abc90123d45678e90123f45g6",
"validate": "0a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p",
"seccode": "0a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p|jordan"
}
}
GeeTest v4#
Types:
GeeTestTaskProxyless
GeeTestTask
Set:
version: 4
For GeeTest v4, gt and challenge are not used.
| Parameter | Required | Type | Description |
|---|---|---|---|
websiteURL |
yes | string | Full URL of the page where GeeTest is loaded |
version |
yes | int | Must be 4 |
initParameters |
yes | object | Initialization parameters |
initParameters.captcha_id |
yes | string | GeeTest v4 captcha ID |
userAgent |
no | string | User-Agent used during solving |
risk_type |
no | string | Dynamic risk_type value when provided by the captcha |
Task example#
{
"type": "GeeTestTaskProxyless",
"websiteURL": "https://example.com/login",
"version": 4,
"initParameters": {
"captcha_id": "e392e65f912c780f2c3ebac7702651de"
}
}
Solution#
{
"errorId": 0,
"status": "ready",
"solution": {
"captcha_id": "e392e65f912c780f2c3ebac7702651de",
"lot_number": "...",
"pass_token": "...",
"gen_time": "...",
"captcha_output": "..."
}
}
The solution keys are:
captcha_id
lot_number
pass_token
gen_time
captcha_output
Tencent#
Types:
TencentTaskProxyless
TencentTask
| Parameter | Required | Type | Description |
|---|---|---|---|
websiteURL |
yes | string | Full URL of the page where Tencent captcha is loaded |
appId |
yes | string | Tencent captcha application ID |
captchaScript |
no | string | Captcha script URL. The default is https://turing.captcha.qcloud.com/TCaptcha.js |
For TencentTask, add:
| Parameter | Required | Type | Description |
|---|---|---|---|
proxyType |
yes | string | http, socks4, or socks5 |
proxyAddress |
yes | string | Proxy IP address or hostname |
proxyPort |
yes | int | Proxy port |
proxyLogin |
no | string | Proxy authentication login |
proxyPassword |
no | string | Proxy authentication password |
Task example#
{
"type": "TencentTaskProxyless",
"websiteURL": "https://example.com/login",
"appId": "190014885"
}
Task with custom captcha script#
{
"type": "TencentTaskProxyless",
"websiteURL": "https://example.com/login",
"appId": "190014885",
"captchaScript": "https://turing.captcha.qcloud.com/TCaptcha.js"
}
Solution#
{
"errorId": 0,
"status": "ready",
"solution": {
"appid": "190014885",
"ret": 0,
"ticket": "tr0344...",
"randstr": "@KVN"
}
}
The solution keys are:
appid
ret
ticket
randstr
POST /getTaskResult#
Returns the current task status.
While the task is being solved:
processing
When the solution is ready:
ready
Request#
{
"clientKey": "YOUR_API_KEY",
"taskId": 100
}
Processing response#
{
"errorId": 0,
"status": "processing"
}
reCAPTCHA v2 / v3#
{
"errorId": 0,
"status": "ready",
"solution": {
"gRecaptchaResponse": "03AGdBq..."
}
}
Turnstile#
{
"errorId": 0,
"status": "ready",
"solution": {
"token": "0.zxcv..."
}
}
Yandex SmartCaptcha#
{
"errorId": 0,
"status": "ready",
"solution": {
"token": "dV9xNjYyNTU3NjkxO4k9OTQuNVMuMjkuMjM9..."
}
}
Image to Text#
{
"errorId": 0,
"status": "ready",
"solution": {
"text": "aB3fX9"
}
}
Coordinates#
{
"errorId": 0,
"status": "ready",
"solution": {
"coordinates": [
{
"x": 358,
"y": 268
}
]
}
}
GeeTest v3#
{
"errorId": 0,
"status": "ready",
"solution": {
"challenge": "12345678abc90123d45678e90123f45g6",
"validate": "0a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p",
"seccode": "0a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p|jordan"
}
}
GeeTest v4#
{
"errorId": 0,
"status": "ready",
"solution": {
"captcha_id": "e392e65f912c780f2c3ebac7702651de",
"lot_number": "...",
"pass_token": "...",
"gen_time": "...",
"captcha_output": "..."
}
}
Tencent#
{
"errorId": 0,
"status": "ready",
"solution": {
"appid": "190014885",
"ret": 0,
"ticket": "tr0344...",
"randstr": "@KVN"
}
}
The solution keys depend on the captcha type:
gRecaptchaResponse
token
text
coordinates
challenge
validate
seccode
captcha_id
lot_number
pass_token
gen_time
captcha_output
appid
ret
ticket
randstr
POST /getBalance#
Returns the current available account balance.
Request#
{
"clientKey": "YOUR_API_KEY"
}
Response#
{
"errorId": 0,
"balance": 12.34
}