{
  "openapi": "3.1.0",
  "info": {
    "title": "YesCaptcha API",
    "version": "2026-10-15",
    "summary": "Captcha recognition API: reCAPTCHA, hCaptcha, Cloudflare Turnstile, FunCaptcha, AWS WAF and image captchas.",
    "description": "All methods take a JSON body with POST (except GET /useragent) and return HTTP 200 with errorId 0 on success or errorId 1 plus errorCode on failure. Prices are in points (1,000 points = CNY 1); failed and timed-out tasks are refunded. Documentation: https://docs.yescaptcha.com/en/",
    "contact": {
      "name": "YesCaptcha support",
      "email": "yescaptcha@gmail.com",
      "url": "https://docs.yescaptcha.com/en/help/contact/"
    }
  },
  "externalDocs": {
    "url": "https://docs.yescaptcha.com/en/",
    "description": "YesCaptcha Docs"
  },
  "servers": [
    {
      "url": "https://api.yescaptcha.com",
      "description": "Global endpoint"
    },
    {
      "url": "https://cn.yescaptcha.com",
      "description": "China endpoint (tasks are not shared between endpoints)"
    }
  ],
  "paths": {
    "/createTask": {
      "post": {
        "operationId": "createTask",
        "summary": "Create a task",
        "description": "Creates a recognition task. Asynchronous types return a taskId; synchronous types return the solution directly. The balance must be above 10 points.",
        "externalDocs": {
          "url": "https://docs.yescaptcha.com/en/api/create-task/"
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "clientKey",
                  "task"
                ],
                "properties": {
                  "clientKey": {
                    "type": "string",
                    "description": "Your account client key, copied in full from the yescaptcha.com dashboard.",
                    "examples": [
                      "YOUR_CLIENT_KEY"
                    ]
                  },
                  "task": {
                    "oneOf": [
                      {
                        "$ref": "#/components/schemas/Task_NoCaptchaTaskProxyless"
                      },
                      {
                        "$ref": "#/components/schemas/Task_RecaptchaV2TaskProxyless"
                      },
                      {
                        "$ref": "#/components/schemas/Task_NoCaptchaTask"
                      },
                      {
                        "$ref": "#/components/schemas/Task_RecaptchaV2EnterpriseTaskProxyless"
                      },
                      {
                        "$ref": "#/components/schemas/Task_RecaptchaV2EnterpriseTask"
                      },
                      {
                        "$ref": "#/components/schemas/Task_RecaptchaV3TaskProxyless"
                      },
                      {
                        "$ref": "#/components/schemas/Task_RecaptchaV3TaskProxylessM1"
                      },
                      {
                        "$ref": "#/components/schemas/Task_RecaptchaV3TaskProxylessM1S7"
                      },
                      {
                        "$ref": "#/components/schemas/Task_RecaptchaV3TaskProxylessM1S9"
                      },
                      {
                        "$ref": "#/components/schemas/Task_RecaptchaV3EnterpriseTask"
                      },
                      {
                        "$ref": "#/components/schemas/Task_RecaptchaV3EnterpriseTaskM1"
                      },
                      {
                        "$ref": "#/components/schemas/Task_HCaptchaTaskProxyless"
                      },
                      {
                        "$ref": "#/components/schemas/Task_HCaptchaTaskProxylessM1"
                      },
                      {
                        "$ref": "#/components/schemas/Task_HCaptchaTask"
                      },
                      {
                        "$ref": "#/components/schemas/Task_TurnstileTaskProxyless"
                      },
                      {
                        "$ref": "#/components/schemas/Task_TurnstileTaskProxylessM1"
                      },
                      {
                        "$ref": "#/components/schemas/Task_TurnstileTask"
                      },
                      {
                        "$ref": "#/components/schemas/Task_CloudFlareTaskS2"
                      },
                      {
                        "$ref": "#/components/schemas/Task_CloudFlareTaskS3"
                      },
                      {
                        "$ref": "#/components/schemas/Task_FunCaptchaTaskProxyless"
                      },
                      {
                        "$ref": "#/components/schemas/Task_FunCaptchaTaskProxylessM1"
                      },
                      {
                        "$ref": "#/components/schemas/Task_FunCaptchaTask"
                      },
                      {
                        "$ref": "#/components/schemas/Task_ImageToTextTaskOcrBase"
                      },
                      {
                        "$ref": "#/components/schemas/Task_ImageToTextTaskMuggle"
                      },
                      {
                        "$ref": "#/components/schemas/Task_ImageToTextTask"
                      },
                      {
                        "$ref": "#/components/schemas/Task_ImageToTextTaskM1"
                      },
                      {
                        "$ref": "#/components/schemas/Task_ReCaptchaV2Classification"
                      },
                      {
                        "$ref": "#/components/schemas/Task_HCaptchaClassification"
                      },
                      {
                        "$ref": "#/components/schemas/Task_FunCaptchaClassification"
                      },
                      {
                        "$ref": "#/components/schemas/Task_AwsClassification"
                      },
                      {
                        "$ref": "#/components/schemas/Task_bCaptchaClassification"
                      }
                    ],
                    "discriminator": {
                      "propertyName": "type"
                    }
                  },
                  "softID": {
                    "type": "integer",
                    "description": "Optional developer ID for revenue share"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Task created (or solved, for synchronous types)",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/CreateTaskResponse"
                    },
                    {
                      "$ref": "#/components/schemas/ErrorResponse"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/getTaskResult": {
      "post": {
        "operationId": "getTaskResult",
        "summary": "Get the task result",
        "description": "Poll every 5 seconds until status is ready. Requests for the same taskId within 5 seconds return processing. Results are kept for about 10 minutes.",
        "externalDocs": {
          "url": "https://docs.yescaptcha.com/en/api/get-task-result/"
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "clientKey",
                  "taskId"
                ],
                "properties": {
                  "clientKey": {
                    "type": "string",
                    "description": "Your account client key, copied in full from the yescaptcha.com dashboard.",
                    "examples": [
                      "YOUR_CLIENT_KEY"
                    ]
                  },
                  "taskId": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Task status and solution",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/TaskResultResponse"
                    },
                    {
                      "$ref": "#/components/schemas/ErrorResponse"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/getBalance": {
      "post": {
        "operationId": "getBalance",
        "summary": "Get the account balance",
        "externalDocs": {
          "url": "https://docs.yescaptcha.com/en/api/get-balance/"
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "clientKey"
                ],
                "properties": {
                  "clientKey": {
                    "type": "string",
                    "description": "Your account client key, copied in full from the yescaptcha.com dashboard.",
                    "examples": [
                      "YOUR_CLIENT_KEY"
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Balance",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "object",
                      "properties": {
                        "errorId": {
                          "const": 0
                        },
                        "balance": {
                          "type": "number",
                          "description": "Balance in points"
                        },
                        "softBalance": {
                          "type": "number",
                          "description": "Developer revenue share balance (CNY)"
                        },
                        "inviteBalance": {
                          "type": "number",
                          "description": "Referral reward balance (CNY)"
                        },
                        "inviteBy": {
                          "type": "integer",
                          "description": "Inviter's developer ID, 0 if none"
                        }
                      }
                    },
                    {
                      "$ref": "#/components/schemas/ErrorResponse"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/getSoftID": {
      "post": {
        "operationId": "getSoftID",
        "summary": "Get your developer ID",
        "externalDocs": {
          "url": "https://docs.yescaptcha.com/en/api/get-soft-id/"
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "clientKey"
                ],
                "properties": {
                  "clientKey": {
                    "type": "string",
                    "description": "Your account client key, copied in full from the yescaptcha.com dashboard.",
                    "examples": [
                      "YOUR_CLIENT_KEY"
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Developer ID",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "object",
                      "properties": {
                        "errorId": {
                          "const": 0
                        },
                        "softID": {
                          "type": "integer"
                        },
                        "balance": {
                          "type": "number",
                          "description": "Revenue share balance (CNY)"
                        }
                      }
                    },
                    {
                      "$ref": "#/components/schemas/ErrorResponse"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/report": {
      "post": {
        "operationId": "report",
        "summary": "Report task results",
        "description": "Report whether tasks succeeded. Failed image recognition tasks reported within 1 hour may be refunded after about 24 hours.",
        "externalDocs": {
          "url": "https://docs.yescaptcha.com/en/api/report/"
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id",
                  "isSuccess"
                ],
                "properties": {
                  "id": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "One or more taskIds"
                  },
                  "isSuccess": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Report accepted",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "object",
                      "properties": {
                        "errorId": {
                          "const": 0
                        },
                        "status": {
                          "type": "string"
                        }
                      }
                    },
                    {
                      "$ref": "#/components/schemas/ErrorResponse"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/useragent": {
      "get": {
        "operationId": "useragent",
        "summary": "Get the recommended User-Agent",
        "externalDocs": {
          "url": "https://docs.yescaptcha.com/en/api/useragent/"
        },
        "responses": {
          "200": {
            "description": "The browser User-Agent to use with hCaptcha tasks",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Task_NoCaptchaTaskProxyless": {
        "type": "object",
        "title": "NoCaptchaTaskProxyless",
        "description": "15 points per task (CNY 0.015), asynchronous: poll getTaskResult every 5 seconds.",
        "required": [
          "type",
          "websiteURL",
          "websiteKey"
        ],
        "properties": {
          "type": {
            "type": "string",
            "const": "NoCaptchaTaskProxyless"
          },
          "websiteURL": {
            "type": "string",
            "description": "Full URL of the page that shows the captcha. Use the site you see the captcha on, not the captcha vendor's domain",
            "examples": [
              "https://www.google.com/recaptcha/api2/demo"
            ]
          },
          "websiteKey": {
            "type": "string",
            "description": "The site key (sitekey), found in the page source or network requests; usually does not change",
            "examples": [
              "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"
            ]
          },
          "isInvisible": {
            "type": "boolean",
            "description": "Set to true for the invisible variant; omit otherwise"
          }
        }
      },
      "Task_RecaptchaV2TaskProxyless": {
        "type": "object",
        "title": "RecaptchaV2TaskProxyless",
        "description": "20 points per task (CNY 0.02), asynchronous: poll getTaskResult every 5 seconds. Same parameters as NoCaptchaTaskProxyless on a different route; use either as a fallback.",
        "required": [
          "type",
          "websiteURL",
          "websiteKey"
        ],
        "properties": {
          "type": {
            "type": "string",
            "const": "RecaptchaV2TaskProxyless"
          },
          "websiteURL": {
            "type": "string",
            "description": "Full URL of the page that shows the captcha. Use the site you see the captcha on, not the captcha vendor's domain",
            "examples": [
              "https://www.google.com/recaptcha/api2/demo"
            ]
          },
          "websiteKey": {
            "type": "string",
            "description": "The site key (sitekey), found in the page source or network requests; usually does not change",
            "examples": [
              "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"
            ]
          },
          "isInvisible": {
            "type": "boolean",
            "description": "Set to true for the invisible variant; omit otherwise"
          }
        }
      },
      "Task_NoCaptchaTask": {
        "type": "object",
        "title": "NoCaptchaTask",
        "description": "15 points per task (CNY 0.015), asynchronous: poll getTaskResult every 5 seconds.",
        "required": [
          "type",
          "websiteURL",
          "websiteKey",
          "proxyType",
          "proxyAddress",
          "proxyPort"
        ],
        "properties": {
          "type": {
            "type": "string",
            "const": "NoCaptchaTask"
          },
          "websiteURL": {
            "type": "string",
            "description": "Full URL of the page that shows the captcha. Use the site you see the captcha on, not the captcha vendor's domain",
            "examples": [
              "https://www.google.com/recaptcha/api2/demo"
            ]
          },
          "websiteKey": {
            "type": "string",
            "description": "The site key (sitekey), found in the page source or network requests; usually does not change",
            "examples": [
              "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"
            ]
          },
          "proxyType": {
            "type": "string",
            "description": "Proxy protocol: http, https, socks4 or socks5",
            "examples": [
              "http"
            ]
          },
          "proxyAddress": {
            "type": "string",
            "description": "Proxy IP address or hostname. Local or private addresses such as 127.0.0.1 or 192.168.x.x will not work because our servers cannot reach them",
            "examples": [
              "proxy.example.com"
            ]
          },
          "proxyPort": {
            "type": "integer",
            "description": "Proxy port",
            "examples": [
              8080
            ]
          },
          "isInvisible": {
            "type": "boolean",
            "description": "Set to true for the invisible variant; omit otherwise"
          },
          "proxyLogin": {
            "type": "string",
            "description": "Proxy username, if the proxy requires authentication"
          },
          "proxyPassword": {
            "type": "string",
            "description": "Proxy password, if the proxy requires authentication"
          },
          "userAgent": {
            "type": "string",
            "description": "Browser User-Agent. If the result contains a userAgent, use that value when you submit the token"
          }
        }
      },
      "Task_RecaptchaV2EnterpriseTaskProxyless": {
        "type": "object",
        "title": "RecaptchaV2EnterpriseTaskProxyless",
        "description": "20 points per task (CNY 0.02), asynchronous: poll getTaskResult every 5 seconds.",
        "required": [
          "type",
          "websiteURL",
          "websiteKey"
        ],
        "properties": {
          "type": {
            "type": "string",
            "const": "RecaptchaV2EnterpriseTaskProxyless"
          },
          "websiteURL": {
            "type": "string",
            "description": "Full URL of the page that shows the captcha. Use the site you see the captcha on, not the captcha vendor's domain",
            "examples": [
              "https://www.google.com/recaptcha/api2/demo"
            ]
          },
          "websiteKey": {
            "type": "string",
            "description": "The site key (sitekey), found in the page source or network requests; usually does not change",
            "examples": [
              "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"
            ]
          },
          "isInvisible": {
            "type": "boolean",
            "description": "Set to true for the invisible variant; omit otherwise"
          },
          "enterprisePayload": {
            "type": "object",
            "description": "Extra enterprise parameters, such as the reCAPTCHA Enterprise s value: {\"s\": \"...\"}. Omit if the page does not use it"
          }
        }
      },
      "Task_RecaptchaV2EnterpriseTask": {
        "type": "object",
        "title": "RecaptchaV2EnterpriseTask",
        "description": "20 points per task (CNY 0.02), asynchronous: poll getTaskResult every 5 seconds.",
        "required": [
          "type",
          "websiteURL",
          "websiteKey",
          "proxyType",
          "proxyAddress",
          "proxyPort"
        ],
        "properties": {
          "type": {
            "type": "string",
            "const": "RecaptchaV2EnterpriseTask"
          },
          "websiteURL": {
            "type": "string",
            "description": "Full URL of the page that shows the captcha. Use the site you see the captcha on, not the captcha vendor's domain",
            "examples": [
              "https://www.google.com/recaptcha/api2/demo"
            ]
          },
          "websiteKey": {
            "type": "string",
            "description": "The site key (sitekey), found in the page source or network requests; usually does not change",
            "examples": [
              "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"
            ]
          },
          "proxyType": {
            "type": "string",
            "description": "Proxy protocol: http, https, socks4 or socks5",
            "examples": [
              "http"
            ]
          },
          "proxyAddress": {
            "type": "string",
            "description": "Proxy IP address or hostname. Local or private addresses such as 127.0.0.1 or 192.168.x.x will not work because our servers cannot reach them",
            "examples": [
              "proxy.example.com"
            ]
          },
          "proxyPort": {
            "type": "integer",
            "description": "Proxy port",
            "examples": [
              8080
            ]
          },
          "isInvisible": {
            "type": "boolean",
            "description": "Set to true for the invisible variant; omit otherwise"
          },
          "enterprisePayload": {
            "type": "object",
            "description": "Extra enterprise parameters, such as the reCAPTCHA Enterprise s value: {\"s\": \"...\"}. Omit if the page does not use it"
          },
          "proxyLogin": {
            "type": "string",
            "description": "Proxy username, if the proxy requires authentication"
          },
          "proxyPassword": {
            "type": "string",
            "description": "Proxy password, if the proxy requires authentication"
          },
          "userAgent": {
            "type": "string",
            "description": "Browser User-Agent. If the result contains a userAgent, use that value when you submit the token"
          }
        }
      },
      "Task_RecaptchaV3TaskProxyless": {
        "type": "object",
        "title": "RecaptchaV3TaskProxyless",
        "description": "20 points per task (CNY 0.02), asynchronous: poll getTaskResult every 5 seconds.",
        "required": [
          "type",
          "websiteURL",
          "websiteKey"
        ],
        "properties": {
          "type": {
            "type": "string",
            "const": "RecaptchaV3TaskProxyless"
          },
          "websiteURL": {
            "type": "string",
            "description": "Full URL of the page that shows the captcha. Use the site you see the captcha on, not the captcha vendor's domain",
            "examples": [
              "https://www.google.com/recaptcha/api2/demo"
            ]
          },
          "websiteKey": {
            "type": "string",
            "description": "The site key (sitekey), found in the page source or network requests; usually does not change",
            "examples": [
              "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"
            ]
          },
          "pageAction": {
            "type": "string",
            "description": "The reCAPTCHA v3 action; it must match the value the page passes to grecaptcha.execute, or the token may be rejected",
            "examples": [
              "homepage"
            ]
          }
        }
      },
      "Task_RecaptchaV3TaskProxylessM1": {
        "type": "object",
        "title": "RecaptchaV3TaskProxylessM1",
        "description": "25 points per task (CNY 0.025), asynchronous: poll getTaskResult every 5 seconds.",
        "required": [
          "type",
          "websiteURL",
          "websiteKey"
        ],
        "properties": {
          "type": {
            "type": "string",
            "const": "RecaptchaV3TaskProxylessM1"
          },
          "websiteURL": {
            "type": "string",
            "description": "Full URL of the page that shows the captcha. Use the site you see the captcha on, not the captcha vendor's domain",
            "examples": [
              "https://www.google.com/recaptcha/api2/demo"
            ]
          },
          "websiteKey": {
            "type": "string",
            "description": "The site key (sitekey), found in the page source or network requests; usually does not change",
            "examples": [
              "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"
            ]
          },
          "pageAction": {
            "type": "string",
            "description": "The reCAPTCHA v3 action; it must match the value the page passes to grecaptcha.execute, or the token may be rejected",
            "examples": [
              "homepage"
            ]
          }
        }
      },
      "Task_RecaptchaV3TaskProxylessM1S7": {
        "type": "object",
        "title": "RecaptchaV3TaskProxylessM1S7",
        "description": "30 points per task (CNY 0.03), asynchronous: poll getTaskResult every 5 seconds. Requests a score of 0.7; no extra parameter needed.",
        "required": [
          "type",
          "websiteURL",
          "websiteKey"
        ],
        "properties": {
          "type": {
            "type": "string",
            "const": "RecaptchaV3TaskProxylessM1S7"
          },
          "websiteURL": {
            "type": "string",
            "description": "Full URL of the page that shows the captcha. Use the site you see the captcha on, not the captcha vendor's domain",
            "examples": [
              "https://www.google.com/recaptcha/api2/demo"
            ]
          },
          "websiteKey": {
            "type": "string",
            "description": "The site key (sitekey), found in the page source or network requests; usually does not change",
            "examples": [
              "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"
            ]
          },
          "pageAction": {
            "type": "string",
            "description": "The reCAPTCHA v3 action; it must match the value the page passes to grecaptcha.execute, or the token may be rejected",
            "examples": [
              "homepage"
            ]
          }
        }
      },
      "Task_RecaptchaV3TaskProxylessM1S9": {
        "type": "object",
        "title": "RecaptchaV3TaskProxylessM1S9",
        "description": "35 points per task (CNY 0.035), asynchronous: poll getTaskResult every 5 seconds. Requests a score of 0.9; no extra parameter needed.",
        "required": [
          "type",
          "websiteURL",
          "websiteKey"
        ],
        "properties": {
          "type": {
            "type": "string",
            "const": "RecaptchaV3TaskProxylessM1S9"
          },
          "websiteURL": {
            "type": "string",
            "description": "Full URL of the page that shows the captcha. Use the site you see the captcha on, not the captcha vendor's domain",
            "examples": [
              "https://www.google.com/recaptcha/api2/demo"
            ]
          },
          "websiteKey": {
            "type": "string",
            "description": "The site key (sitekey), found in the page source or network requests; usually does not change",
            "examples": [
              "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"
            ]
          },
          "pageAction": {
            "type": "string",
            "description": "The reCAPTCHA v3 action; it must match the value the page passes to grecaptcha.execute, or the token may be rejected",
            "examples": [
              "homepage"
            ]
          }
        }
      },
      "Task_RecaptchaV3EnterpriseTask": {
        "type": "object",
        "title": "RecaptchaV3EnterpriseTask",
        "description": "20 points per task (CNY 0.02), asynchronous: poll getTaskResult every 5 seconds.",
        "required": [
          "type",
          "websiteURL",
          "websiteKey"
        ],
        "properties": {
          "type": {
            "type": "string",
            "const": "RecaptchaV3EnterpriseTask"
          },
          "websiteURL": {
            "type": "string",
            "description": "Full URL of the page that shows the captcha. Use the site you see the captcha on, not the captcha vendor's domain",
            "examples": [
              "https://www.google.com/recaptcha/api2/demo"
            ]
          },
          "websiteKey": {
            "type": "string",
            "description": "The site key (sitekey), found in the page source or network requests; usually does not change",
            "examples": [
              "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"
            ]
          },
          "pageAction": {
            "type": "string",
            "description": "The reCAPTCHA v3 action; it must match the value the page passes to grecaptcha.execute, or the token may be rejected",
            "examples": [
              "homepage"
            ]
          }
        }
      },
      "Task_RecaptchaV3EnterpriseTaskM1": {
        "type": "object",
        "title": "RecaptchaV3EnterpriseTaskM1",
        "description": "25 points per task (CNY 0.025), asynchronous: poll getTaskResult every 5 seconds.",
        "required": [
          "type",
          "websiteURL",
          "websiteKey"
        ],
        "properties": {
          "type": {
            "type": "string",
            "const": "RecaptchaV3EnterpriseTaskM1"
          },
          "websiteURL": {
            "type": "string",
            "description": "Full URL of the page that shows the captcha. Use the site you see the captcha on, not the captcha vendor's domain",
            "examples": [
              "https://www.google.com/recaptcha/api2/demo"
            ]
          },
          "websiteKey": {
            "type": "string",
            "description": "The site key (sitekey), found in the page source or network requests; usually does not change",
            "examples": [
              "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"
            ]
          },
          "pageAction": {
            "type": "string",
            "description": "The reCAPTCHA v3 action; it must match the value the page passes to grecaptcha.execute, or the token may be rejected",
            "examples": [
              "homepage"
            ]
          }
        }
      },
      "Task_HCaptchaTaskProxyless": {
        "type": "object",
        "title": "HCaptchaTaskProxyless",
        "description": "30 points per task (CNY 0.03), asynchronous: poll getTaskResult every 5 seconds.",
        "required": [
          "type",
          "websiteURL",
          "websiteKey"
        ],
        "properties": {
          "type": {
            "type": "string",
            "const": "HCaptchaTaskProxyless"
          },
          "websiteURL": {
            "type": "string",
            "description": "Full URL of the page that shows the captcha. Use the site you see the captcha on, not the captcha vendor's domain",
            "examples": [
              "https://www.google.com/recaptcha/api2/demo"
            ]
          },
          "websiteKey": {
            "type": "string",
            "description": "The hCaptcha site key (sitekey), usually a UUID",
            "examples": [
              "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"
            ]
          },
          "userAgent": {
            "type": "string",
            "description": "Browser User-Agent. Recommended, but only the value returned by GET https://api.yescaptcha.com/useragent is accepted; submit the token with the userAgent from the result"
          },
          "isInvisible": {
            "type": "boolean",
            "description": "Set to true for the invisible variant; omit otherwise"
          },
          "rqdata": {
            "type": "string",
            "description": "rqdata for enterprise hCaptcha; required by some sites and usually found in the request that loads the captcha"
          }
        }
      },
      "Task_HCaptchaTaskProxylessM1": {
        "type": "object",
        "title": "HCaptchaTaskProxylessM1",
        "description": "30 points per task (CNY 0.03), asynchronous: poll getTaskResult every 5 seconds. Same parameters as HCaptchaTaskProxyless on a different route; use either as a fallback.",
        "required": [
          "type",
          "websiteURL",
          "websiteKey"
        ],
        "properties": {
          "type": {
            "type": "string",
            "const": "HCaptchaTaskProxylessM1"
          },
          "websiteURL": {
            "type": "string",
            "description": "Full URL of the page that shows the captcha. Use the site you see the captcha on, not the captcha vendor's domain",
            "examples": [
              "https://www.google.com/recaptcha/api2/demo"
            ]
          },
          "websiteKey": {
            "type": "string",
            "description": "The hCaptcha site key (sitekey), usually a UUID",
            "examples": [
              "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"
            ]
          },
          "userAgent": {
            "type": "string",
            "description": "Browser User-Agent. Recommended, but only the value returned by GET https://api.yescaptcha.com/useragent is accepted; submit the token with the userAgent from the result"
          },
          "isInvisible": {
            "type": "boolean",
            "description": "Set to true for the invisible variant; omit otherwise"
          },
          "rqdata": {
            "type": "string",
            "description": "rqdata for enterprise hCaptcha; required by some sites and usually found in the request that loads the captcha"
          }
        }
      },
      "Task_HCaptchaTask": {
        "type": "object",
        "title": "HCaptchaTask",
        "description": "15 points per task (CNY 0.015), asynchronous: poll getTaskResult every 5 seconds.",
        "required": [
          "type",
          "websiteURL",
          "websiteKey",
          "proxyType",
          "proxyAddress",
          "proxyPort"
        ],
        "properties": {
          "type": {
            "type": "string",
            "const": "HCaptchaTask"
          },
          "websiteURL": {
            "type": "string",
            "description": "Full URL of the page that shows the captcha. Use the site you see the captcha on, not the captcha vendor's domain",
            "examples": [
              "https://www.google.com/recaptcha/api2/demo"
            ]
          },
          "websiteKey": {
            "type": "string",
            "description": "The hCaptcha site key (sitekey), usually a UUID",
            "examples": [
              "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"
            ]
          },
          "proxyType": {
            "type": "string",
            "description": "Proxy protocol: http, https, socks4 or socks5",
            "examples": [
              "http"
            ]
          },
          "proxyAddress": {
            "type": "string",
            "description": "Proxy IP address or hostname. Local or private addresses such as 127.0.0.1 or 192.168.x.x will not work because our servers cannot reach them",
            "examples": [
              "proxy.example.com"
            ]
          },
          "proxyPort": {
            "type": "integer",
            "description": "Proxy port",
            "examples": [
              8080
            ]
          },
          "isInvisible": {
            "type": "boolean",
            "description": "Set to true for the invisible variant; omit otherwise"
          },
          "rqdata": {
            "type": "string",
            "description": "rqdata for enterprise hCaptcha; required by some sites and usually found in the request that loads the captcha"
          },
          "proxyLogin": {
            "type": "string",
            "description": "Proxy username, if the proxy requires authentication"
          },
          "proxyPassword": {
            "type": "string",
            "description": "Proxy password, if the proxy requires authentication"
          },
          "userAgent": {
            "type": "string",
            "description": "Browser User-Agent. Recommended, but only the value returned by GET https://api.yescaptcha.com/useragent is accepted; submit the token with the userAgent from the result"
          }
        }
      },
      "Task_TurnstileTaskProxyless": {
        "type": "object",
        "title": "TurnstileTaskProxyless",
        "description": "25 points per task (CNY 0.025), asynchronous: poll getTaskResult every 5 seconds.",
        "required": [
          "type",
          "websiteURL",
          "websiteKey"
        ],
        "properties": {
          "type": {
            "type": "string",
            "const": "TurnstileTaskProxyless"
          },
          "websiteURL": {
            "type": "string",
            "description": "Full URL of the page that shows the captcha. Use the site you see the captcha on, not the captcha vendor's domain",
            "examples": [
              "https://www.google.com/recaptcha/api2/demo"
            ]
          },
          "websiteKey": {
            "type": "string",
            "description": "The Turnstile site key (sitekey), usually starting with 0x",
            "examples": [
              "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"
            ]
          }
        }
      },
      "Task_TurnstileTaskProxylessM1": {
        "type": "object",
        "title": "TurnstileTaskProxylessM1",
        "description": "30 points per task (CNY 0.03), asynchronous: poll getTaskResult every 5 seconds.",
        "required": [
          "type",
          "websiteURL",
          "websiteKey"
        ],
        "properties": {
          "type": {
            "type": "string",
            "const": "TurnstileTaskProxylessM1"
          },
          "websiteURL": {
            "type": "string",
            "description": "Full URL of the page that shows the captcha. Use the site you see the captcha on, not the captcha vendor's domain",
            "examples": [
              "https://www.google.com/recaptcha/api2/demo"
            ]
          },
          "websiteKey": {
            "type": "string",
            "description": "The Turnstile site key (sitekey), usually starting with 0x",
            "examples": [
              "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"
            ]
          }
        }
      },
      "Task_TurnstileTask": {
        "type": "object",
        "title": "TurnstileTask",
        "description": "25 points per task (CNY 0.025), asynchronous: poll getTaskResult every 5 seconds.",
        "required": [
          "type",
          "websiteURL",
          "websiteKey",
          "proxyType",
          "proxyAddress",
          "proxyPort"
        ],
        "properties": {
          "type": {
            "type": "string",
            "const": "TurnstileTask"
          },
          "websiteURL": {
            "type": "string",
            "description": "Full URL of the page that shows the captcha. Use the site you see the captcha on, not the captcha vendor's domain",
            "examples": [
              "https://www.google.com/recaptcha/api2/demo"
            ]
          },
          "websiteKey": {
            "type": "string",
            "description": "The Turnstile site key (sitekey), usually starting with 0x",
            "examples": [
              "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"
            ]
          },
          "proxyType": {
            "type": "string",
            "description": "Proxy protocol: http, https, socks4 or socks5",
            "examples": [
              "http"
            ]
          },
          "proxyAddress": {
            "type": "string",
            "description": "Proxy IP address or hostname. Local or private addresses such as 127.0.0.1 or 192.168.x.x will not work because our servers cannot reach them",
            "examples": [
              "proxy.example.com"
            ]
          },
          "proxyPort": {
            "type": "integer",
            "description": "Proxy port",
            "examples": [
              8080
            ]
          },
          "proxyLogin": {
            "type": "string",
            "description": "Proxy username, if the proxy requires authentication"
          },
          "proxyPassword": {
            "type": "string",
            "description": "Proxy password, if the proxy requires authentication"
          },
          "userAgent": {
            "type": "string",
            "description": "Browser User-Agent. If the result contains a userAgent, use that value when you submit the token"
          }
        }
      },
      "Task_CloudFlareTaskS2": {
        "type": "object",
        "title": "CloudFlareTaskS2",
        "description": "25 points per task (CNY 0.025), asynchronous: poll getTaskResult every 5 seconds. Not recommended.",
        "required": [
          "type",
          "websiteURL",
          "proxy"
        ],
        "properties": {
          "type": {
            "type": "string",
            "const": "CloudFlareTaskS2"
          },
          "websiteURL": {
            "type": "string",
            "description": "Full URL of the page that shows the captcha. Use the site you see the captcha on, not the captcha vendor's domain",
            "examples": [
              "https://www.google.com/recaptcha/api2/demo"
            ]
          },
          "proxy": {
            "type": "string",
            "description": "Proxy as one string, e.g. http://user:pass@proxy.example.com:8080 or socks5://proxy.example.com:1080. SOCKS5 with a password is not supported; local or private addresses will not work",
            "examples": [
              "http://user:pass@proxy.example.com:8080"
            ]
          },
          "waitLoad": {
            "type": "boolean",
            "description": "Wait until the page has fully loaded before returning. Set to true if you need the full page content; it takes longer"
          },
          "requiredCookies": {
            "type": "array",
            "description": "Cookie names you want returned, default [\"cf_clearance\"]. You can list several, but they are not guaranteed",
            "items": {}
          },
          "blockImage": {
            "type": "boolean",
            "description": "Skip loading images to save proxy traffic"
          },
          "postData": {
            "type": "object",
            "description": "If set, the target URL is opened with a POST request carrying this object, e.g. {\"name\": \"hi\"}"
          }
        }
      },
      "Task_CloudFlareTaskS3": {
        "type": "object",
        "title": "CloudFlareTaskS3",
        "description": "20 points per task (CNY 0.02), asynchronous: poll getTaskResult every 5 seconds. Not recommended.",
        "required": [
          "type",
          "websiteURL",
          "proxy"
        ],
        "properties": {
          "type": {
            "type": "string",
            "const": "CloudFlareTaskS3"
          },
          "websiteURL": {
            "type": "string",
            "description": "Full URL of the page that shows the captcha. Use the site you see the captcha on, not the captcha vendor's domain",
            "examples": [
              "https://www.google.com/recaptcha/api2/demo"
            ]
          },
          "proxy": {
            "type": "string",
            "description": "Proxy as one string, e.g. http://user:pass@proxy.example.com:8080 or socks5://proxy.example.com:1080. SOCKS5 with a password is not supported; local or private addresses will not work",
            "examples": [
              "http://user:pass@proxy.example.com:8080"
            ]
          },
          "waitLoad": {
            "type": "boolean",
            "description": "Wait until the page has fully loaded before returning. Set to true if you need the full page content; it takes longer"
          },
          "requiredCookies": {
            "type": "array",
            "description": "Cookie names you want returned, default [\"cf_clearance\"]. You can list several, but they are not guaranteed",
            "items": {}
          },
          "blockImage": {
            "type": "boolean",
            "description": "Skip loading images to save proxy traffic"
          },
          "postData": {
            "type": "object",
            "description": "If set, the target URL is opened with a POST request carrying this object, e.g. {\"name\": \"hi\"}"
          }
        }
      },
      "Task_FunCaptchaTaskProxyless": {
        "type": "object",
        "title": "FunCaptchaTaskProxyless",
        "description": "30 points per task (CNY 0.03), asynchronous: poll getTaskResult every 5 seconds.",
        "required": [
          "type",
          "websiteURL",
          "websitePublicKey"
        ],
        "properties": {
          "type": {
            "type": "string",
            "const": "FunCaptchaTaskProxyless"
          },
          "websiteURL": {
            "type": "string",
            "description": "Full URL of the page that shows the captcha. Use the site you see the captcha on, not the captcha vendor's domain",
            "examples": [
              "https://www.google.com/recaptcha/api2/demo"
            ]
          },
          "websitePublicKey": {
            "type": "string",
            "description": "The FunCaptcha public key, the data-pkey value in the page or the part after pkey= in the request URL, e.g. B7D8911C-5CC8-A9A3-35B0-554ACEE604DA",
            "examples": [
              "B7D8911C-5CC8-A9A3-35B0-554ACEE604DA"
            ]
          },
          "funcaptchaApiJSSubdomain": {
            "type": "string",
            "description": "The subdomain that serves FunCaptcha; some sites use a custom one. Take it from the iframe URL, e.g. client-api.arkoselabs.com"
          },
          "data": {
            "type": "string",
            "description": "Extra blob data as a JSON string such as {\"blob\":\"...\"}. Pass it as is without URL encoding; omit if the page does not use it"
          },
          "userAgent": {
            "type": "string",
            "description": "Browser User-Agent; must match the one you use to visit the target site"
          }
        }
      },
      "Task_FunCaptchaTaskProxylessM1": {
        "type": "object",
        "title": "FunCaptchaTaskProxylessM1",
        "description": "110 points per task (CNY 0.11), asynchronous: poll getTaskResult every 5 seconds.",
        "required": [
          "type",
          "websiteURL",
          "websitePublicKey"
        ],
        "properties": {
          "type": {
            "type": "string",
            "const": "FunCaptchaTaskProxylessM1"
          },
          "websiteURL": {
            "type": "string",
            "description": "Full URL of the page that shows the captcha. Use the site you see the captcha on, not the captcha vendor's domain",
            "examples": [
              "https://www.google.com/recaptcha/api2/demo"
            ]
          },
          "websitePublicKey": {
            "type": "string",
            "description": "The FunCaptcha public key, the data-pkey value in the page or the part after pkey= in the request URL, e.g. B7D8911C-5CC8-A9A3-35B0-554ACEE604DA",
            "examples": [
              "B7D8911C-5CC8-A9A3-35B0-554ACEE604DA"
            ]
          },
          "funcaptchaApiJSSubdomain": {
            "type": "string",
            "description": "The subdomain that serves FunCaptcha; some sites use a custom one. Take it from the iframe URL, e.g. client-api.arkoselabs.com"
          },
          "data": {
            "type": "string",
            "description": "Extra blob data as a JSON string such as {\"blob\":\"...\"}. Pass it as is without URL encoding; omit if the page does not use it"
          },
          "userAgent": {
            "type": "string",
            "description": "Browser User-Agent; must match the one you use to visit the target site"
          }
        }
      },
      "Task_FunCaptchaTask": {
        "type": "object",
        "title": "FunCaptchaTask",
        "description": "15 points per task (CNY 0.015), asynchronous: poll getTaskResult every 5 seconds.",
        "required": [
          "type",
          "websiteURL",
          "websitePublicKey",
          "proxyType",
          "proxyAddress",
          "proxyPort",
          "userAgent"
        ],
        "properties": {
          "type": {
            "type": "string",
            "const": "FunCaptchaTask"
          },
          "websiteURL": {
            "type": "string",
            "description": "Full URL of the page that shows the captcha. Use the site you see the captcha on, not the captcha vendor's domain",
            "examples": [
              "https://www.google.com/recaptcha/api2/demo"
            ]
          },
          "websitePublicKey": {
            "type": "string",
            "description": "The FunCaptcha public key, the data-pkey value in the page or the part after pkey= in the request URL, e.g. B7D8911C-5CC8-A9A3-35B0-554ACEE604DA",
            "examples": [
              "B7D8911C-5CC8-A9A3-35B0-554ACEE604DA"
            ]
          },
          "proxyType": {
            "type": "string",
            "description": "Proxy protocol: http, https, socks4 or socks5",
            "examples": [
              "http"
            ]
          },
          "proxyAddress": {
            "type": "string",
            "description": "Proxy IP address or hostname. Local or private addresses such as 127.0.0.1 or 192.168.x.x will not work because our servers cannot reach them",
            "examples": [
              "proxy.example.com"
            ]
          },
          "proxyPort": {
            "type": "integer",
            "description": "Proxy port",
            "examples": [
              8080
            ]
          },
          "userAgent": {
            "type": "string",
            "description": "Browser User-Agent; must match the one you use to visit the target site"
          },
          "funcaptchaApiJSSubdomain": {
            "type": "string",
            "description": "The subdomain that serves FunCaptcha; some sites use a custom one. Take it from the iframe URL, e.g. client-api.arkoselabs.com"
          },
          "data": {
            "type": "string",
            "description": "Extra blob data as a JSON string such as {\"blob\":\"...\"}. Pass it as is without URL encoding; omit if the page does not use it"
          },
          "proxyLogin": {
            "type": "string",
            "description": "Proxy username, if the proxy requires authentication"
          },
          "proxyPassword": {
            "type": "string",
            "description": "Proxy password, if the proxy requires authentication"
          }
        }
      },
      "Task_ImageToTextTaskOcrBase": {
        "type": "object",
        "title": "ImageToTextTaskOcrBase",
        "description": "2 points per task (CNY 0.002), synchronous: createTask returns the solution.",
        "required": [
          "type",
          "body"
        ],
        "properties": {
          "type": {
            "type": "string",
            "const": "ImageToTextTaskOcrBase"
          },
          "body": {
            "type": "string",
            "description": "Base64-encoded image without the data:image/...;base64, prefix and without line breaks"
          }
        }
      },
      "Task_ImageToTextTaskMuggle": {
        "type": "object",
        "title": "ImageToTextTaskMuggle",
        "description": "2 points per task (CNY 0.002), synchronous: createTask returns the solution. Does not support case/numeric options; use project_name to select a custom model.",
        "required": [
          "type",
          "body"
        ],
        "properties": {
          "type": {
            "type": "string",
            "const": "ImageToTextTaskMuggle"
          },
          "body": {
            "type": "string",
            "description": "Base64-encoded image without the data:image/...;base64, prefix and without line breaks"
          },
          "project_name": {
            "type": "string",
            "description": "Name of a custom model, supported only by ImageToTextTaskMuggle. Omit to use the general alphanumeric model. Contact support for a custom model"
          }
        }
      },
      "Task_ImageToTextTask": {
        "type": "object",
        "title": "ImageToTextTask",
        "description": "4 points per task (CNY 0.004), asynchronous: poll getTaskResult every 5 seconds.",
        "required": [
          "type",
          "body"
        ],
        "properties": {
          "type": {
            "type": "string",
            "const": "ImageToTextTask"
          },
          "body": {
            "type": "string",
            "description": "Base64-encoded image without the data:image/...;base64, prefix and without line breaks"
          },
          "phrase": {
            "type": "boolean",
            "description": "true means the answer contains at least one space"
          },
          "case": {
            "type": "boolean",
            "description": "true means the answer is case-sensitive"
          },
          "numeric": {
            "type": "integer",
            "description": "0 no requirement; 1 digits only; 2 no digits"
          },
          "math": {
            "type": "boolean",
            "description": "true means the image is a math expression and the answer is its result"
          },
          "minLength": {
            "type": "integer",
            "description": "Minimum answer length; 0 means no limit"
          },
          "maxLength": {
            "type": "integer",
            "description": "Maximum answer length; 0 means no limit"
          }
        }
      },
      "Task_ImageToTextTaskM1": {
        "type": "object",
        "title": "ImageToTextTaskM1",
        "description": "15 points per task (CNY 0.015), asynchronous: poll getTaskResult every 5 seconds.",
        "required": [
          "type",
          "body"
        ],
        "properties": {
          "type": {
            "type": "string",
            "const": "ImageToTextTaskM1"
          },
          "body": {
            "type": "string",
            "description": "Base64-encoded image without the data:image/...;base64, prefix and without line breaks"
          },
          "phrase": {
            "type": "boolean",
            "description": "true means the answer contains at least one space"
          },
          "case": {
            "type": "boolean",
            "description": "true means the answer is case-sensitive"
          },
          "numeric": {
            "type": "integer",
            "description": "0 no requirement; 1 digits only; 2 no digits"
          },
          "math": {
            "type": "boolean",
            "description": "true means the image is a math expression and the answer is its result"
          },
          "minLength": {
            "type": "integer",
            "description": "Minimum answer length; 0 means no limit"
          },
          "maxLength": {
            "type": "integer",
            "description": "Maximum answer length; 0 means no limit"
          }
        }
      },
      "Task_ReCaptchaV2Classification": {
        "type": "object",
        "title": "ReCaptchaV2Classification",
        "description": "6 points per task (CNY 0.006), synchronous: createTask returns the solution.",
        "required": [
          "type",
          "image",
          "question"
        ],
        "properties": {
          "type": {
            "type": "string",
            "const": "ReCaptchaV2Classification"
          },
          "image": {
            "type": "string",
            "description": "Base64-encoded challenge image without the data: prefix"
          },
          "question": {
            "type": "string",
            "description": "Question ID such as /m/0k4j; see \"Question IDs\" on this page"
          },
          "confidence": {
            "type": "number",
            "description": "Confidence threshold from 0 to 1, only used for 3x3 images. If set (0.5 is a good start), every tile above it is returned; if omitted, the top 3 tiles are returned"
          }
        }
      },
      "Task_HCaptchaClassification": {
        "type": "object",
        "title": "HCaptchaClassification",
        "description": "8 points per task (CNY 0.008), synchronous: createTask returns the solution.",
        "required": [
          "type",
          "queries"
        ],
        "properties": {
          "type": {
            "type": "string",
            "const": "HCaptchaClassification"
          },
          "queries": {
            "type": "array",
            "description": "List of Base64-encoded challenge images in page order (9 tiles for a 3×3 grid)",
            "items": {}
          },
          "question": {
            "type": "string",
            "description": "The full question as shown on the page (Simplified Chinese or English recommended), e.g. Please click each image containing a bicycle. Send at least one of question and anchors; sending both is recommended"
          },
          "anchors": {
            "type": "array",
            "description": "Base64-encoded example images shown next to the question; required for questions that have them",
            "items": {}
          }
        }
      },
      "Task_FunCaptchaClassification": {
        "type": "object",
        "title": "FunCaptchaClassification",
        "description": "3 points per task (CNY 0.003), synchronous: createTask returns the solution.",
        "required": [
          "type",
          "image",
          "question"
        ],
        "properties": {
          "type": {
            "type": "string",
            "const": "FunCaptchaClassification"
          },
          "image": {
            "type": "string",
            "description": "Base64-encoded challenge image without the data: prefix"
          },
          "question": {
            "type": "string",
            "description": "The question text in English (e.g. Pick the image that is the correct way up); supported questions are listed on this page"
          }
        }
      },
      "Task_AwsClassification": {
        "type": "object",
        "title": "AwsClassification",
        "description": "8 points per task (CNY 0.008), synchronous: createTask returns the solution.",
        "required": [
          "type",
          "queries"
        ],
        "properties": {
          "type": {
            "type": "string",
            "const": "AwsClassification"
          },
          "queries": {
            "type": "string",
            "description": "Base64 of the whole 3×3 grid image (a single image)"
          },
          "question": {
            "type": "string",
            "description": "The full question as shown on the page, e.g. Select all hats; other languages are translated automatically"
          }
        }
      },
      "Task_bCaptchaClassification": {
        "type": "object",
        "title": "bCaptchaClassification",
        "description": "8 points per task (CNY 0.008), synchronous: createTask returns the solution.",
        "required": [
          "type",
          "queries"
        ],
        "properties": {
          "type": {
            "type": "string",
            "const": "bCaptchaClassification"
          },
          "queries": {
            "type": "string",
            "description": "Base64 of the whole 3×3 grid image (a single image)"
          },
          "question": {
            "type": "string",
            "description": "The full question as shown on the page, e.g. Select all hats; other languages are translated automatically"
          }
        }
      },
      "CreateTaskResponse": {
        "type": "object",
        "properties": {
          "errorId": {
            "const": 0
          },
          "taskId": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "ready"
            ],
            "description": "Synchronous types only"
          },
          "solution": {
            "$ref": "#/components/schemas/Solution"
          }
        }
      },
      "TaskResultResponse": {
        "type": "object",
        "properties": {
          "errorId": {
            "const": 0
          },
          "status": {
            "type": "string",
            "enum": [
              "processing",
              "ready"
            ]
          },
          "solution": {
            "$ref": "#/components/schemas/Solution"
          }
        }
      },
      "Solution": {
        "type": "object",
        "description": "Fields depend on the task type",
        "properties": {
          "gRecaptchaResponse": {
            "type": "string",
            "description": "The token to submit to the target site. Single use, valid for about 120 seconds; use it within 60 seconds"
          },
          "token": {
            "type": "string",
            "description": "The token to submit to the target site. Single use; submit it as soon as possible"
          },
          "userAgent": {
            "type": "string",
            "description": "The User-Agent used to obtain the token. Use this value when you submit the token, even if it differs from the one you sent"
          },
          "respKey": {
            "type": "string",
            "description": "A value some sites require together with the token; submit it if present"
          },
          "cookies": {
            "type": "object",
            "description": "Cookies obtained after passing the check, usually including cf_clearance. Use them together with the returned user_agent and the proxy you supplied"
          },
          "user_agent": {
            "type": "string",
            "description": "The User-Agent used to pass the check; use it for all follow-up requests"
          },
          "request_headers": {
            "type": "object",
            "description": "Request headers sent when passing the check; reuse them in follow-up requests"
          },
          "headers": {
            "type": "object",
            "description": "Response headers from the target site"
          },
          "content": {
            "type": "string",
            "description": "HTML source of the target page"
          },
          "text": {
            "type": "string",
            "description": "The recognized text"
          },
          "objects": {
            "type": "array",
            "description": "Indexes of the tiles to click, starting at 0, left to right and top to bottom",
            "items": {}
          },
          "hasObject": {
            "type": "boolean",
            "description": "Returned for a 1x1 tile; whether the tile contains the target"
          },
          "type": {
            "type": "string",
            "description": "Challenge type: multi (3x3 or 4x4 image, see objects), single (1x1 tile, see hasObject); drag for hCaptcha drag questions"
          },
          "labels": {
            "type": "array",
            "description": "Recognized labels",
            "items": {}
          },
          "label": {
            "type": "string",
            "description": "The recognized target of the question"
          },
          "top_k": {
            "type": "array",
            "description": "Indexes (from 0) of the images that are targets; same meaning as objects, use either",
            "items": {}
          },
          "confidences": {
            "type": "array",
            "description": "Confidence of each result",
            "items": {}
          },
          "box": {
            "type": "array",
            "description": "Click questions: coordinates to click as x1, y1, x2, y2, … in pixels from the top-left of the uploaded image. Drag questions: [{\"start\": [x, y], \"end\": [x, y]}], drag from start to end",
            "items": {}
          }
        }
      },
      "ErrorResponse": {
        "type": "object",
        "required": [
          "errorId",
          "errorCode"
        ],
        "properties": {
          "errorId": {
            "const": 1
          },
          "errorCode": {
            "type": "string",
            "enum": [
              "ERROR_REQUIRED_FIELDS",
              "ERROR_REQUEST_FORMATS",
              "ERROR_TASK_ABSENT",
              "ERROR_TASK_NOT_SUPPORTED",
              "ERROR_PAGE_NOT_FOUND",
              "ERROR_BAD_REQUEST",
              "ERROR_KEY_DOES_NOT_EXIST",
              "ERROR_ZERO_BALANCE",
              "ERROR_THREADS_MAXIMUM",
              "ERROR_IP_BLOCKED_5MIN",
              "ERROR_NO_SLOT_AVAILABLE",
              "ERROR_TASKID_INVALID",
              "ERROR_TASK_TIMEOUT",
              "ERROR_CAPTCHA_UNSOLVABLE",
              "ERROR_SETTLEMENT_FAILED",
              "ERROR_NO_SUCH_CAPCHA_ID",
              "ERROR_RECAPTCHA_TIMEOUT",
              "ERROR_RECAPTCHA_INVALID_SITEKEY",
              "ERROR_RECAPTCHA_INVALID_DOMAIN",
              "ERROR_INVALID_KEY_TYPE",
              "ERROR_DOMAIN_NOT_ALLOWED",
              "ERROR_HIGH_DEMAND_DOMAIN",
              "ERROR_FAILED_LOADING_WIDGET",
              "ERROR_ZERO_CAPTCHA_FILESIZE",
              "ERROR_TOO_BIG_CAPTCHA_FILESIZE",
              "ERROR_IMAGE_TYPE_NOT_SUPPORTED",
              "ERROR_ILLEGAL_IMAGE",
              "ERROR_PARSE_IMAGE_FAIL",
              "ERROR_UNKNOWN_QUESTION",
              "ERROR_UNKNOW_450x450_QUESTION",
              "ERROR_PROXY_CONNECT_REFUSED",
              "ERROR_PROXY_CONNECT_TIMEOUT",
              "ERROR_PROXY_READ_TIMEOUT",
              "ERROR_PROXY_BANNED",
              "ERROR_PROXY_INCORRECT",
              "ERROR_PROXY_TRANSPARENT",
              "ERROR_PROXY_NOT_AUTHORISED",
              "ERROR_PROXY_TLS_ERROR",
              "ERROR_PROXY_CONNECTION_FAILED",
              "ERROR_SERVICE_UNAVALIABLE",
              "ERROR_INTERNAL_SERVER_ERROR",
              "ERROR_UNKNOWN"
            ],
            "description": "See https://docs.yescaptcha.com/en/api/errors/"
          },
          "errorDescription": {
            "type": "string"
          },
          "retryAfter": {
            "type": "integer",
            "description": "Seconds until an automatic pause or a cached error expires"
          },
          "blockReason": {
            "type": "string"
          },
          "cached": {
            "type": "boolean"
          },
          "limit": {
            "type": "integer",
            "description": "Current concurrency limit (ERROR_THREADS_MAXIMUM)"
          }
        }
      }
    }
  }
}