Get API Key

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:

  • en for the English-language worker pool
  • ru for 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
}