{
  "openapi": "3.1.0",
  "info": {
    "title": "Nex Captcha OpenAPI",
    "version": "1.2.0",
    "description": "Nex Captcha asynchronous task API and same-port WebSocket. All products accept API keys in HTTP request headers only; body, form and URL API key parameters are not used for authentication. Inspect business code, create a task, then receive task.updated or query taskId until terminal. WebSocket message contracts are expressed using x-websocket because OpenAPI describes HTTP operations, not native WebSocket frames. Internal cost fields are never returned by task query or push. Success and error messages use Accept-Language first (zh-CN, zh-TW or en-US; q weights supported). When absent or blank, use the API key owner's configured language. Unknown users, missing preferences and unsupported supplied languages default to en-US. X-Language, URL lang and X-I18n-Cache do not override OpenAPI responses. Machine-readable codes, states and solution values remain unchanged.\n\nDynamic product discovery: GET /api/product/list.cgi then GET /api/product/schema.cgi?productCode=GRID. Free public metadata shares the MCP product schema definition.\n\nIntegration guide: /openapi/integration-guide.json. Prefer the matching native CAPTCHA product and its token or paired challenge/proof result. Generic GRID is a fallback only when the native route is confirmed unavailable for the current challenge; capture, recognition and multi-round browser interaction may exceed target expiry. Transport/input errors alone do not justify fallback. SUCCEEDED is solver success, not target acceptance."
  },
  "servers": [
    {
      "url": "http://localhost:8081",
      "description": "本地开发服务"
    },
    {
      "url": "https://your-validator-host.example.com",
      "description": "部署后替换为实际服务地址"
    }
  ],
  "security": [
    {
      "apiKey": []
    }
  ],
  "components": {
    "securitySchemes": {
      "apiKey": {
        "type": "apiKey",
        "in": "header",
        "name": "apiKey",
        "description": "API key supplied in the apiKey HTTP request header. REST request bodies do not carry credentials."
      },
      "alternateApiKey": {
        "type": "apiKey",
        "in": "header",
        "name": "X-API-Key",
        "description": "Alternative HTTP header name; never a JSON body field."
      },
      "sessionCookie": {
        "type": "apiKey",
        "in": "cookie",
        "name": "NEXCAPTCHASESSID"
      },
      "sessionToken": {
        "type": "apiKey",
        "in": "query",
        "name": "token"
      },
      "sessionBearer": {
        "type": "http",
        "scheme": "bearer",
        "description": "Login session token, not an API key."
      }
    },
    "schemas": {
      "Adapter_NORMAL_CAPTCHA": {
        "type": "object",
        "description": "NORMAL_CAPTCHA input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "body": {
            "type": "string",
            "description": "Base64-encoded image or audio content.",
            "x-description-key": "docs.parameter.body.36ac510d"
          },
          "phrase": {
            "type": "boolean",
            "description": "Whether the answer contains multiple words.",
            "x-description-key": "docs.parameter.phrase.e4ec0b0b"
          },
          "caseSensitive": {
            "type": "boolean",
            "description": "Whether the answer is case-sensitive.",
            "x-description-key": "docs.parameter.caseSensitive.d8a073b8"
          },
          "numeric": {
            "type": "boolean",
            "description": "Character recognition mode.",
            "x-description-key": "docs.parameter.numeric.0ad5f10f"
          },
          "math": {
            "type": "boolean",
            "description": "Whether to calculate the expression shown in the image.",
            "x-description-key": "docs.parameter.math.b03e7411"
          },
          "minLength": {
            "type": "integer",
            "format": "int32",
            "description": "Minimum answer length.",
            "x-description-key": "docs.parameter.minLength.591bd5b2"
          },
          "maxLength": {
            "type": "integer",
            "format": "int32",
            "description": "Maximum answer length.",
            "x-description-key": "docs.parameter.maxLength.1111471b"
          },
          "comment": {
            "type": "string",
            "description": "Question or instructions for solving the challenge.",
            "x-description-key": "docs.parameter.comment.68c7c3d3"
          },
          "imgInstructions": {
            "type": "string",
            "description": "Base64-encoded image instructions.",
            "x-description-key": "docs.parameter.imgInstructions.a452ff6c"
          }
        },
        "required": [
          "body"
        ],
        "additionalProperties": false,
        "x-provider-task-type": "ImageToTextTask",
        "x-solution-example-verified": true,
        "x-solution-example": {
          "text": "EXAMPLE_ANSWER"
        },
        "x-integration": {
          "workflows": [
            "HTTP_SUBMIT",
            "BROWSER_RESULT"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "TEXT_ANSWER",
          "resultGuide": "Read solution.text as the answer to the current image or text question; submit it in the target answer field while preserving the challenge session.",
          "requirements": [
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "body": "Obtain the current challenge media from the target in the field format. For images, preserve original dimensions/order and crop to the challenge, not unrelated page content. For AUDIO, use the actual audio content.",
            "phrase": "Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.",
            "caseSensitive": "Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.",
            "numeric": "Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.",
            "math": "Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.",
            "minLength": "Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.",
            "maxLength": "Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.",
            "comment": "Use the actual question/instructions from the current challenge. Do not append agent commands such as Return coordinates. This field is semantically necessary for instruction-dependent tasks.",
            "imgInstructions": "Obtain the current challenge media from the target in the field format. For images, preserve original dimensions/order and crop to the challenge, not unrelated page content. For AUDIO, use the actual audio content."
          },
          "resultContract": "DOCUMENTED_FIELDS",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {
              "text": {
                "type": "string"
              }
            },
            "additionalProperties": true
          }
        }
      },
      "Adapter_RECAPTCHA_V2": {
        "type": "object",
        "description": "RECAPTCHA_V2 input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "websiteURL": {
            "type": "string",
            "description": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "x-description-key": "integration.source.integration"
          },
          "websiteKey": {
            "type": "string",
            "description": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "x-description-key": "integration.source.integration"
          },
          "pageAction": {
            "type": "string",
            "description": "Actual v3 action from the target execute options. This legacy field remains accepted for v2 compatibility, but it does not replace data-s or enterprisePayload.s and does not select the product version.",
            "x-description-key": "integration.recaptcha.pageAction"
          },
          "apiDomain": {
            "type": "string",
            "description": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "x-description-key": "integration.source.integration"
          },
          "isEnterprise": {
            "type": "boolean",
            "description": "For RECAPTCHA_V3_ENTERPRISE the upstream flag is always true, including legacy requests that send false. RECAPTCHA_V3 keeps its existing optional flag behavior. Select the explicit v2 Enterprise product for Enterprise widgets; this flag cannot supply missing session parameters.",
            "x-description-key": "integration.recaptcha.isEnterprise"
          },
          "minScore": {
            "type": "number",
            "description": "Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.",
            "x-description-key": "integration.source.options"
          },
          "userAgent": {
            "type": "string",
            "description": "Read the actual User-Agent used to obtain this challenge; preserve it when the product requires matching.",
            "x-description-key": "integration.source.browser"
          },
          "isInvisible": {
            "type": "boolean",
            "description": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "example": false,
            "x-description-key": "integration.source.integration"
          },
          "cookies": {
            "type": "string",
            "minLength": 1,
            "example": "challenge_cookie=CURRENT_VALUE",
            "description": "Optional current challenge cookie-header string for v2/v2 Enterprise, formatted key=value; key2=value2. Collect from the relevant target context; omit when not needed. This field is not exposed for v3.",
            "x-description-key": "integration.recaptcha.cookies"
          },
          "proxyType": {
            "type": "string",
            "enum": [
              "http",
              "socks4",
              "socks5"
            ],
            "example": "http",
            "description": "Optional v2/v2 Enterprise proxy protocol: http, socks4 or socks5. Any proxy field requires proxyType, proxyAddress and proxyPort together; omit all to retain proxyless mode. v3 has no documented proxy task here.",
            "x-description-key": "integration.recaptcha.proxyType"
          },
          "proxyAddress": {
            "type": "string",
            "minLength": 1,
            "example": "YOUR_PROXY_HOST",
            "description": "Reachable proxy hostname or IP, without scheme, port or credentials. When target IP binding is required, the solver and target browser must use the same actual egress; setting a browser proxy alone is insufficient.",
            "x-description-key": "integration.recaptcha.proxyAddress"
          },
          "proxyPort": {
            "type": "integer",
            "minimum": 1,
            "maximum": 65535,
            "example": 8080,
            "description": "Proxy TCP port, integer 1 to 65535; required only when any proxy parameter is supplied.",
            "x-description-key": "integration.recaptcha.proxyPort"
          },
          "proxyLogin": {
            "type": "string",
            "description": "Optional proxy authentication username from the caller configured proxy; never invent credentials.",
            "x-description-key": "integration.recaptcha.proxyLogin"
          },
          "proxyPassword": {
            "type": "string",
            "description": "Optional proxy authentication password from the same configured proxy.",
            "x-description-key": "integration.recaptcha.proxyPassword"
          },
          "recaptchaDataSValue": {
            "type": "string",
            "minLength": 1,
            "example": "CURRENT_DATA_S_VALUE",
            "description": "Optional fresh data-s value for ordinary reCAPTCHA v2 from the same current widget. Preserve it exactly; pageAction is not a substitute. Enterprise v2 uses enterprisePayload.s instead.",
            "x-description-key": "integration.recaptcha.recaptchaDataSValue"
          }
        },
        "required": [
          "websiteURL",
          "websiteKey"
        ],
        "additionalProperties": false,
        "x-provider-task-type": "RecaptchaV2TaskProxyless",
        "x-solution-example-verified": true,
        "x-solution-example": {
          "gRecaptchaResponse": "EXAMPLE_GRECAPTCHARESPONSE",
          "token": "EXAMPLE_TOKEN"
        },
        "x-integration": {
          "workflows": [
            "HTTP_SUBMIT",
            "BROWSER_RESULT"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "TOKEN",
          "resultGuide": "Apply solution.gRecaptchaResponse (or returned token) through the same target v2 response field/callback. Include fresh recaptchaDataSValue, cookies and matching proxy context when the target requires them. Proxyless remains the default when proxy fields are omitted; a token does not prove target acceptance.",
          "requirements": [
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "Identify v2 checkbox/invisible versus v3 score execution and ordinary versus Enterprise before creating. enterprise.js alone does not distinguish Enterprise v2 from v3: inspect render versus execute and widget mode. Use fresh matching session parameters; do not infer a supported native callback or target acceptance from a site key alone. Never substitute GRID automatically.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "websiteURL": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "websiteKey": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "pageAction": "Actual v3 action from the target execute options. This legacy field remains accepted for v2 compatibility, but it does not replace data-s or enterprisePayload.s and does not select the product version.",
            "apiDomain": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "isEnterprise": "For RECAPTCHA_V3_ENTERPRISE the upstream flag is always true, including legacy requests that send false. RECAPTCHA_V3 keeps its existing optional flag behavior. Select the explicit v2 Enterprise product for Enterprise widgets; this flag cannot supply missing session parameters.",
            "minScore": "Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.",
            "userAgent": "Read the actual User-Agent used to obtain this challenge; preserve it when the product requires matching.",
            "isInvisible": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "cookies": "Optional current challenge cookie-header string for v2/v2 Enterprise, formatted key=value; key2=value2. Collect from the relevant target context; omit when not needed. This field is not exposed for v3.",
            "proxyType": "Optional v2/v2 Enterprise proxy protocol: http, socks4 or socks5. Any proxy field requires proxyType, proxyAddress and proxyPort together; omit all to retain proxyless mode. v3 has no documented proxy task here.",
            "proxyAddress": "Reachable proxy hostname or IP, without scheme, port or credentials. When target IP binding is required, the solver and target browser must use the same actual egress; setting a browser proxy alone is insufficient.",
            "proxyPort": "Proxy TCP port, integer 1 to 65535; required only when any proxy parameter is supplied.",
            "proxyLogin": "Optional proxy authentication username from the caller configured proxy; never invent credentials.",
            "proxyPassword": "Optional proxy authentication password from the same configured proxy.",
            "recaptchaDataSValue": "Optional fresh data-s value for ordinary reCAPTCHA v2 from the same current widget. Preserve it exactly; pageAction is not a substitute. Enterprise v2 uses enterprisePayload.s instead."
          },
          "resultContract": "DOCUMENTED_FIELDS",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {
              "gRecaptchaResponse": {
                "type": "string"
              },
              "token": {
                "type": "string"
              }
            },
            "additionalProperties": true
          }
        },
        "allOf": [
          {
            "anyOf": [
              {
                "not": {
                  "anyOf": [
                    {
                      "required": [
                        "proxyType"
                      ]
                    },
                    {
                      "required": [
                        "proxyAddress"
                      ]
                    },
                    {
                      "required": [
                        "proxyPort"
                      ]
                    },
                    {
                      "required": [
                        "proxyLogin"
                      ]
                    },
                    {
                      "required": [
                        "proxyPassword"
                      ]
                    }
                  ]
                }
              },
              {
                "required": [
                  "proxyType",
                  "proxyAddress",
                  "proxyPort"
                ]
              }
            ]
          }
        ]
      },
      "Adapter_RECAPTCHA_V3": {
        "type": "object",
        "description": "RECAPTCHA_V3 input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "websiteURL": {
            "type": "string",
            "description": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "x-description-key": "integration.source.integration"
          },
          "websiteKey": {
            "type": "string",
            "description": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "x-description-key": "integration.source.integration"
          },
          "pageAction": {
            "type": "string",
            "description": "Actual v3 action from the target execute options. This legacy field remains accepted for v2 compatibility, but it does not replace data-s or enterprisePayload.s and does not select the product version.",
            "x-description-key": "integration.recaptcha.pageAction"
          },
          "apiDomain": {
            "type": "string",
            "description": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "x-description-key": "integration.source.integration"
          },
          "isEnterprise": {
            "type": "boolean",
            "description": "For RECAPTCHA_V3_ENTERPRISE the upstream flag is always true, including legacy requests that send false. RECAPTCHA_V3 keeps its existing optional flag behavior. Select the explicit v2 Enterprise product for Enterprise widgets; this flag cannot supply missing session parameters.",
            "x-description-key": "integration.recaptcha.isEnterprise"
          },
          "minScore": {
            "type": "number",
            "description": "Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.",
            "x-description-key": "integration.source.options"
          },
          "userAgent": {
            "type": "string",
            "description": "Read the actual User-Agent used to obtain this challenge; preserve it when the product requires matching.",
            "x-description-key": "integration.source.browser"
          }
        },
        "required": [
          "minScore",
          "websiteURL",
          "websiteKey"
        ],
        "additionalProperties": false,
        "x-provider-task-type": "RecaptchaV3TaskProxyless",
        "x-solution-example-verified": true,
        "x-solution-example": {
          "gRecaptchaResponse": "EXAMPLE_GRECAPTCHARESPONSE",
          "token": "EXAMPLE_TOKEN"
        },
        "x-integration": {
          "workflows": [
            "HTTP_SUBMIT",
            "BROWSER_RESULT"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "TOKEN",
          "resultGuide": "Use the v3 token with the target site key, minScore and actual pageAction. RECAPTCHA_V3_ENTERPRISE always uses Enterprise mode. This integration remains proxyless; v2 session fields (enterprisePayload, recaptchaDataSValue, cookies and proxy fields) are not exposed for v3. Do not infer score requirements or target acceptance from an image challenge.",
          "requirements": [
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "Identify v2 checkbox/invisible versus v3 score execution and ordinary versus Enterprise before creating. enterprise.js alone does not distinguish Enterprise v2 from v3: inspect render versus execute and widget mode. Use fresh matching session parameters; do not infer a supported native callback or target acceptance from a site key alone. Never substitute GRID automatically.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "websiteURL": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "websiteKey": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "pageAction": "Actual v3 action from the target execute options. This legacy field remains accepted for v2 compatibility, but it does not replace data-s or enterprisePayload.s and does not select the product version.",
            "apiDomain": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "isEnterprise": "For RECAPTCHA_V3_ENTERPRISE the upstream flag is always true, including legacy requests that send false. RECAPTCHA_V3 keeps its existing optional flag behavior. Select the explicit v2 Enterprise product for Enterprise widgets; this flag cannot supply missing session parameters.",
            "minScore": "Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.",
            "userAgent": "Read the actual User-Agent used to obtain this challenge; preserve it when the product requires matching."
          },
          "resultContract": "DOCUMENTED_FIELDS",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {
              "gRecaptchaResponse": {
                "type": "string"
              },
              "token": {
                "type": "string"
              }
            },
            "additionalProperties": true
          }
        }
      },
      "Adapter_RECAPTCHA_V2_ENTERPRISE": {
        "type": "object",
        "description": "RECAPTCHA_V2_ENTERPRISE input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "websiteURL": {
            "type": "string",
            "description": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "x-description-key": "integration.source.integration"
          },
          "websiteKey": {
            "type": "string",
            "description": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "x-description-key": "integration.source.integration"
          },
          "pageAction": {
            "type": "string",
            "description": "Actual v3 action from the target execute options. This legacy field remains accepted for v2 compatibility, but it does not replace data-s or enterprisePayload.s and does not select the product version.",
            "x-description-key": "integration.recaptcha.pageAction"
          },
          "apiDomain": {
            "type": "string",
            "description": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "x-description-key": "integration.source.integration"
          },
          "isEnterprise": {
            "type": "boolean",
            "description": "For RECAPTCHA_V3_ENTERPRISE the upstream flag is always true, including legacy requests that send false. RECAPTCHA_V3 keeps its existing optional flag behavior. Select the explicit v2 Enterprise product for Enterprise widgets; this flag cannot supply missing session parameters.",
            "x-description-key": "integration.recaptcha.isEnterprise"
          },
          "minScore": {
            "type": "number",
            "description": "Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.",
            "x-description-key": "integration.source.options"
          },
          "userAgent": {
            "type": "string",
            "description": "Read the actual User-Agent used to obtain this challenge; preserve it when the product requires matching.",
            "x-description-key": "integration.source.browser"
          },
          "isInvisible": {
            "type": "boolean",
            "description": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "example": false,
            "x-description-key": "integration.source.integration"
          },
          "cookies": {
            "type": "string",
            "minLength": 1,
            "example": "challenge_cookie=CURRENT_VALUE",
            "description": "Optional current challenge cookie-header string for v2/v2 Enterprise, formatted key=value; key2=value2. Collect from the relevant target context; omit when not needed. This field is not exposed for v3.",
            "x-description-key": "integration.recaptcha.cookies"
          },
          "proxyType": {
            "type": "string",
            "enum": [
              "http",
              "socks4",
              "socks5"
            ],
            "example": "http",
            "description": "Optional v2/v2 Enterprise proxy protocol: http, socks4 or socks5. Any proxy field requires proxyType, proxyAddress and proxyPort together; omit all to retain proxyless mode. v3 has no documented proxy task here.",
            "x-description-key": "integration.recaptcha.proxyType"
          },
          "proxyAddress": {
            "type": "string",
            "minLength": 1,
            "example": "YOUR_PROXY_HOST",
            "description": "Reachable proxy hostname or IP, without scheme, port or credentials. When target IP binding is required, the solver and target browser must use the same actual egress; setting a browser proxy alone is insufficient.",
            "x-description-key": "integration.recaptcha.proxyAddress"
          },
          "proxyPort": {
            "type": "integer",
            "minimum": 1,
            "maximum": 65535,
            "example": 8080,
            "description": "Proxy TCP port, integer 1 to 65535; required only when any proxy parameter is supplied.",
            "x-description-key": "integration.recaptcha.proxyPort"
          },
          "proxyLogin": {
            "type": "string",
            "description": "Optional proxy authentication username from the caller configured proxy; never invent credentials.",
            "x-description-key": "integration.recaptcha.proxyLogin"
          },
          "proxyPassword": {
            "type": "string",
            "description": "Optional proxy authentication password from the same configured proxy.",
            "x-description-key": "integration.recaptcha.proxyPassword"
          },
          "enterprisePayload": {
            "type": "object",
            "properties": {
              "s": {
                "type": "string",
                "minLength": 1
              }
            },
            "additionalProperties": true,
            "example": {
              "s": "CURRENT_ENTERPRISE_S_VALUE"
            },
            "description": "Optional JSON object of additional parameters from the current grecaptcha.enterprise.render configuration, including its s string when present. Preserve this object with the matching challenge; do not send recaptchaDataSValue for Enterprise v2. Not a documented v3 field.",
            "x-description-key": "integration.recaptcha.enterprisePayload"
          }
        },
        "required": [
          "websiteURL",
          "websiteKey"
        ],
        "additionalProperties": false,
        "x-provider-task-type": "RecaptchaV2EnterpriseTaskProxyless",
        "x-solution-example-verified": true,
        "x-solution-example": {
          "gRecaptchaResponse": "EXAMPLE_GRECAPTCHARESPONSE",
          "token": "EXAMPLE_TOKEN"
        },
        "x-integration": {
          "workflows": [
            "HTTP_SUBMIT",
            "BROWSER_RESULT"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "TOKEN",
          "resultGuide": "Use the v2 Enterprise token with its matching target Enterprise widget/session and callback. Preserve enterprisePayload.s when issued; ordinary v2 data-s and pageAction cannot replace it. RECAPTCHA_ENTERPRISE is the existing v2 Enterprise alias, not automatic v3 selection. Cookies and complete proxy parameters are optional; verify target acceptance separately.",
          "requirements": [
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "Identify v2 checkbox/invisible versus v3 score execution and ordinary versus Enterprise before creating. enterprise.js alone does not distinguish Enterprise v2 from v3: inspect render versus execute and widget mode. Use fresh matching session parameters; do not infer a supported native callback or target acceptance from a site key alone. Never substitute GRID automatically.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "websiteURL": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "websiteKey": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "pageAction": "Actual v3 action from the target execute options. This legacy field remains accepted for v2 compatibility, but it does not replace data-s or enterprisePayload.s and does not select the product version.",
            "apiDomain": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "isEnterprise": "For RECAPTCHA_V3_ENTERPRISE the upstream flag is always true, including legacy requests that send false. RECAPTCHA_V3 keeps its existing optional flag behavior. Select the explicit v2 Enterprise product for Enterprise widgets; this flag cannot supply missing session parameters.",
            "minScore": "Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.",
            "userAgent": "Read the actual User-Agent used to obtain this challenge; preserve it when the product requires matching.",
            "isInvisible": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "cookies": "Optional current challenge cookie-header string for v2/v2 Enterprise, formatted key=value; key2=value2. Collect from the relevant target context; omit when not needed. This field is not exposed for v3.",
            "proxyType": "Optional v2/v2 Enterprise proxy protocol: http, socks4 or socks5. Any proxy field requires proxyType, proxyAddress and proxyPort together; omit all to retain proxyless mode. v3 has no documented proxy task here.",
            "proxyAddress": "Reachable proxy hostname or IP, without scheme, port or credentials. When target IP binding is required, the solver and target browser must use the same actual egress; setting a browser proxy alone is insufficient.",
            "proxyPort": "Proxy TCP port, integer 1 to 65535; required only when any proxy parameter is supplied.",
            "proxyLogin": "Optional proxy authentication username from the caller configured proxy; never invent credentials.",
            "proxyPassword": "Optional proxy authentication password from the same configured proxy.",
            "enterprisePayload": "Optional JSON object of additional parameters from the current grecaptcha.enterprise.render configuration, including its s string when present. Preserve this object with the matching challenge; do not send recaptchaDataSValue for Enterprise v2. Not a documented v3 field."
          },
          "resultContract": "DOCUMENTED_FIELDS",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {
              "gRecaptchaResponse": {
                "type": "string"
              },
              "token": {
                "type": "string"
              }
            },
            "additionalProperties": true
          }
        },
        "allOf": [
          {
            "anyOf": [
              {
                "not": {
                  "anyOf": [
                    {
                      "required": [
                        "proxyType"
                      ]
                    },
                    {
                      "required": [
                        "proxyAddress"
                      ]
                    },
                    {
                      "required": [
                        "proxyPort"
                      ]
                    },
                    {
                      "required": [
                        "proxyLogin"
                      ]
                    },
                    {
                      "required": [
                        "proxyPassword"
                      ]
                    }
                  ]
                }
              },
              {
                "required": [
                  "proxyType",
                  "proxyAddress",
                  "proxyPort"
                ]
              }
            ]
          }
        ]
      },
      "Adapter_RECAPTCHA_V3_ENTERPRISE": {
        "type": "object",
        "description": "RECAPTCHA_V3_ENTERPRISE input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "websiteURL": {
            "type": "string",
            "description": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "x-description-key": "integration.source.integration"
          },
          "websiteKey": {
            "type": "string",
            "description": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "x-description-key": "integration.source.integration"
          },
          "pageAction": {
            "type": "string",
            "description": "Actual v3 action from the target execute options. This legacy field remains accepted for v2 compatibility, but it does not replace data-s or enterprisePayload.s and does not select the product version.",
            "x-description-key": "integration.recaptcha.pageAction"
          },
          "apiDomain": {
            "type": "string",
            "description": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "x-description-key": "integration.source.integration"
          },
          "isEnterprise": {
            "type": "boolean",
            "description": "For RECAPTCHA_V3_ENTERPRISE the upstream flag is always true, including legacy requests that send false. RECAPTCHA_V3 keeps its existing optional flag behavior. Select the explicit v2 Enterprise product for Enterprise widgets; this flag cannot supply missing session parameters.",
            "default": true,
            "x-description-key": "integration.recaptcha.isEnterprise",
            "example": true
          },
          "minScore": {
            "type": "number",
            "description": "Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.",
            "x-description-key": "integration.source.options"
          },
          "userAgent": {
            "type": "string",
            "description": "Read the actual User-Agent used to obtain this challenge; preserve it when the product requires matching.",
            "x-description-key": "integration.source.browser"
          }
        },
        "required": [
          "minScore",
          "websiteURL",
          "websiteKey"
        ],
        "additionalProperties": false,
        "x-provider-task-type": "RecaptchaV3TaskProxyless",
        "x-solution-example-verified": true,
        "x-solution-example": {
          "gRecaptchaResponse": "EXAMPLE_GRECAPTCHARESPONSE",
          "token": "EXAMPLE_TOKEN"
        },
        "x-integration": {
          "workflows": [
            "HTTP_SUBMIT",
            "BROWSER_RESULT"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "TOKEN",
          "resultGuide": "Use the v3 token with the target site key, minScore and actual pageAction. RECAPTCHA_V3_ENTERPRISE always uses Enterprise mode. This integration remains proxyless; v2 session fields (enterprisePayload, recaptchaDataSValue, cookies and proxy fields) are not exposed for v3. Do not infer score requirements or target acceptance from an image challenge.",
          "requirements": [
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "Identify v2 checkbox/invisible versus v3 score execution and ordinary versus Enterprise before creating. enterprise.js alone does not distinguish Enterprise v2 from v3: inspect render versus execute and widget mode. Use fresh matching session parameters; do not infer a supported native callback or target acceptance from a site key alone. Never substitute GRID automatically.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "websiteURL": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "websiteKey": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "pageAction": "Actual v3 action from the target execute options. This legacy field remains accepted for v2 compatibility, but it does not replace data-s or enterprisePayload.s and does not select the product version.",
            "apiDomain": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "isEnterprise": "For RECAPTCHA_V3_ENTERPRISE the upstream flag is always true, including legacy requests that send false. RECAPTCHA_V3 keeps its existing optional flag behavior. Select the explicit v2 Enterprise product for Enterprise widgets; this flag cannot supply missing session parameters.",
            "minScore": "Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.",
            "userAgent": "Read the actual User-Agent used to obtain this challenge; preserve it when the product requires matching."
          },
          "resultContract": "DOCUMENTED_FIELDS",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {
              "gRecaptchaResponse": {
                "type": "string"
              },
              "token": {
                "type": "string"
              }
            },
            "additionalProperties": true
          }
        }
      },
      "Adapter_RECAPTCHA_ENTERPRISE": {
        "type": "object",
        "description": "RECAPTCHA_ENTERPRISE input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "websiteURL": {
            "type": "string",
            "description": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "x-description-key": "integration.source.integration"
          },
          "websiteKey": {
            "type": "string",
            "description": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "x-description-key": "integration.source.integration"
          },
          "pageAction": {
            "type": "string",
            "description": "Actual v3 action from the target execute options. This legacy field remains accepted for v2 compatibility, but it does not replace data-s or enterprisePayload.s and does not select the product version.",
            "x-description-key": "integration.recaptcha.pageAction"
          },
          "apiDomain": {
            "type": "string",
            "description": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "x-description-key": "integration.source.integration"
          },
          "isEnterprise": {
            "type": "boolean",
            "description": "For RECAPTCHA_V3_ENTERPRISE the upstream flag is always true, including legacy requests that send false. RECAPTCHA_V3 keeps its existing optional flag behavior. Select the explicit v2 Enterprise product for Enterprise widgets; this flag cannot supply missing session parameters.",
            "x-description-key": "integration.recaptcha.isEnterprise"
          },
          "minScore": {
            "type": "number",
            "description": "Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.",
            "x-description-key": "integration.source.options"
          },
          "userAgent": {
            "type": "string",
            "description": "Read the actual User-Agent used to obtain this challenge; preserve it when the product requires matching.",
            "x-description-key": "integration.source.browser"
          },
          "appId": {
            "type": "string",
            "description": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "x-description-key": "integration.source.integration"
          },
          "isInvisible": {
            "type": "boolean",
            "description": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "example": false,
            "x-description-key": "integration.source.integration"
          },
          "cookies": {
            "type": "string",
            "minLength": 1,
            "example": "challenge_cookie=CURRENT_VALUE",
            "description": "Optional current challenge cookie-header string for v2/v2 Enterprise, formatted key=value; key2=value2. Collect from the relevant target context; omit when not needed. This field is not exposed for v3.",
            "x-description-key": "integration.recaptcha.cookies"
          },
          "proxyType": {
            "type": "string",
            "enum": [
              "http",
              "socks4",
              "socks5"
            ],
            "example": "http",
            "description": "Optional v2/v2 Enterprise proxy protocol: http, socks4 or socks5. Any proxy field requires proxyType, proxyAddress and proxyPort together; omit all to retain proxyless mode. v3 has no documented proxy task here.",
            "x-description-key": "integration.recaptcha.proxyType"
          },
          "proxyAddress": {
            "type": "string",
            "minLength": 1,
            "example": "YOUR_PROXY_HOST",
            "description": "Reachable proxy hostname or IP, without scheme, port or credentials. When target IP binding is required, the solver and target browser must use the same actual egress; setting a browser proxy alone is insufficient.",
            "x-description-key": "integration.recaptcha.proxyAddress"
          },
          "proxyPort": {
            "type": "integer",
            "minimum": 1,
            "maximum": 65535,
            "example": 8080,
            "description": "Proxy TCP port, integer 1 to 65535; required only when any proxy parameter is supplied.",
            "x-description-key": "integration.recaptcha.proxyPort"
          },
          "proxyLogin": {
            "type": "string",
            "description": "Optional proxy authentication username from the caller configured proxy; never invent credentials.",
            "x-description-key": "integration.recaptcha.proxyLogin"
          },
          "proxyPassword": {
            "type": "string",
            "description": "Optional proxy authentication password from the same configured proxy.",
            "x-description-key": "integration.recaptcha.proxyPassword"
          },
          "enterprisePayload": {
            "type": "object",
            "properties": {
              "s": {
                "type": "string",
                "minLength": 1
              }
            },
            "additionalProperties": true,
            "example": {
              "s": "CURRENT_ENTERPRISE_S_VALUE"
            },
            "description": "Optional JSON object of additional parameters from the current grecaptcha.enterprise.render configuration, including its s string when present. Preserve this object with the matching challenge; do not send recaptchaDataSValue for Enterprise v2. Not a documented v3 field.",
            "x-description-key": "integration.recaptcha.enterprisePayload"
          }
        },
        "required": [
          "websiteURL",
          "websiteKey"
        ],
        "additionalProperties": false,
        "x-provider-task-type": "RecaptchaV2EnterpriseTaskProxyless",
        "x-solution-example-verified": true,
        "x-solution-example": {
          "gRecaptchaResponse": "EXAMPLE_GRECAPTCHARESPONSE",
          "token": "EXAMPLE_TOKEN"
        },
        "x-integration": {
          "workflows": [
            "HTTP_SUBMIT",
            "BROWSER_RESULT"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "TOKEN",
          "resultGuide": "Use the v2 Enterprise token with its matching target Enterprise widget/session and callback. Preserve enterprisePayload.s when issued; ordinary v2 data-s and pageAction cannot replace it. RECAPTCHA_ENTERPRISE is the existing v2 Enterprise alias, not automatic v3 selection. Cookies and complete proxy parameters are optional; verify target acceptance separately.",
          "requirements": [
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "Identify v2 checkbox/invisible versus v3 score execution and ordinary versus Enterprise before creating. enterprise.js alone does not distinguish Enterprise v2 from v3: inspect render versus execute and widget mode. Use fresh matching session parameters; do not infer a supported native callback or target acceptance from a site key alone. Never substitute GRID automatically.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "websiteURL": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "websiteKey": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "pageAction": "Actual v3 action from the target execute options. This legacy field remains accepted for v2 compatibility, but it does not replace data-s or enterprisePayload.s and does not select the product version.",
            "apiDomain": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "isEnterprise": "For RECAPTCHA_V3_ENTERPRISE the upstream flag is always true, including legacy requests that send false. RECAPTCHA_V3 keeps its existing optional flag behavior. Select the explicit v2 Enterprise product for Enterprise widgets; this flag cannot supply missing session parameters.",
            "minScore": "Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.",
            "userAgent": "Read the actual User-Agent used to obtain this challenge; preserve it when the product requires matching.",
            "appId": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "isInvisible": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "cookies": "Optional current challenge cookie-header string for v2/v2 Enterprise, formatted key=value; key2=value2. Collect from the relevant target context; omit when not needed. This field is not exposed for v3.",
            "proxyType": "Optional v2/v2 Enterprise proxy protocol: http, socks4 or socks5. Any proxy field requires proxyType, proxyAddress and proxyPort together; omit all to retain proxyless mode. v3 has no documented proxy task here.",
            "proxyAddress": "Reachable proxy hostname or IP, without scheme, port or credentials. When target IP binding is required, the solver and target browser must use the same actual egress; setting a browser proxy alone is insufficient.",
            "proxyPort": "Proxy TCP port, integer 1 to 65535; required only when any proxy parameter is supplied.",
            "proxyLogin": "Optional proxy authentication username from the caller configured proxy; never invent credentials.",
            "proxyPassword": "Optional proxy authentication password from the same configured proxy.",
            "enterprisePayload": "Optional JSON object of additional parameters from the current grecaptcha.enterprise.render configuration, including its s string when present. Preserve this object with the matching challenge; do not send recaptchaDataSValue for Enterprise v2. Not a documented v3 field."
          },
          "resultContract": "DOCUMENTED_FIELDS",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {
              "gRecaptchaResponse": {
                "type": "string"
              },
              "token": {
                "type": "string"
              }
            },
            "additionalProperties": true
          }
        },
        "allOf": [
          {
            "anyOf": [
              {
                "not": {
                  "anyOf": [
                    {
                      "required": [
                        "proxyType"
                      ]
                    },
                    {
                      "required": [
                        "proxyAddress"
                      ]
                    },
                    {
                      "required": [
                        "proxyPort"
                      ]
                    },
                    {
                      "required": [
                        "proxyLogin"
                      ]
                    },
                    {
                      "required": [
                        "proxyPassword"
                      ]
                    }
                  ]
                }
              },
              {
                "required": [
                  "proxyType",
                  "proxyAddress",
                  "proxyPort"
                ]
              }
            ]
          }
        ]
      },
      "Adapter_CLOUDFLARE_TURNSTILE": {
        "type": "object",
        "description": "CLOUDFLARE_TURNSTILE input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "websiteURL": {
            "type": "string",
            "description": "Full URL of the page hosting this widget, from the same target session.",
            "x-description-key": "integration.turnstile.websiteURL",
            "minLength": 1
          },
          "websiteKey": {
            "type": "string",
            "description": "Actual sitekey of this Turnstile widget. Do not use a key from another site.",
            "x-description-key": "integration.turnstile.websiteKey",
            "minLength": 1
          },
          "action": {
            "type": "string",
            "description": "Actual render action. Required with challenge-page pagedata; standalone widgets may also set action without pagedata.",
            "x-description-key": "integration.turnstile.action"
          },
          "data": {
            "type": "string",
            "description": "Actual render cData, sent upstream as data. cData is accepted as an alias; conflicting values are rejected before billing.",
            "x-description-key": "integration.turnstile.data",
            "example": "CURRENT_CDATA"
          },
          "pagedata": {
            "type": "string",
            "description": "Fresh render chlPageData for a Cloudflare challenge page, sent upstream as pagedata. When supplied, action and data must also be present. Not universally required for standalone widgets.",
            "x-description-key": "integration.turnstile.pagedata",
            "example": "CURRENT_CHL_PAGE_DATA"
          },
          "cData": {
            "type": "string",
            "description": "Compatibility alias of data. Prefer data; omit the alias when data is supplied.",
            "x-description-key": "integration.turnstile.cData",
            "deprecated": true,
            "example": "CURRENT_CDATA"
          },
          "chlPageData": {
            "type": "string",
            "description": "Compatibility alias of pagedata. Prefer pagedata; omit the alias when pagedata is supplied.",
            "x-description-key": "integration.turnstile.chlPageData",
            "deprecated": true,
            "example": "CURRENT_CHL_PAGE_DATA"
          },
          "userAgent": {
            "type": "string",
            "description": "Actual browser User-Agent, when available. Preserve the returned solution.userAgent; do not assume the upstream will return the supplied value.",
            "x-description-key": "integration.turnstile.userAgent"
          },
          "proxyType": {
            "type": "string",
            "description": "Optional proxy protocol: http, socks4 or socks5. Supplying any proxy field requires proxyType, proxyAddress and proxyPort together. Omit all proxy fields to retain proxyless mode.",
            "x-description-key": "integration.turnstile.proxyType",
            "enum": [
              "http",
              "socks4",
              "socks5"
            ]
          },
          "proxyAddress": {
            "type": "string",
            "description": "Proxy host or IP without scheme, port or credentials. Use the appropriate target-session egress.",
            "x-description-key": "integration.turnstile.proxyAddress"
          },
          "proxyPort": {
            "type": "integer",
            "description": "Proxy TCP port: integer from 1 to 65535. Required only when using a proxy.",
            "x-description-key": "integration.turnstile.proxyPort",
            "minimum": 1,
            "maximum": 65535
          },
          "proxyLogin": {
            "type": "string",
            "description": "Proxy username only if this proxy requires authentication.",
            "x-description-key": "integration.turnstile.proxyLogin"
          },
          "proxyPassword": {
            "type": "string",
            "description": "Proxy password only if this proxy requires authentication.",
            "x-description-key": "integration.turnstile.proxyPassword"
          }
        },
        "required": [
          "websiteURL",
          "websiteKey"
        ],
        "additionalProperties": false,
        "x-provider-task-type": "TurnstileTaskProxyless",
        "x-solution-example-verified": true,
        "x-solution-example": {
          "token": "EXAMPLE_TOKEN",
          "userAgent": "EXAMPLE_USERAGENT"
        },
        "x-integration": {
          "workflows": [
            "HTTP_SUBMIT",
            "BROWSER_RESULT"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "TOKEN",
          "resultGuide": "Use solution.token through the original widget response field or callback and honor solution.userAgent for challenge pages. Tokens are single-use and valid for 300 seconds after generation; the target must validate them. SUCCEEDED does not verify target acceptance or produce a generic cf_clearance cookie.",
          "requirements": [
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "First distinguish a standalone widget from a Cloudflare challenge page. URL and sitekey remain sufficient inputs for a basic standalone widget. Challenge pages additionally require their current action, cData (data) and chlPageData (pagedata), not guessed values. action/data alone do not establish challenge-page mode. Optional proxy fields select TurnstileTask; omitting them retains TurnstileTaskProxyless.",
            "PROVIDER_UNAVAILABLE means an upstream transport/availability problem, not proof of an unsolvable CAPTCHA. A short create cooldown may reject new requests without contacting the upstream after HTTP 429/502/503/504. A request with unknown upstream receipt is never automatically recreated. Inspect the failure before starting another paid task; do not switch to GRID or reuse expired challenge materials.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "websiteURL": "Full URL of the page hosting this widget, from the same target session.",
            "websiteKey": "Actual sitekey of this Turnstile widget. Do not use a key from another site.",
            "action": "Actual render action. Required with challenge-page pagedata; standalone widgets may also set action without pagedata.",
            "data": "Actual render cData, sent upstream as data. cData is accepted as an alias; conflicting values are rejected before billing.",
            "pagedata": "Fresh render chlPageData for a Cloudflare challenge page, sent upstream as pagedata. When supplied, action and data must also be present. Not universally required for standalone widgets.",
            "cData": "Compatibility alias of data. Prefer data; omit the alias when data is supplied.",
            "chlPageData": "Compatibility alias of pagedata. Prefer pagedata; omit the alias when pagedata is supplied.",
            "userAgent": "Actual browser User-Agent, when available. Preserve the returned solution.userAgent; do not assume the upstream will return the supplied value.",
            "proxyType": "Optional proxy protocol: http, socks4 or socks5. Supplying any proxy field requires proxyType, proxyAddress and proxyPort together. Omit all proxy fields to retain proxyless mode.",
            "proxyAddress": "Proxy host or IP without scheme, port or credentials. Use the appropriate target-session egress.",
            "proxyPort": "Proxy TCP port: integer from 1 to 65535. Required only when using a proxy.",
            "proxyLogin": "Proxy username only if this proxy requires authentication.",
            "proxyPassword": "Proxy password only if this proxy requires authentication."
          },
          "resultContract": "DOCUMENTED_FIELDS",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {
              "token": {
                "type": "string"
              },
              "userAgent": {
                "type": "string"
              }
            },
            "additionalProperties": true
          }
        }
      },
      "Adapter_ARKOSE": {
        "type": "object",
        "description": "ARKOSE input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "websiteURL": {
            "type": "string",
            "description": "Full URL of the page containing the challenge.",
            "x-description-key": "docs.parameter.websiteURL.bf47bf9e"
          },
          "websitePublicKey": {
            "type": "string",
            "description": "Public key from the target page.",
            "x-description-key": "docs.parameter.websitePublicKey.814732fe"
          },
          "funcaptchaApiJSSubdomain": {
            "type": "string",
            "description": "FunCaptcha API hostname used by the target page.",
            "x-description-key": "docs.parameter.funcaptchaApiJSSubdomain.553dae55"
          },
          "data": {
            "type": "string",
            "description": "Challenge data from the target integration.",
            "x-description-key": "docs.parameter.data.d9813a5e"
          },
          "userAgent": {
            "type": "string",
            "description": "User-Agent of the browser that obtained the challenge.",
            "x-description-key": "docs.parameter.userAgent.1ea0cf18"
          }
        },
        "required": [
          "websiteURL",
          "websitePublicKey"
        ],
        "additionalProperties": false,
        "x-provider-task-type": "FunCaptchaTaskProxyless",
        "x-solution-example-verified": true,
        "x-solution-example": {
          "token": "EXAMPLE_TOKEN"
        },
        "x-integration": {
          "workflows": [
            "HTTP_SUBMIT",
            "BROWSER_RESULT"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "TOKEN",
          "resultGuide": "Apply solution.token through this product integration, not an unrelated CAPTCHA field. Follow the target integration for submission and preserve any required returned User-Agent. A token alone does not establish target acceptance.",
          "requirements": [
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "websiteURL": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "websitePublicKey": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "funcaptchaApiJSSubdomain": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "data": "Read the fresh value from the current target challenge/session or its documented integration. Do not reuse a sample or a value from another challenge.",
            "userAgent": "Read the actual User-Agent used to obtain this challenge; preserve it when the product requires matching."
          },
          "resultContract": "DOCUMENTED_FIELDS",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {
              "token": {
                "type": "string"
              }
            },
            "additionalProperties": true
          }
        }
      },
      "Adapter_GEETEST": {
        "type": "object",
        "description": "GeeTest v3 (GEETEST) input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "websiteURL": {
            "type": "string",
            "description": "Full URL of the page containing the challenge.",
            "x-description-key": "docs.parameter.websiteURL.bf47bf9e"
          },
          "gt": {
            "type": "string",
            "description": "The gt issued by the target initGeetest v3 integration; not a v4 captcha_id. Do not substitute a demo or another integration identifier.",
            "x-description-key": "integration.geetest.gt"
          },
          "challenge": {
            "type": "string",
            "description": "Obtain a new, unused v3 challenge from the target initialization endpoint for every new task. Once loaded by the page it is no longer valid for the solver. Keep its target session; do not reuse it or infer freshness from length.",
            "x-description-key": "integration.geetest.challenge"
          },
          "apiServerSubdomain": {
            "type": "string",
            "description": "Optional v3 GeeTest API hostname from the target configuration, for example api-na.geetest.com. Omit if not configured or unknown; never submit YOUR_* placeholders. The existing public field name remains unchanged.",
            "x-description-key": "integration.geetest.domain"
          },
          "userAgent": {
            "type": "string",
            "description": "User-Agent of the browser that obtained the challenge.",
            "x-description-key": "docs.parameter.userAgent.1ea0cf18"
          }
        },
        "required": [
          "websiteURL",
          "gt",
          "challenge"
        ],
        "additionalProperties": false,
        "x-provider-task-type": "GeeTestTaskProxyless",
        "x-solution-example-verified": true,
        "x-solution-example": {
          "challenge": "EXAMPLE_CHALLENGE",
          "validate": "EXAMPLE_VALIDATE",
          "seccode": "EXAMPLE_SECCODE"
        },
        "x-integration": {
          "workflows": [
            "HTTP_SUBMIT",
            "BROWSER_RESULT"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "STRUCTURED_PROOF",
          "resultGuide": "GeeTest v3 (initGeetest): obtain a new, unused challenge for every new solver task. A challenge already loaded by the page is no longer valid for the solver; copying the current widget value is not sufficient. Submit solution.challenge, validate and seccode together through the matching target session. Do not treat this as v4.",
          "requirements": [
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "GeeTest v3 (initGeetest): obtain a new, unused challenge for every new solver task. A challenge already loaded by the page is no longer valid for the solver; copying the current widget value is not sufficient. Submit solution.challenge, validate and seccode together through the matching target session. Do not treat this as v4.",
            "For PROVIDER_UNSOLVABLE, inspect the precise version, initialization source, challenge consumption/expiry, API hostname, actual User-Agent and target session. Different challenge values do not prove freshness. Solver failure occurs before any successful proof can be applied. A changed challenge is a new paid task, not a transport retry.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "websiteURL": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "gt": "The gt issued by the target initGeetest v3 integration; not a v4 captcha_id. Do not substitute a demo or another integration identifier.",
            "challenge": "Obtain a new, unused v3 challenge from the target initialization endpoint for every new task. Once loaded by the page it is no longer valid for the solver. Keep its target session; do not reuse it or infer freshness from length.",
            "apiServerSubdomain": "Optional v3 GeeTest API hostname from the target configuration, for example api-na.geetest.com. Omit if not configured or unknown; never submit YOUR_* placeholders. The existing public field name remains unchanged.",
            "userAgent": "Read the actual User-Agent used to obtain this challenge; preserve it when the product requires matching."
          },
          "resultContract": "DOCUMENTED_FIELDS",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {
              "challenge": {
                "type": "string"
              },
              "validate": {
                "type": "string"
              },
              "seccode": {
                "type": "string"
              }
            },
            "additionalProperties": true
          }
        }
      },
      "Adapter_GEETEST_V4": {
        "type": "object",
        "description": "GEETEST_V4 input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "websiteURL": {
            "type": "string",
            "description": "Full URL of the page containing the challenge.",
            "x-description-key": "docs.parameter.websiteURL.bf47bf9e"
          },
          "captchaId": {
            "type": "string",
            "description": "Use the captcha_id from the target initGeetest4 configuration. It is not the gt or challenge of a v3 integration.",
            "x-description-key": "integration.geetest.captchaId"
          },
          "userAgent": {
            "type": "string",
            "description": "User-Agent of the browser that obtained the challenge.",
            "x-description-key": "docs.parameter.userAgent.1ea0cf18"
          },
          "riskType": {
            "type": "string",
            "description": "Optional actual GeeTest v4 risk_type. Sent inside upstream initParameters with captcha_id; it does not change the product version.",
            "x-description-key": "integration.repair.GEETEST_V4.riskType",
            "example": "slide",
            "minLength": 1
          }
        },
        "required": [
          "websiteURL",
          "captchaId"
        ],
        "additionalProperties": false,
        "x-provider-task-type": "GeeTestTaskProxyless",
        "x-solution-example-verified": true,
        "x-solution-example": {
          "captcha_id": "EXAMPLE_CAPTCHA_ID",
          "lot_number": "EXAMPLE_LOT_NUMBER",
          "pass_token": "EXAMPLE_PASS_TOKEN",
          "gen_time": "EXAMPLE_GEN_TIME",
          "captcha_output": "EXAMPLE_CAPTCHA_OUTPUT"
        },
        "x-integration": {
          "workflows": [
            "HTTP_SUBMIT",
            "BROWSER_RESULT"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "STRUCTURED_PROOF",
          "resultGuide": "Use GEETEST_V4 for initGeetest4/captcha_id; use GEETEST for the v3 gt/challenge flow. Preserve captcha_id, lot_number, pass_token, gen_time and captcha_output as a matching group and submit through the target v4 integration.",
          "requirements": [
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "Use GEETEST_V4 for initGeetest4/captcha_id; use GEETEST for the v3 gt/challenge flow. Preserve captcha_id, lot_number, pass_token, gen_time and captcha_output as a matching group and submit through the target v4 integration.",
            "For PROVIDER_UNSOLVABLE, inspect the precise version, initialization source, challenge consumption/expiry, API hostname, actual User-Agent and target session. Different challenge values do not prove freshness. Solver failure occurs before any successful proof can be applied. A changed challenge is a new paid task, not a transport retry.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "websiteURL": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "captchaId": "Use the captcha_id from the target initGeetest4 configuration. It is not the gt or challenge of a v3 integration.",
            "userAgent": "Read the actual User-Agent used to obtain this challenge; preserve it when the product requires matching.",
            "riskType": "Optional actual GeeTest v4 risk_type. Sent inside upstream initParameters with captcha_id; it does not change the product version."
          },
          "resultContract": "DOCUMENTED_FIELDS",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {
              "captcha_id": {
                "type": "string"
              },
              "lot_number": {
                "type": "string"
              },
              "pass_token": {
                "type": "string"
              },
              "gen_time": {
                "type": "string"
              },
              "captcha_output": {
                "type": "string"
              }
            },
            "additionalProperties": true
          }
        }
      },
      "Adapter_CAPY_PUZZLE": {
        "type": "object",
        "description": "CAPY_PUZZLE input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "websiteURL": {
            "type": "string",
            "description": "Full URL of the page containing the challenge.",
            "x-description-key": "docs.parameter.websiteURL.bf47bf9e"
          },
          "websiteKey": {
            "type": "string",
            "description": "Public site key from the target page.",
            "x-description-key": "docs.parameter.websiteKey.e0ab88b7"
          },
          "userAgent": {
            "type": "string",
            "description": "User-Agent of the browser that obtained the challenge.",
            "x-description-key": "docs.parameter.userAgent.1ea0cf18"
          },
          "proxyType": {
            "type": "string",
            "description": "Proxy protocol, for example http.",
            "x-description-key": "docs.parameter.proxyType.6d9fb546"
          },
          "proxyAddress": {
            "type": "string",
            "description": "Proxy hostname or IP address.",
            "x-description-key": "docs.parameter.proxyAddress.df6eede9"
          },
          "proxyPort": {
            "type": "integer",
            "format": "int32",
            "description": "Proxy port.",
            "x-description-key": "docs.parameter.proxyPort.894c263f"
          },
          "proxyLogin": {
            "type": "string",
            "description": "Proxy username, when authentication is required.",
            "x-description-key": "docs.parameter.proxyLogin.48ef2d87"
          },
          "proxyPassword": {
            "type": "string",
            "description": "Proxy password, when authentication is required.",
            "x-description-key": "docs.parameter.proxyPassword.18ae5ff4"
          }
        },
        "required": [
          "websiteURL",
          "websiteKey"
        ],
        "additionalProperties": false,
        "x-provider-task-type": "CapyTask",
        "x-solution-example-verified": true,
        "x-solution-example": {
          "captchakey": "EXAMPLE_CAPTCHAKEY",
          "challengekey": "EXAMPLE_CHALLENGEKEY",
          "answer": "EXAMPLE_ANSWER",
          "respKey": "EXAMPLE_RESPKEY"
        },
        "x-integration": {
          "workflows": [
            "HTTP_SUBMIT",
            "BROWSER_RESULT"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "STRUCTURED_PROOF",
          "resultGuide": "Use the returned captchakey, challengekey, answer and/or respKey according to the target Capy integration. Preserve challenge association; do not assume these fields are a generic token.",
          "requirements": [
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "websiteURL": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "websiteKey": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "userAgent": "Read the actual User-Agent used to obtain this challenge; preserve it when the product requires matching.",
            "proxyType": "Use the caller configured proxy. Supply related proxy fields together and retain the same egress when the target requires IP matching. Never invent proxy credentials.",
            "proxyAddress": "Use the caller configured proxy. Supply related proxy fields together and retain the same egress when the target requires IP matching. Never invent proxy credentials.",
            "proxyPort": "Use the caller configured proxy. Supply related proxy fields together and retain the same egress when the target requires IP matching. Never invent proxy credentials.",
            "proxyLogin": "Use the caller configured proxy. Supply related proxy fields together and retain the same egress when the target requires IP matching. Never invent proxy credentials.",
            "proxyPassword": "Use the caller configured proxy. Supply related proxy fields together and retain the same egress when the target requires IP matching. Never invent proxy credentials."
          },
          "resultContract": "DOCUMENTED_FIELDS",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {
              "captchakey": {
                "type": "string"
              },
              "challengekey": {
                "type": "string"
              },
              "answer": {
                "type": "string"
              },
              "respKey": {
                "type": "string"
              }
            },
            "additionalProperties": true
          }
        }
      },
      "Adapter_KEYCAPTCHA": {
        "type": "object",
        "description": "KEYCAPTCHA input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "websiteURL": {
            "type": "string",
            "description": "Full URL of the page containing the challenge.",
            "x-description-key": "docs.parameter.websiteURL.bf47bf9e"
          },
          "s_s_c_user_id": {
            "type": "integer",
            "format": "int64",
            "description": "KeyCaptcha user identifier from the page.",
            "example": 184015,
            "x-description-key": "docs.parameter.s_s_c_user_id.137ad023"
          },
          "s_s_c_session_id": {
            "type": "string",
            "description": "KeyCaptcha session identifier.",
            "x-description-key": "docs.parameter.s_s_c_session_id.da3cdc01"
          },
          "s_s_c_web_server_sign": {
            "type": "string",
            "description": "KeyCaptcha server signature.",
            "x-description-key": "docs.parameter.s_s_c_web_server_sign.2aa0e825"
          },
          "s_s_c_web_server_sign2": {
            "type": "string",
            "description": "Second KeyCaptcha server signature.",
            "x-description-key": "docs.parameter.s_s_c_web_server_sign2.bd11fb14"
          }
        },
        "required": [
          "websiteURL",
          "s_s_c_user_id",
          "s_s_c_session_id",
          "s_s_c_web_server_sign",
          "s_s_c_web_server_sign2"
        ],
        "additionalProperties": false,
        "x-provider-task-type": "KeyCaptchaTaskProxyless",
        "x-solution-example-verified": true,
        "x-solution-example": {
          "token": "EXAMPLE_TOKEN"
        },
        "x-integration": {
          "workflows": [
            "HTTP_SUBMIT",
            "BROWSER_RESULT"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "TOKEN",
          "resultGuide": "Apply solution.token through this product integration, not an unrelated CAPTCHA field. Follow the target integration for submission and preserve any required returned User-Agent. A token alone does not establish target acceptance.",
          "requirements": [
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "websiteURL": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "s_s_c_user_id": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "s_s_c_session_id": "Read the fresh value from the current target challenge/session or its documented integration. Do not reuse a sample or a value from another challenge.",
            "s_s_c_web_server_sign": "Read the fresh value from the current target challenge/session or its documented integration. Do not reuse a sample or a value from another challenge.",
            "s_s_c_web_server_sign2": "Read the fresh value from the current target challenge/session or its documented integration. Do not reuse a sample or a value from another challenge."
          },
          "resultContract": "DOCUMENTED_FIELDS",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {
              "token": {
                "type": "string"
              }
            },
            "additionalProperties": true
          }
        }
      },
      "Adapter_LEMIN": {
        "type": "object",
        "description": "LEMIN input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "websiteURL": {
            "type": "string",
            "description": "Full URL of the page containing the challenge.",
            "x-description-key": "docs.parameter.websiteURL.bf47bf9e"
          },
          "captchaId": {
            "type": "string",
            "description": "Captcha integration identifier.",
            "x-description-key": "docs.parameter.captchaId.33cfacc6"
          },
          "divId": {
            "type": "string",
            "description": "ID of the Lemin widget container.",
            "example": "lemin-cropped-captcha",
            "x-description-key": "docs.parameter.divId.891dced8"
          },
          "leminApiServerSubdomain": {
            "type": "string",
            "description": "Lemin API hostname used by the target page.",
            "example": "api.leminnow.com",
            "x-description-key": "docs.parameter.leminApiServerSubdomain.270c0c5b"
          }
        },
        "required": [
          "websiteURL",
          "captchaId",
          "divId"
        ],
        "additionalProperties": false,
        "x-provider-task-type": "LeminTaskProxyless",
        "x-solution-example-verified": true,
        "x-solution-example": {
          "answer": "EXAMPLE_ANSWER",
          "challenge_id": "EXAMPLE_CHALLENGE_ID"
        },
        "x-integration": {
          "workflows": [
            "HTTP_SUBMIT",
            "BROWSER_RESULT"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "STRUCTURED_PROOF",
          "resultGuide": "Use solution.answer with its matching solution.challenge_id through the target Lemin integration.",
          "requirements": [
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "websiteURL": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "captchaId": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "divId": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "leminApiServerSubdomain": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted."
          },
          "resultContract": "DOCUMENTED_FIELDS",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {
              "answer": {
                "type": "string"
              },
              "challenge_id": {
                "type": "string"
              }
            },
            "additionalProperties": true
          }
        }
      },
      "Adapter_AMAZON": {
        "type": "object",
        "description": "AMAZON input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "websiteURL": {
            "type": "string",
            "description": "Full URL of the page containing the challenge.",
            "x-description-key": "docs.parameter.websiteURL.bf47bf9e"
          },
          "websiteKey": {
            "type": "string",
            "description": "Public site key from the target page.",
            "x-description-key": "docs.parameter.websiteKey.e0ab88b7"
          },
          "iv": {
            "type": "string",
            "description": "Fresh AWS challenge initialization vector.",
            "x-description-key": "docs.parameter.iv.01594645"
          },
          "context": {
            "type": "string",
            "description": "Fresh AWS challenge context.",
            "x-description-key": "docs.parameter.context.f3dcf69c"
          },
          "challengeScript": {
            "type": "string",
            "description": "Actual challengeScript URL from the current AWS WAF challenge, not an example URL.",
            "x-description-key": "integration.repair.AMAZON.challengeScript",
            "example": "https://aws-waf.example.com/challengeScript.js",
            "minLength": 1
          },
          "captchaScript": {
            "type": "string",
            "description": "Actual captchaScript URL from the current AWS WAF challenge, not an example URL.",
            "x-description-key": "integration.repair.AMAZON.captchaScript",
            "example": "https://aws-waf.example.com/captchaScript.js",
            "minLength": 1
          },
          "jsapiScript": {
            "type": "string",
            "description": "Actual jsapiScript URL from the current AWS WAF challenge, not an example URL.",
            "x-description-key": "integration.repair.AMAZON.jsapiScript",
            "example": "https://aws-waf.example.com/jsapiScript.js",
            "minLength": 1
          },
          "userAgent": {
            "type": "string",
            "description": "Actual browser User-Agent from the matching target session.",
            "x-description-key": "integration.repair.AMAZON.userAgent",
            "minLength": 1
          },
          "proxyType": {
            "type": "string",
            "description": "Proxy protocol: http, socks4 or socks5; use the same actual egress as the target session when bound.",
            "x-description-key": "integration.repair.AMAZON.proxyType",
            "minLength": 1,
            "enum": [
              "http",
              "socks4",
              "socks5"
            ]
          },
          "proxyAddress": {
            "type": "string",
            "description": "Reachable proxy hostname or IP without scheme, credentials or port.",
            "x-description-key": "integration.repair.AMAZON.proxyAddress",
            "minLength": 1
          },
          "proxyLogin": {
            "type": "string",
            "description": "Optional proxy authentication username. Provide username and password together.",
            "x-description-key": "integration.repair.AMAZON.proxyLogin",
            "minLength": 1
          },
          "proxyPassword": {
            "type": "string",
            "description": "Optional password for that same proxy, paired with proxyLogin.",
            "x-description-key": "integration.repair.AMAZON.proxyPassword",
            "minLength": 1
          },
          "proxyPort": {
            "type": "integer",
            "description": "Proxy TCP port, integer 1 to 65535.",
            "x-description-key": "integration.repair.AMAZON.proxyPort",
            "minimum": 1,
            "maximum": 65535
          }
        },
        "required": [
          "websiteURL"
        ],
        "additionalProperties": false,
        "x-provider-task-type": "AmazonTaskProxyless",
        "x-solution-example-verified": true,
        "x-solution-example": {
          "captcha_voucher": "EXAMPLE_CAPTCHA_VOUCHER",
          "existing_token": "EXAMPLE_EXISTING_TOKEN"
        },
        "x-integration": {
          "workflows": [
            "HTTP_SUBMIT",
            "BROWSER_RESULT"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "STRUCTURED_PROOF",
          "resultGuide": "Use captcha_voucher and existing_token through the target AWS WAF integration, preserving its current key, iv and context. Do not treat these values as a generic text answer.",
          "requirements": [
            "Use either fresh websiteKey+iv+context together (optional challengeScript/captchaScript), or the actual jsapiScript integration. The API specification and its jsapi example differ on websiteKey; preserve a supplied key, while allowing the documented jsapi-only request. Do not mix stale values from another page/session. Caller proxy fields are optional.",
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "websiteURL": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "websiteKey": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "iv": "Read the fresh value from the current target challenge/session or its documented integration. Do not reuse a sample or a value from another challenge.",
            "context": "Read the fresh value from the current target challenge/session or its documented integration. Do not reuse a sample or a value from another challenge.",
            "challengeScript": "Actual challengeScript URL from the current AWS WAF challenge, not an example URL.",
            "captchaScript": "Actual captchaScript URL from the current AWS WAF challenge, not an example URL.",
            "jsapiScript": "Actual jsapiScript URL from the current AWS WAF challenge, not an example URL.",
            "userAgent": "Actual browser User-Agent from the matching target session.",
            "proxyType": "Proxy protocol: http, socks4 or socks5; use the same actual egress as the target session when bound.",
            "proxyAddress": "Reachable proxy hostname or IP without scheme, credentials or port.",
            "proxyLogin": "Optional proxy authentication username. Provide username and password together.",
            "proxyPassword": "Optional password for that same proxy, paired with proxyLogin.",
            "proxyPort": "Proxy TCP port, integer 1 to 65535."
          },
          "resultContract": "DOCUMENTED_FIELDS",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {
              "captcha_voucher": {
                "type": "string"
              },
              "existing_token": {
                "type": "string"
              }
            },
            "additionalProperties": true
          }
        },
        "anyOf": [
          {
            "required": [
              "websiteKey",
              "iv",
              "context"
            ]
          },
          {
            "required": [
              "jsapiScript"
            ]
          }
        ],
        "allOf": [
          {
            "if": {
              "anyOf": [
                {
                  "required": [
                    "proxyType"
                  ]
                },
                {
                  "required": [
                    "proxyAddress"
                  ]
                },
                {
                  "required": [
                    "proxyPort"
                  ]
                },
                {
                  "required": [
                    "proxyLogin"
                  ]
                },
                {
                  "required": [
                    "proxyPassword"
                  ]
                }
              ]
            },
            "then": {
              "required": [
                "proxyType",
                "proxyAddress",
                "proxyPort"
              ]
            }
          },
          {
            "if": {
              "anyOf": [
                {
                  "required": [
                    "proxyLogin"
                  ]
                },
                {
                  "required": [
                    "proxyPassword"
                  ]
                }
              ]
            },
            "then": {
              "required": [
                "proxyLogin",
                "proxyPassword"
              ]
            }
          }
        ]
      },
      "Adapter_IMAGE_CAPTCHA": {
        "type": "object",
        "description": "IMAGE_CAPTCHA input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "body": {
            "type": "string",
            "description": "Base64-encoded image or audio content.",
            "x-description-key": "docs.parameter.body.36ac510d"
          },
          "phrase": {
            "type": "boolean",
            "description": "Whether the answer contains multiple words.",
            "x-description-key": "docs.parameter.phrase.e4ec0b0b"
          },
          "caseSensitive": {
            "type": "boolean",
            "description": "Whether the answer is case-sensitive.",
            "x-description-key": "docs.parameter.caseSensitive.d8a073b8"
          },
          "numeric": {
            "type": "boolean",
            "description": "Character recognition mode.",
            "x-description-key": "docs.parameter.numeric.0ad5f10f"
          },
          "math": {
            "type": "boolean",
            "description": "Whether to calculate the expression shown in the image.",
            "x-description-key": "docs.parameter.math.b03e7411"
          },
          "minLength": {
            "type": "integer",
            "format": "int32",
            "description": "Minimum answer length.",
            "x-description-key": "docs.parameter.minLength.591bd5b2"
          },
          "maxLength": {
            "type": "integer",
            "format": "int32",
            "description": "Maximum answer length.",
            "x-description-key": "docs.parameter.maxLength.1111471b"
          },
          "comment": {
            "type": "string",
            "description": "Question or instructions for solving the challenge.",
            "x-description-key": "docs.parameter.comment.68c7c3d3"
          },
          "imgInstructions": {
            "type": "string",
            "description": "Base64-encoded image instructions.",
            "x-description-key": "docs.parameter.imgInstructions.a452ff6c"
          }
        },
        "required": [
          "body"
        ],
        "additionalProperties": false,
        "x-provider-task-type": "ImageToTextTask",
        "x-solution-example-verified": true,
        "x-solution-example": {
          "text": "EXAMPLE_ANSWER"
        },
        "x-integration": {
          "workflows": [
            "HTTP_SUBMIT",
            "BROWSER_RESULT"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "TEXT_ANSWER",
          "resultGuide": "Read solution.text as the answer to the current image or text question; submit it in the target answer field while preserving the challenge session.",
          "requirements": [
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "body": "Obtain the current challenge media from the target in the field format. For images, preserve original dimensions/order and crop to the challenge, not unrelated page content. For AUDIO, use the actual audio content.",
            "phrase": "Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.",
            "caseSensitive": "Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.",
            "numeric": "Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.",
            "math": "Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.",
            "minLength": "Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.",
            "maxLength": "Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.",
            "comment": "Use the actual question/instructions from the current challenge. Do not append agent commands such as Return coordinates. This field is semantically necessary for instruction-dependent tasks.",
            "imgInstructions": "Obtain the current challenge media from the target in the field format. For images, preserve original dimensions/order and crop to the challenge, not unrelated page content. For AUDIO, use the actual audio content."
          },
          "resultContract": "DOCUMENTED_FIELDS",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {
              "text": {
                "type": "string"
              }
            },
            "additionalProperties": true
          }
        }
      },
      "Adapter_TEXT": {
        "type": "object",
        "description": "TEXT input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "comment": {
            "type": "string",
            "description": "Question or instructions for solving the challenge.",
            "x-description-key": "docs.parameter.comment.68c7c3d3"
          }
        },
        "required": [
          "comment"
        ],
        "additionalProperties": false,
        "x-provider-task-type": "TextCaptchaTask",
        "x-solution-example-verified": true,
        "x-solution-example": {
          "text": "EXAMPLE_ANSWER"
        },
        "x-integration": {
          "workflows": [
            "HTTP_SUBMIT",
            "BROWSER_RESULT"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "TEXT_ANSWER",
          "resultGuide": "Read solution.text as the answer to the current image or text question; submit it in the target answer field while preserving the challenge session.",
          "requirements": [
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "comment": "Use the actual question/instructions from the current challenge. Do not append agent commands such as Return coordinates. This field is semantically necessary for instruction-dependent tasks."
          },
          "resultContract": "DOCUMENTED_FIELDS",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {
              "text": {
                "type": "string"
              }
            },
            "additionalProperties": true
          }
        }
      },
      "Adapter_AUDIO": {
        "type": "object",
        "description": "AUDIO input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "body": {
            "type": "string",
            "description": "Base64-encoded image or audio content.",
            "x-description-key": "docs.parameter.body.36ac510d"
          },
          "lang": {
            "type": "string",
            "description": "Speech language of the submitted MP3: en, fr, de, el, pt or ru. Omitted requests keep the existing en default. This is source language, not API response language or a translation option.",
            "x-description-key": "integration.repair.AUDIO.lang",
            "enum": [
              "en",
              "fr",
              "de",
              "el",
              "pt",
              "ru"
            ],
            "default": "en",
            "example": "en",
            "minLength": 1
          }
        },
        "required": [
          "body"
        ],
        "additionalProperties": false,
        "x-provider-task-type": "AudioTask",
        "x-solution-example-verified": true,
        "x-solution-example": {
          "token": "EXAMPLE_TRANSCRIPT"
        },
        "x-integration": {
          "workflows": [
            "HTTP_SUBMIT",
            "BROWSER_RESULT"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "TRANSCRIPT",
          "resultGuide": "Read solution.text as the audio transcript; some upstream responses use solution.token for the transcript, so accept that field when text is absent. Both contain recognized speech, not a browser verification token. Enter the transcript into the current audio challenge.",
          "requirements": [
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "body": "Obtain the current challenge media from the target in the field format. For images, preserve original dimensions/order and crop to the challenge, not unrelated page content. For AUDIO, use the actual audio content.",
            "lang": "Speech language of the submitted MP3: en, fr, de, el, pt or ru. Omitted requests keep the existing en default. This is source language, not API response language or a translation option."
          },
          "resultContract": "DOCUMENTED_FIELDS",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {
              "text": {
                "type": "string"
              },
              "token": {
                "type": "string"
              }
            },
            "anyOf": [
              {
                "required": [
                  "text"
                ]
              },
              {
                "required": [
                  "token"
                ]
              }
            ],
            "additionalProperties": true
          }
        }
      },
      "Adapter_ROTATE": {
        "type": "object",
        "description": "ROTATE input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "body": {
            "type": "string",
            "description": "Base64-encoded image or audio content.",
            "x-description-key": "docs.parameter.body.36ac510d"
          },
          "comment": {
            "type": "string",
            "description": "Question or instructions for solving the challenge.",
            "x-description-key": "docs.parameter.comment.68c7c3d3"
          }
        },
        "required": [
          "body"
        ],
        "additionalProperties": false,
        "x-provider-task-type": "RotateTask",
        "x-solution-example-verified": true,
        "x-solution-example": {
          "rotate": 180
        },
        "x-integration": {
          "workflows": [
            "BROWSER_INTERACTION"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "ROTATION",
          "resultGuide": "solution.rotate describes the rotation answer. Apply it using the current challenge control convention; confirm direction/units before acting. It is not a click coordinate.",
          "requirements": [
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "body": "Obtain the current challenge media from the target in the field format. For images, preserve original dimensions/order and crop to the challenge, not unrelated page content. For AUDIO, use the actual audio content.",
            "comment": "Use the actual question/instructions from the current challenge. Do not append agent commands such as Return coordinates. This field is semantically necessary for instruction-dependent tasks."
          },
          "resultContract": "DOCUMENTED_FIELDS",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {
              "rotate": {
                "type": "integer"
              }
            },
            "additionalProperties": true
          }
        }
      },
      "Adapter_GRID": {
        "type": "object",
        "description": "GRID input parameters. Read x-integration before creating a paid task. Fallback only when the matching native route is confirmed unavailable; latency and multiple rounds may exceed the target challenge deadline.",
        "properties": {
          "body": {
            "type": "string",
            "description": "Base64-encoded image or audio content.",
            "x-description-key": "docs.parameter.body.36ac510d",
            "minLength": 1
          },
          "comment": {
            "type": "string",
            "description": "Question or instructions for solving the challenge.",
            "x-description-key": "docs.parameter.comment.68c7c3d3",
            "minLength": 1,
            "example": "Select all images containing stairs."
          },
          "rows": {
            "type": "integer",
            "description": "Actual number of rows in the submitted current grid.",
            "x-description-key": "integration.repair.GRID.rows",
            "minimum": 1,
            "example": 3
          },
          "columns": {
            "type": "integer",
            "description": "Actual number of columns in the submitted current grid.",
            "x-description-key": "integration.repair.GRID.columns",
            "minimum": 1,
            "example": 3
          },
          "imgInstructions": {
            "type": "string",
            "description": "Optional Base64 instruction image, at most 100 kB. Supply comment or imgInstructions; imgType requires the original English comment and original image files.",
            "x-description-key": "integration.repair.GRID.imgInstructions",
            "example": "BASE64_INSTRUCTION_IMAGE",
            "minLength": 1
          },
          "imgType": {
            "type": "string",
            "description": "Optional upstream Computer Vision mode: recaptcha or funcaptcha. Do not label a generic/custom image as one of these types; original English comment and original image files are required.",
            "x-description-key": "integration.repair.GRID.imgType",
            "enum": [
              "recaptcha",
              "funcaptcha"
            ],
            "example": "recaptcha",
            "minLength": 1
          },
          "previousId": {
            "type": "string",
            "description": "Optional upstream task ID for the same continuing challenge, only if known. This is not a Nex Captcha platform UUID; omit when no upstream ID is available. Never use a different or expired challenge.",
            "x-description-key": "integration.repair.GRID.previousId",
            "pattern": "^[0-9]+$",
            "example": "123456789",
            "minLength": 1
          },
          "minClicks": {
            "type": "integer",
            "description": "Optional minClicks bound; cannot exceed rows*columns when dimensions are supplied. minClicks cannot exceed maxClicks.",
            "x-description-key": "integration.repair.GRID.minClicks",
            "minimum": 0,
            "example": 1
          },
          "maxClicks": {
            "type": "integer",
            "description": "Optional maxClicks bound; cannot exceed rows*columns when dimensions are supplied. minClicks cannot exceed maxClicks.",
            "x-description-key": "integration.repair.GRID.maxClicks",
            "minimum": 0,
            "example": 9
          },
          "canNoAnswer": {
            "type": "integer",
            "description": "0 or 1. Set 1 only when the actual task permits no matching images; do not use it to hide recognition failures.",
            "x-description-key": "integration.repair.GRID.canNoAnswer",
            "enum": [
              0,
              1
            ],
            "example": 0
          }
        },
        "required": [
          "body"
        ],
        "additionalProperties": false,
        "x-provider-task-type": "GridTask",
        "x-solution-example-verified": true,
        "x-solution-example": {
          "click": [
            1,
            5,
            9
          ]
        },
        "x-integration": {
          "workflows": [
            "BROWSER_INTERACTION"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "GRID_CELLS",
          "resultGuide": "Fallback only after confirming the matching native route unavailable. solution.click contains 1-based row-major tile numbers. Use current unchanged image/instructions and verify each subsequent round. Optional dimensions, instruction image and recognition settings do not make the result a native hCaptcha/reCAPTCHA token. previousId, when available, is an upstream ID, never a platform UUID. No fixed latency or target acceptance is guaranteed.",
          "requirements": [
            "GRID is a fallback only when no usable matching native product/integration exists, or diagnosis confirms that the native route cannot be used for this challenge. First inspect parameters, session bindings and expiry. HTTP 403, timeout or invalid input alone is not a fallback decision. GRID still requires a real current grid image, its original instructions and browser interaction capability; if those are unavailable, stop and report the blocker.",
            "GRID has variable end-to-end latency from image capture, solver queue/recognition, polling and browser clicks; dynamic tiles and further rounds add work. It may exceed a short-lived target challenge deadline, so it is not the default for time-sensitive flows. No fixed solve time or target acceptance is guaranteed. Capture just before solving, check freshness again before applying, and discard answers after challenge expiry or image changes. Do not reuse expired answers or automatically create another paid task.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "body": "Obtain the current challenge media from the target in the field format. For images, preserve original dimensions/order and crop to the challenge, not unrelated page content. For AUDIO, use the actual audio content.",
            "comment": "Use the actual question/instructions from the current challenge. Do not append agent commands such as Return coordinates. This field is semantically necessary for instruction-dependent tasks.",
            "rows": "Actual number of rows in the submitted current grid.",
            "columns": "Actual number of columns in the submitted current grid.",
            "imgInstructions": "Optional Base64 instruction image, at most 100 kB. Supply comment or imgInstructions; imgType requires the original English comment and original image files.",
            "imgType": "Optional upstream Computer Vision mode: recaptcha or funcaptcha. Do not label a generic/custom image as one of these types; original English comment and original image files are required.",
            "previousId": "Optional upstream task ID for the same continuing challenge, only if known. This is not a Nex Captcha platform UUID; omit when no upstream ID is available. Never use a different or expired challenge.",
            "minClicks": "Optional minClicks bound; cannot exceed rows*columns when dimensions are supplied. minClicks cannot exceed maxClicks.",
            "maxClicks": "Optional maxClicks bound; cannot exceed rows*columns when dimensions are supplied. minClicks cannot exceed maxClicks.",
            "canNoAnswer": "0 or 1. Set 1 only when the actual task permits no matching images; do not use it to hide recognition failures."
          },
          "resultContract": "DOCUMENTED_FIELDS",
          "targetAcceptanceVerified": false,
          "indexBase": 1,
          "order": "ROW_MAJOR",
          "resultSchema": {
            "type": "object",
            "properties": {
              "click": {
                "type": "array",
                "items": {
                  "type": "integer"
                }
              }
            },
            "additionalProperties": true
          }
        },
        "anyOf": [
          {
            "required": [
              "comment"
            ]
          },
          {
            "required": [
              "imgInstructions"
            ]
          }
        ],
        "allOf": [
          {
            "if": {
              "required": [
                "imgType"
              ]
            },
            "then": {
              "required": [
                "comment"
              ]
            }
          }
        ]
      },
      "Adapter_CLICK": {
        "type": "object",
        "description": "CLICK input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "body": {
            "type": "string",
            "description": "Base64-encoded image or audio content.",
            "x-description-key": "docs.parameter.body.36ac510d"
          },
          "comment": {
            "type": "string",
            "description": "Question or instructions for solving the challenge.",
            "x-description-key": "docs.parameter.comment.68c7c3d3"
          }
        },
        "required": [
          "body"
        ],
        "additionalProperties": false,
        "x-provider-task-type": "CoordinatesTask",
        "x-solution-example-verified": true,
        "x-solution-example": {
          "coordinates": [
            {
              "x": 358,
              "y": 268
            }
          ]
        },
        "x-integration": {
          "workflows": [
            "BROWSER_INTERACTION"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "IMAGE_COORDINATES",
          "resultGuide": "solution.coordinates contains x/y positions relative to the submitted image. Convert using that image bounds and display scale, not the whole viewport. Preserve order where the challenge requires ordered clicks.",
          "requirements": [
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "body": "Obtain the current challenge media from the target in the field format. For images, preserve original dimensions/order and crop to the challenge, not unrelated page content. For AUDIO, use the actual audio content.",
            "comment": "Use the actual question/instructions from the current challenge. Do not append agent commands such as Return coordinates. This field is semantically necessary for instruction-dependent tasks."
          },
          "resultContract": "DOCUMENTED_FIELDS",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {
              "coordinates": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "x": {
                      "type": "integer"
                    },
                    "y": {
                      "type": "integer"
                    }
                  },
                  "additionalProperties": true
                }
              }
            },
            "additionalProperties": true
          }
        }
      },
      "Adapter_COORDINATES": {
        "type": "object",
        "description": "COORDINATES input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "body": {
            "type": "string",
            "description": "Base64-encoded image or audio content.",
            "x-description-key": "docs.parameter.body.36ac510d"
          },
          "comment": {
            "type": "string",
            "description": "Question or instructions for solving the challenge.",
            "x-description-key": "docs.parameter.comment.68c7c3d3"
          }
        },
        "required": [
          "body"
        ],
        "additionalProperties": false,
        "x-provider-task-type": "CoordinatesTask",
        "x-solution-example-verified": true,
        "x-solution-example": {
          "coordinates": [
            {
              "x": 358,
              "y": 268
            }
          ]
        },
        "x-integration": {
          "workflows": [
            "BROWSER_INTERACTION"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "IMAGE_COORDINATES",
          "resultGuide": "solution.coordinates contains x/y positions relative to the submitted image. Convert using that image bounds and display scale, not the whole viewport. Preserve order where the challenge requires ordered clicks.",
          "requirements": [
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "body": "Obtain the current challenge media from the target in the field format. For images, preserve original dimensions/order and crop to the challenge, not unrelated page content. For AUDIO, use the actual audio content.",
            "comment": "Use the actual question/instructions from the current challenge. Do not append agent commands such as Return coordinates. This field is semantically necessary for instruction-dependent tasks."
          },
          "resultContract": "DOCUMENTED_FIELDS",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {
              "coordinates": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "x": {
                      "type": "integer"
                    },
                    "y": {
                      "type": "integer"
                    }
                  },
                  "additionalProperties": true
                }
              }
            },
            "additionalProperties": true
          }
        }
      },
      "Adapter_DRAW_AROUND": {
        "type": "object",
        "description": "DRAW_AROUND input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "body": {
            "type": "string",
            "description": "Base64-encoded image or audio content.",
            "x-description-key": "docs.parameter.body.36ac510d"
          },
          "comment": {
            "type": "string",
            "description": "Question or instructions for solving the challenge.",
            "x-description-key": "docs.parameter.comment.68c7c3d3"
          }
        },
        "required": [
          "body"
        ],
        "additionalProperties": false,
        "x-provider-task-type": "DrawAroundTask",
        "x-solution-example-verified": true,
        "x-solution-example": {
          "canvas": [
            [
              {
                "x": 20,
                "y": 30
              },
              {
                "x": 40,
                "y": 60
              }
            ]
          ]
        },
        "x-integration": {
          "workflows": [
            "BROWSER_INTERACTION"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "POLYGONS",
          "resultGuide": "solution.canvas contains image-relative point groups. Preserve point order and image scale when drawing; this is not a list of GRID cells.",
          "requirements": [
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "body": "Obtain the current challenge media from the target in the field format. For images, preserve original dimensions/order and crop to the challenge, not unrelated page content. For AUDIO, use the actual audio content.",
            "comment": "Use the actual question/instructions from the current challenge. Do not append agent commands such as Return coordinates. This field is semantically necessary for instruction-dependent tasks."
          },
          "resultContract": "DOCUMENTED_FIELDS",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {
              "canvas": {
                "type": "array",
                "items": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "x": {
                        "type": "integer"
                      },
                      "y": {
                        "type": "integer"
                      }
                    },
                    "additionalProperties": true
                  }
                }
              }
            },
            "additionalProperties": true
          }
        }
      },
      "Adapter_DRAG_AND_DROP": {
        "type": "object",
        "description": "DRAG_AND_DROP input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "comment": {
            "type": "string",
            "description": "Question or instructions for solving the challenge.",
            "x-description-key": "docs.parameter.comment.68c7c3d3"
          },
          "background": {
            "type": "string",
            "description": "Base64-encoded background image.",
            "x-description-key": "docs.parameter.background.566795a9"
          },
          "images": {
            "type": "array",
            "minItems": 1,
            "items": {
              "type": "string"
            },
            "description": "Array of Base64-encoded draggable images in the original order.",
            "x-description-key": "docs.parameter.images.ef45ef1f"
          }
        },
        "required": [
          "background",
          "images"
        ],
        "additionalProperties": false,
        "x-provider-task-type": "DragAndDropTask",
        "x-solution-example-verified": true,
        "x-solution-example": {
          "coordinates": [
            {
              "x": 100,
              "y": 80
            }
          ]
        },
        "x-integration": {
          "workflows": [
            "BROWSER_INTERACTION"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "DRAG_TARGETS",
          "resultGuide": "Match returned coordinates to the submitted movable images/parts in their original order and map to the background image. Confirm the target drag convention; do not interpret them as arbitrary click points.",
          "requirements": [
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "comment": "Use the actual question/instructions from the current challenge. Do not append agent commands such as Return coordinates. This field is semantically necessary for instruction-dependent tasks.",
            "background": "Obtain the current challenge media from the target in the field format. For images, preserve original dimensions/order and crop to the challenge, not unrelated page content. For AUDIO, use the actual audio content.",
            "images": "Obtain the current challenge media from the target in the field format. For images, preserve original dimensions/order and crop to the challenge, not unrelated page content. For AUDIO, use the actual audio content."
          },
          "resultContract": "DOCUMENTED_FIELDS",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {
              "coordinates": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "x": {
                      "type": "integer"
                    },
                    "y": {
                      "type": "integer"
                    }
                  },
                  "additionalProperties": true
                }
              }
            },
            "additionalProperties": true
          }
        }
      },
      "Adapter_BOUNDING_BOX": {
        "type": "object",
        "description": "BOUNDING_BOX input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "body": {
            "type": "string",
            "description": "Base64-encoded image or audio content.",
            "x-description-key": "docs.parameter.body.36ac510d"
          },
          "comment": {
            "type": "string",
            "description": "Question or instructions for solving the challenge.",
            "x-description-key": "docs.parameter.comment.68c7c3d3"
          }
        },
        "required": [
          "body"
        ],
        "additionalProperties": false,
        "x-provider-task-type": "BoundingBoxTask",
        "x-solution-example-verified": true,
        "x-solution-example": {
          "bounding_boxes": [
            {
              "xMin": 310,
              "xMax": 385,
              "yMin": 231,
              "yMax": 308
            }
          ]
        },
        "x-integration": {
          "workflows": [
            "BROWSER_INTERACTION"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "BOUNDING_BOXES",
          "resultGuide": "solution.bounding_boxes contains image-relative xMin/xMax/yMin/yMax rectangles. Interpret them as detected regions, not necessarily click instructions; use the target task semantics.",
          "requirements": [
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "body": "Obtain the current challenge media from the target in the field format. For images, preserve original dimensions/order and crop to the challenge, not unrelated page content. For AUDIO, use the actual audio content.",
            "comment": "Use the actual question/instructions from the current challenge. Do not append agent commands such as Return coordinates. This field is semantically necessary for instruction-dependent tasks."
          },
          "resultContract": "DOCUMENTED_FIELDS",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {
              "bounding_boxes": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "xMin": {
                      "type": "integer"
                    },
                    "xMax": {
                      "type": "integer"
                    },
                    "yMin": {
                      "type": "integer"
                    },
                    "yMax": {
                      "type": "integer"
                    }
                  },
                  "additionalProperties": true
                }
              }
            },
            "additionalProperties": true
          }
        }
      },
      "Adapter_SLIDER_CAPTCHA": {
        "type": "object",
        "description": "SLIDER_CAPTCHA input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "body": {
            "type": "string",
            "description": "Base64 JPEG, PNG or GIF of the current custom slider challenge; a data URI is accepted upstream. Preserve original pixels. Upstream limits: 600 kB decoded, at most 1000 pixels on either side. This is not a GeeTest, DataDome or other vendor token-solving contract.",
            "x-description-key": "integration.slider.body",
            "minLength": 1
          },
          "comment": {
            "type": "string",
            "description": "Optional worker instruction describing the exact point to click, for example the center of the matching target slot. If omitted, the image must contain sufficient instructions. For a custom test, provide explicit English instructions and a known point. Returned coordinates are relative to this image.",
            "x-description-key": "integration.slider.comment"
          }
        },
        "required": [
          "body"
        ],
        "additionalProperties": false,
        "x-provider-task-type": "CoordinatesTask",
        "x-solution-example-verified": false,
        "x-solution-example": {
          "coordinates": [
            {
              "x": 240,
              "y": 100
            }
          ]
        },
        "x-integration": {
          "workflows": [],
          "readiness": "DOCUMENTATION_REQUIRED",
          "resultKind": "IMAGE_COORDINATES",
          "resultGuide": "Returns solution.coordinates: an ordered array of pixel points {x, y} in the original submitted image. These are target points, not a token, drag distance or mouse path. The caller identifies the slider start/anchor and maps the points to its own page. Mapping uses the official CoordinatesTask contract; this product remains not ready until a live slider test is verified.",
          "requirements": [
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "body": "Base64 JPEG, PNG or GIF of the current custom slider challenge; a data URI is accepted upstream. Preserve original pixels. Upstream limits: 600 kB decoded, at most 1000 pixels on either side. This is not a GeeTest, DataDome or other vendor token-solving contract.",
            "comment": "Optional worker instruction describing the exact point to click, for example the center of the matching target slot. If omitted, the image must contain sufficient instructions. For a custom test, provide explicit English instructions and a known point. Returned coordinates are relative to this image."
          },
          "resultContract": "DOCUMENTED_FIELDS",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "required": [
              "coordinates"
            ],
            "properties": {
              "coordinates": {
                "type": "array",
                "minItems": 1,
                "items": {
                  "type": "object",
                  "required": [
                    "x",
                    "y"
                  ],
                  "properties": {
                    "x": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "y": {
                      "type": "integer",
                      "minimum": 0
                    }
                  },
                  "additionalProperties": true
                }
              }
            },
            "additionalProperties": true
          }
        }
      },
      "Adapter_CYBERSIARA": {
        "type": "object",
        "description": "CYBERSIARA input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "websiteURL": {
            "type": "string",
            "description": "Full URL of the page containing the challenge.",
            "x-description-key": "docs.parameter.websiteURL.bf47bf9e"
          },
          "userAgent": {
            "type": "string",
            "description": "User-Agent of the browser that obtained the challenge.",
            "x-description-key": "docs.parameter.userAgent.1ea0cf18"
          },
          "SlideMasterUrlId": {
            "type": "string",
            "description": "CyberSiARA integration identifier from the page.",
            "x-description-key": "docs.parameter.SlideMasterUrlId.dc255140"
          }
        },
        "required": [
          "websiteURL",
          "SlideMasterUrlId",
          "userAgent"
        ],
        "additionalProperties": false,
        "x-provider-task-type": "CyberSiAraTask",
        "x-solution-example-verified": true,
        "x-solution-example": {
          "token": "EXAMPLE_TOKEN"
        },
        "x-integration": {
          "workflows": [
            "HTTP_SUBMIT",
            "BROWSER_RESULT"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "TOKEN",
          "resultGuide": "Apply solution.token through this product integration, not an unrelated CAPTCHA field. Follow the target integration for submission and preserve any required returned User-Agent. A token alone does not establish target acceptance.",
          "requirements": [
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "websiteURL": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "userAgent": "Read the actual User-Agent used to obtain this challenge; preserve it when the product requires matching.",
            "SlideMasterUrlId": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted."
          },
          "resultContract": "DOCUMENTED_FIELDS",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {
              "token": {
                "type": "string"
              }
            },
            "additionalProperties": true
          }
        }
      },
      "Adapter_MTCAPTCHA": {
        "type": "object",
        "description": "MTCAPTCHA input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "websiteURL": {
            "type": "string",
            "description": "Full URL of the page containing the challenge.",
            "x-description-key": "docs.parameter.websiteURL.bf47bf9e"
          },
          "websiteKey": {
            "type": "string",
            "description": "Public site key from the target page.",
            "x-description-key": "docs.parameter.websiteKey.e0ab88b7"
          }
        },
        "required": [
          "websiteURL",
          "websiteKey"
        ],
        "additionalProperties": false,
        "x-provider-task-type": "MtCaptchaTaskProxyless",
        "x-solution-example-verified": true,
        "x-solution-example": {
          "token": "EXAMPLE_TOKEN"
        },
        "x-integration": {
          "workflows": [
            "HTTP_SUBMIT",
            "BROWSER_RESULT"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "TOKEN",
          "resultGuide": "Apply solution.token through this product integration, not an unrelated CAPTCHA field. Follow the target integration for submission and preserve any required returned User-Agent. A token alone does not establish target acceptance.",
          "requirements": [
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "websiteURL": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "websiteKey": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted."
          },
          "resultContract": "DOCUMENTED_FIELDS",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {
              "token": {
                "type": "string"
              }
            },
            "additionalProperties": true
          }
        }
      },
      "Adapter_DATADOME": {
        "type": "object",
        "description": "DATADOME input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "websiteURL": {
            "type": "string",
            "description": "Full URL of the page containing the challenge.",
            "x-description-key": "docs.parameter.websiteURL.bf47bf9e"
          },
          "captchaUrl": {
            "type": "string",
            "description": "Fresh challenge URL from the current session.",
            "x-description-key": "docs.parameter.captchaUrl.fa5b6c36"
          },
          "userAgent": {
            "type": "string",
            "description": "User-Agent of the browser that obtained the challenge.",
            "x-description-key": "docs.parameter.userAgent.1ea0cf18"
          },
          "proxyType": {
            "type": "string",
            "description": "Proxy protocol, for example http.",
            "x-description-key": "docs.parameter.proxyType.391537f4"
          },
          "proxyAddress": {
            "type": "string",
            "description": "Proxy hostname or IP address.",
            "x-description-key": "docs.parameter.proxyAddress.f8bdca2c"
          },
          "proxyPort": {
            "type": "integer",
            "format": "int32",
            "description": "Proxy port.",
            "x-description-key": "docs.parameter.proxyPort.c3450379"
          },
          "proxyLogin": {
            "type": "string",
            "description": "Proxy username, when authentication is required.",
            "x-description-key": "docs.parameter.proxyLogin.48ef2d87"
          },
          "proxyPassword": {
            "type": "string",
            "description": "Proxy password, when authentication is required.",
            "x-description-key": "docs.parameter.proxyPassword.18ae5ff4"
          }
        },
        "required": [
          "websiteURL",
          "captchaUrl",
          "userAgent",
          "proxyType",
          "proxyAddress",
          "proxyPort"
        ],
        "additionalProperties": false,
        "x-provider-task-type": "DataDomeSliderTask",
        "x-solution-example-verified": true,
        "x-solution-example": {
          "cookie": "EXAMPLE_COOKIE"
        },
        "x-integration": {
          "workflows": [
            "HTTP_SUBMIT",
            "BROWSER_RESULT"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "COOKIES",
          "resultGuide": "Apply solution.cookie only to the matching target domain/session using the required proxy and User-Agent context. A cookie result is not a form token.",
          "requirements": [
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "websiteURL": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "captchaUrl": "Read the fresh value from the current target challenge/session or its documented integration. Do not reuse a sample or a value from another challenge.",
            "userAgent": "Read the actual User-Agent used to obtain this challenge; preserve it when the product requires matching.",
            "proxyType": "Use the caller configured proxy. Supply related proxy fields together and retain the same egress when the target requires IP matching. Never invent proxy credentials.",
            "proxyAddress": "Use the caller configured proxy. Supply related proxy fields together and retain the same egress when the target requires IP matching. Never invent proxy credentials.",
            "proxyPort": "Use the caller configured proxy. Supply related proxy fields together and retain the same egress when the target requires IP matching. Never invent proxy credentials.",
            "proxyLogin": "Use the caller configured proxy. Supply related proxy fields together and retain the same egress when the target requires IP matching. Never invent proxy credentials.",
            "proxyPassword": "Use the caller configured proxy. Supply related proxy fields together and retain the same egress when the target requires IP matching. Never invent proxy credentials."
          },
          "resultContract": "DOCUMENTED_FIELDS",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {
              "cookie": {
                "type": "string"
              }
            },
            "additionalProperties": true
          }
        }
      },
      "Adapter_FRIENDLY_CAPTCHA": {
        "type": "object",
        "description": "FRIENDLY_CAPTCHA input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "websiteURL": {
            "type": "string",
            "description": "Full URL of the page containing the challenge.",
            "x-description-key": "docs.parameter.websiteURL.bf47bf9e"
          },
          "websiteKey": {
            "type": "string",
            "description": "Public site key from the target page.",
            "x-description-key": "docs.parameter.websiteKey.e0ab88b7"
          },
          "version": {
            "type": "string",
            "description": "Captcha protocol version used by the page.",
            "x-description-key": "docs.parameter.version.ee6551c1"
          },
          "moduleScript": {
            "type": "string",
            "description": "Module script from the challenge page.",
            "x-description-key": "docs.parameter.moduleScript.508c2689"
          },
          "nomoduleScript": {
            "type": "string",
            "description": "Non-module script from the challenge page.",
            "x-description-key": "docs.parameter.nomoduleScript.93778b5a"
          }
        },
        "required": [
          "websiteURL",
          "websiteKey"
        ],
        "additionalProperties": false,
        "x-provider-task-type": "FriendlyCaptchaTaskProxyless",
        "x-solution-example-verified": true,
        "x-solution-example": {
          "token": "EXAMPLE_TOKEN"
        },
        "x-integration": {
          "workflows": [
            "HTTP_SUBMIT",
            "BROWSER_RESULT"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "TOKEN",
          "resultGuide": "Apply solution.token through this product integration, not an unrelated CAPTCHA field. Follow the target integration for submission and preserve any required returned User-Agent. A token alone does not establish target acceptance.",
          "requirements": [
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "websiteURL": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "websiteKey": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "version": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "moduleScript": "Read the fresh value from the current target challenge/session or its documented integration. Do not reuse a sample or a value from another challenge.",
            "nomoduleScript": "Read the fresh value from the current target challenge/session or its documented integration. Do not reuse a sample or a value from another challenge."
          },
          "resultContract": "DOCUMENTED_FIELDS",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {
              "token": {
                "type": "string"
              }
            },
            "additionalProperties": true
          }
        }
      },
      "Adapter_CUTCAPTCHA": {
        "type": "object",
        "description": "CUTCAPTCHA input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "websiteURL": {
            "type": "string",
            "description": "Full URL of the page containing the challenge.",
            "x-description-key": "docs.parameter.websiteURL.bf47bf9e"
          },
          "websiteKey": {
            "type": "string",
            "description": "Legacy field retained for request compatibility; ignored upstream. It cannot replace the newly documented required product parameters.",
            "x-description-key": "integration.repair.CUTCAPTCHA.websiteKey",
            "deprecated": true
          },
          "userAgent": {
            "type": "string",
            "description": "Actual browser User-Agent from the matching target session.",
            "x-description-key": "integration.repair.CUTCAPTCHA.userAgent",
            "minLength": 1
          },
          "miseryKey": {
            "type": "string",
            "description": "Value of CUTCAPTCHA_MISERY_KEY from the current target page.",
            "x-description-key": "integration.repair.CUTCAPTCHA.miseryKey",
            "example": "CURRENT_MISERY_KEY",
            "minLength": 1
          },
          "siteApiKey": {
            "type": "string",
            "description": "Public target data-apikey value from the Cutcaptcha iframe or script. Sent upstream as apiKey. This is NOT your Nex Captcha authentication key, which remains in the HTTP header.",
            "x-description-key": "integration.repair.CUTCAPTCHA.siteApiKey",
            "example": "CURRENT_PUBLIC_SITE_API_KEY",
            "minLength": 1
          },
          "proxyType": {
            "type": "string",
            "description": "Proxy protocol: http, socks4 or socks5; use the same actual egress as the target session when bound.",
            "x-description-key": "integration.repair.CUTCAPTCHA.proxyType",
            "minLength": 1,
            "enum": [
              "http",
              "socks4",
              "socks5"
            ]
          },
          "proxyAddress": {
            "type": "string",
            "description": "Reachable proxy hostname or IP without scheme, credentials or port.",
            "x-description-key": "integration.repair.CUTCAPTCHA.proxyAddress",
            "minLength": 1
          },
          "proxyLogin": {
            "type": "string",
            "description": "Optional proxy authentication username. Provide username and password together.",
            "x-description-key": "integration.repair.CUTCAPTCHA.proxyLogin",
            "minLength": 1
          },
          "proxyPassword": {
            "type": "string",
            "description": "Optional password for that same proxy, paired with proxyLogin.",
            "x-description-key": "integration.repair.CUTCAPTCHA.proxyPassword",
            "minLength": 1
          },
          "proxyPort": {
            "type": "integer",
            "description": "Proxy TCP port, integer 1 to 65535.",
            "x-description-key": "integration.repair.CUTCAPTCHA.proxyPort",
            "minimum": 1,
            "maximum": 65535
          }
        },
        "required": [
          "websiteURL",
          "miseryKey",
          "siteApiKey"
        ],
        "additionalProperties": false,
        "x-provider-task-type": "CutCaptchaTaskProxyless",
        "x-solution-example-verified": true,
        "x-solution-example": {
          "token": "EXAMPLE_TOKEN"
        },
        "x-integration": {
          "workflows": [
            "HTTP_SUBMIT",
            "BROWSER_RESULT"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "TOKEN",
          "resultGuide": "Apply solution.token to the target input#cap_token and/or its actual callback. Preserve the matching target session and verify target acceptance separately.",
          "requirements": [
            "The current verified upstream contract is the legacy miseryKey/siteApiKey protocol. A widget loading api.cutcaptcha.net/v1/api.js with only a cc_-prefixed sitekey is a different contract: it does not expose those legacy values, and a real provider probe rejected the new-key request. Report the unsupported version before billing; do not invent miseryKey, copy a documentation sample, or automatically switch to GRID. Legacy v2.cutcaptcha.net availability does not establish availability of the new API.",
            "Supply both miseryKey and siteApiKey; websiteKey alone never supplied this complete contract. Missing inputs are rejected before billing. Proxy parameters are optional and select the caller-proxy task when supplied.",
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "websiteURL": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "websiteKey": "Legacy field retained for request compatibility; ignored upstream. It cannot replace the newly documented required product parameters.",
            "userAgent": "Actual browser User-Agent from the matching target session.",
            "miseryKey": "Value of CUTCAPTCHA_MISERY_KEY from the current target page.",
            "siteApiKey": "Public target data-apikey value from the Cutcaptcha iframe or script. Sent upstream as apiKey. This is NOT your Nex Captcha authentication key, which remains in the HTTP header.",
            "proxyType": "Proxy protocol: http, socks4 or socks5; use the same actual egress as the target session when bound.",
            "proxyAddress": "Reachable proxy hostname or IP without scheme, credentials or port.",
            "proxyLogin": "Optional proxy authentication username. Provide username and password together.",
            "proxyPassword": "Optional password for that same proxy, paired with proxyLogin.",
            "proxyPort": "Proxy TCP port, integer 1 to 65535."
          },
          "resultContract": "DOCUMENTED_FIELDS",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {
              "token": {
                "type": "string"
              }
            },
            "additionalProperties": true
          }
        },
        "allOf": [
          {
            "if": {
              "anyOf": [
                {
                  "required": [
                    "proxyType"
                  ]
                },
                {
                  "required": [
                    "proxyAddress"
                  ]
                },
                {
                  "required": [
                    "proxyPort"
                  ]
                },
                {
                  "required": [
                    "proxyLogin"
                  ]
                },
                {
                  "required": [
                    "proxyPassword"
                  ]
                }
              ]
            },
            "then": {
              "required": [
                "proxyType",
                "proxyAddress",
                "proxyPort"
              ]
            }
          },
          {
            "if": {
              "anyOf": [
                {
                  "required": [
                    "proxyLogin"
                  ]
                },
                {
                  "required": [
                    "proxyPassword"
                  ]
                }
              ]
            },
            "then": {
              "required": [
                "proxyLogin",
                "proxyPassword"
              ]
            }
          },
          {
            "not": {
              "required": [
                "websiteKey"
              ],
              "properties": {
                "websiteKey": {
                  "pattern": "^cc_"
                }
              }
            }
          }
        ]
      },
      "Adapter_ATBCAPTCHA": {
        "type": "object",
        "description": "ATBCAPTCHA input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "websiteURL": {
            "type": "string",
            "description": "Full URL of the page containing the challenge.",
            "x-description-key": "docs.parameter.websiteURL.bf47bf9e"
          },
          "websiteKey": {
            "type": "string",
            "description": "Legacy field retained for request compatibility; ignored upstream. It cannot replace the newly documented required product parameters.",
            "x-description-key": "integration.repair.ATBCAPTCHA.websiteKey",
            "deprecated": true
          },
          "userAgent": {
            "type": "string",
            "description": "Actual browser User-Agent from the matching target session.",
            "x-description-key": "integration.repair.ATBCAPTCHA.userAgent",
            "minLength": 1
          },
          "appId": {
            "type": "string",
            "description": "Actual appId from the target atbCAPTCHA initialization.",
            "x-description-key": "integration.repair.ATBCAPTCHA.appId",
            "example": "CURRENT_APP_ID",
            "minLength": 1
          },
          "apiServer": {
            "type": "string",
            "description": "Actual apiServer from the same target widget configuration; supply it explicitly for API v2.",
            "x-description-key": "integration.repair.ATBCAPTCHA.apiServer",
            "example": "https://captcha-api.example.com",
            "minLength": 1
          },
          "proxyType": {
            "type": "string",
            "description": "Proxy protocol: http, socks4 or socks5; use the same actual egress as the target session when bound.",
            "x-description-key": "integration.repair.ATBCAPTCHA.proxyType",
            "minLength": 1,
            "enum": [
              "http",
              "socks4",
              "socks5"
            ]
          },
          "proxyAddress": {
            "type": "string",
            "description": "Reachable proxy hostname or IP without scheme, credentials or port.",
            "x-description-key": "integration.repair.ATBCAPTCHA.proxyAddress",
            "minLength": 1
          },
          "proxyLogin": {
            "type": "string",
            "description": "Optional proxy authentication username. Provide username and password together.",
            "x-description-key": "integration.repair.ATBCAPTCHA.proxyLogin",
            "minLength": 1
          },
          "proxyPassword": {
            "type": "string",
            "description": "Optional password for that same proxy, paired with proxyLogin.",
            "x-description-key": "integration.repair.ATBCAPTCHA.proxyPassword",
            "minLength": 1
          },
          "proxyPort": {
            "type": "integer",
            "description": "Proxy TCP port, integer 1 to 65535.",
            "x-description-key": "integration.repair.ATBCAPTCHA.proxyPort",
            "minimum": 1,
            "maximum": 65535
          }
        },
        "required": [
          "websiteURL",
          "appId",
          "apiServer"
        ],
        "additionalProperties": false,
        "x-provider-task-type": "AtbCaptchaTaskProxyless",
        "x-solution-example-verified": true,
        "x-solution-example": {
          "token": "EXAMPLE_TOKEN"
        },
        "x-integration": {
          "workflows": [
            "HTTP_SUBMIT",
            "BROWSER_RESULT"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "TOKEN",
          "resultGuide": "A usable solution.token must be a non-empty native proof. The vendor documents sl-prefixed values as network-error fallback tokens; Nex Captcha settles those or a missing token as FAILED and refunds the customer precharge, while retaining any recorded upstream cost. Do not treat a worker ready response or a front-end fallback callback as target verification. Use the matching target verification backend; check proxy/API-origin reachability before any new paid attempt.",
          "requirements": [
            "Use websiteURL, appId and apiServer from the same target integration. A legacy websiteKey is not guessed into appId or apiServer. Complete proxy fields are optional; apply the returned token using the real target integration.",
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "websiteURL": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "websiteKey": "Legacy field retained for request compatibility; ignored upstream. It cannot replace the newly documented required product parameters.",
            "userAgent": "Actual browser User-Agent from the matching target session.",
            "appId": "Actual appId from the target atbCAPTCHA initialization.",
            "apiServer": "Actual apiServer from the same target widget configuration; supply it explicitly for API v2.",
            "proxyType": "Proxy protocol: http, socks4 or socks5; use the same actual egress as the target session when bound.",
            "proxyAddress": "Reachable proxy hostname or IP without scheme, credentials or port.",
            "proxyLogin": "Optional proxy authentication username. Provide username and password together.",
            "proxyPassword": "Optional password for that same proxy, paired with proxyLogin.",
            "proxyPort": "Proxy TCP port, integer 1 to 65535."
          },
          "resultContract": "DOCUMENTED_FIELDS",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {
              "token": {
                "type": "string"
              }
            },
            "additionalProperties": true
          }
        },
        "allOf": [
          {
            "if": {
              "anyOf": [
                {
                  "required": [
                    "proxyType"
                  ]
                },
                {
                  "required": [
                    "proxyAddress"
                  ]
                },
                {
                  "required": [
                    "proxyPort"
                  ]
                },
                {
                  "required": [
                    "proxyLogin"
                  ]
                },
                {
                  "required": [
                    "proxyPassword"
                  ]
                }
              ]
            },
            "then": {
              "required": [
                "proxyType",
                "proxyAddress",
                "proxyPort"
              ]
            }
          },
          {
            "if": {
              "anyOf": [
                {
                  "required": [
                    "proxyLogin"
                  ]
                },
                {
                  "required": [
                    "proxyPassword"
                  ]
                }
              ]
            },
            "then": {
              "required": [
                "proxyLogin",
                "proxyPassword"
              ]
            }
          }
        ]
      },
      "Adapter_TENCENT": {
        "type": "object",
        "description": "TENCENT input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "websiteURL": {
            "type": "string",
            "description": "Full URL of the page containing the challenge.",
            "x-description-key": "docs.parameter.websiteURL.bf47bf9e"
          },
          "appId": {
            "type": "string",
            "description": "Application identifier from the target integration.",
            "x-description-key": "docs.parameter.appId.941a04d8"
          },
          "captchaScript": {
            "type": "string",
            "description": "Challenge script from the current page.",
            "x-description-key": "docs.parameter.captchaScript.1f9c82c2"
          },
          "proxyType": {
            "type": "string",
            "description": "Proxy protocol, for example http.",
            "x-description-key": "docs.parameter.proxyType.391537f4"
          },
          "proxyAddress": {
            "type": "string",
            "description": "Proxy hostname or IP address.",
            "x-description-key": "docs.parameter.proxyAddress.f8bdca2c"
          },
          "proxyPort": {
            "type": "integer",
            "format": "int32",
            "description": "Proxy port.",
            "x-description-key": "docs.parameter.proxyPort.c3450379"
          },
          "proxyLogin": {
            "type": "string",
            "description": "Proxy username, when authentication is required.",
            "x-description-key": "docs.parameter.proxyLogin.48ef2d87"
          },
          "proxyPassword": {
            "type": "string",
            "description": "Proxy password, when authentication is required.",
            "x-description-key": "docs.parameter.proxyPassword.18ae5ff4"
          }
        },
        "required": [
          "websiteURL",
          "appId"
        ],
        "additionalProperties": false,
        "x-provider-task-type": "TencentTaskProxyless",
        "x-solution-example-verified": true,
        "x-solution-example": {
          "appid": "EXAMPLE_APPID",
          "ret": 0,
          "ticket": "EXAMPLE_TICKET",
          "randstr": "EXAMPLE_RANDSTR"
        },
        "x-integration": {
          "workflows": [
            "HTTP_SUBMIT",
            "BROWSER_RESULT"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "STRUCTURED_PROOF",
          "resultGuide": "Use the returned ticket and randstr together, with appid/ret where required, through the target Tencent verification integration.",
          "requirements": [
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "websiteURL": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "appId": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "captchaScript": "Read the fresh value from the current target challenge/session or its documented integration. Do not reuse a sample or a value from another challenge.",
            "proxyType": "Use the caller configured proxy. Supply related proxy fields together and retain the same egress when the target requires IP matching. Never invent proxy credentials.",
            "proxyAddress": "Use the caller configured proxy. Supply related proxy fields together and retain the same egress when the target requires IP matching. Never invent proxy credentials.",
            "proxyPort": "Use the caller configured proxy. Supply related proxy fields together and retain the same egress when the target requires IP matching. Never invent proxy credentials.",
            "proxyLogin": "Use the caller configured proxy. Supply related proxy fields together and retain the same egress when the target requires IP matching. Never invent proxy credentials.",
            "proxyPassword": "Use the caller configured proxy. Supply related proxy fields together and retain the same egress when the target requires IP matching. Never invent proxy credentials."
          },
          "resultContract": "DOCUMENTED_FIELDS",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {
              "appid": {
                "type": "string"
              },
              "ret": {
                "type": "integer"
              },
              "ticket": {
                "type": "string"
              },
              "randstr": {
                "type": "string"
              }
            },
            "additionalProperties": true
          }
        }
      },
      "Adapter_PROSOPO": {
        "type": "object",
        "description": "PROSOPO input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "websiteURL": {
            "type": "string",
            "description": "Full URL of the page containing the challenge.",
            "x-description-key": "docs.parameter.websiteURL.bf47bf9e"
          },
          "websiteKey": {
            "type": "string",
            "description": "Public site key from the target page.",
            "x-description-key": "docs.parameter.websiteKey.e0ab88b7"
          },
          "userAgent": {
            "type": "string",
            "description": "User-Agent of the browser that obtained the challenge.",
            "x-description-key": "docs.parameter.userAgent.1ea0cf18"
          }
        },
        "required": [
          "websiteURL",
          "websiteKey"
        ],
        "additionalProperties": false,
        "x-provider-task-type": "ProsopoTaskProxyless",
        "x-solution-example-verified": true,
        "x-solution-example": {
          "token": "EXAMPLE_TOKEN"
        },
        "x-integration": {
          "workflows": [
            "HTTP_SUBMIT",
            "BROWSER_RESULT"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "TOKEN",
          "resultGuide": "Apply solution.token through this product integration, not an unrelated CAPTCHA field. Follow the target integration for submission and preserve any required returned User-Agent. A token alone does not establish target acceptance.",
          "requirements": [
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "websiteURL": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "websiteKey": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "userAgent": "Read the actual User-Agent used to obtain this challenge; preserve it when the product requires matching."
          },
          "resultContract": "DOCUMENTED_FIELDS",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {
              "token": {
                "type": "string"
              }
            },
            "additionalProperties": true
          }
        }
      },
      "Adapter_CAPTCHAFOX": {
        "type": "object",
        "description": "CAPTCHAFOX input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "websiteURL": {
            "type": "string",
            "description": "Full URL of the page containing the challenge.",
            "x-description-key": "docs.parameter.websiteURL.bf47bf9e"
          },
          "websiteKey": {
            "type": "string",
            "description": "Public site key from the target page.",
            "x-description-key": "docs.parameter.websiteKey.e0ab88b7"
          },
          "userAgent": {
            "type": "string",
            "description": "Actual browser User-Agent from the matching target session.",
            "x-description-key": "integration.repair.CAPTCHAFOX.userAgent",
            "minLength": 1
          },
          "proxyType": {
            "type": "string",
            "description": "Proxy protocol: http, socks4 or socks5; use the same actual egress as the target session when bound.",
            "x-description-key": "integration.repair.CAPTCHAFOX.proxyType",
            "minLength": 1,
            "enum": [
              "http",
              "socks4",
              "socks5"
            ]
          },
          "proxyAddress": {
            "type": "string",
            "description": "Reachable proxy hostname or IP without scheme, credentials or port.",
            "x-description-key": "integration.repair.CAPTCHAFOX.proxyAddress",
            "minLength": 1
          },
          "proxyLogin": {
            "type": "string",
            "description": "Optional proxy authentication username. Provide username and password together.",
            "x-description-key": "integration.repair.CAPTCHAFOX.proxyLogin",
            "minLength": 1
          },
          "proxyPassword": {
            "type": "string",
            "description": "Optional password for that same proxy, paired with proxyLogin.",
            "x-description-key": "integration.repair.CAPTCHAFOX.proxyPassword",
            "minLength": 1
          },
          "proxyPort": {
            "type": "integer",
            "description": "Proxy TCP port, integer 1 to 65535.",
            "x-description-key": "integration.repair.CAPTCHAFOX.proxyPort",
            "minimum": 1,
            "maximum": 65535
          },
          "apiServer": {
            "type": "string",
            "description": "Optional SDK resource prefix from the script actually loaded by the target. Standard SDK: https://cdn.captchafox.com/ ; MAM SDK: https://s.uicdn.com/mampkg/@mamdev/core.frontend.libs.captchafox/ . This is not the api.captchafox.com challenge/config HTTP API origin. MAM and standard tokens are not interchangeable.",
            "x-description-key": "integration.followup.CAPTCHAFOX.apiServer",
            "example": "https://cdn.captchafox.com/",
            "minLength": 1
          }
        },
        "required": [
          "websiteURL",
          "websiteKey",
          "userAgent",
          "proxyType",
          "proxyAddress",
          "proxyPort"
        ],
        "additionalProperties": false,
        "x-provider-task-type": "CaptchaFoxTask",
        "x-solution-example-verified": true,
        "x-solution-example": {
          "token": "EXAMPLE_TOKEN"
        },
        "x-integration": {
          "workflows": [
            "HTTP_SUBMIT",
            "BROWSER_RESULT"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "TOKEN",
          "resultGuide": "Apply solution.token through this product integration, not an unrelated CAPTCHA field. Follow the target integration for submission and preserve any required returned User-Agent. A token alone does not establish target acceptance.",
          "requirements": [
            "A current websiteKey, actual browser userAgent and complete working proxy are mandatory. Use the same actual exit identity required by the target. An optional apiServer selects the target variant; do not interchange ordinary and MAM tokens.",
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "websiteURL": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "websiteKey": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "userAgent": "Actual browser User-Agent from the matching target session.",
            "proxyType": "Proxy protocol: http, socks4 or socks5; use the same actual egress as the target session when bound.",
            "proxyAddress": "Reachable proxy hostname or IP without scheme, credentials or port.",
            "proxyLogin": "Optional proxy authentication username. Provide username and password together.",
            "proxyPassword": "Optional password for that same proxy, paired with proxyLogin.",
            "proxyPort": "Proxy TCP port, integer 1 to 65535.",
            "apiServer": "Optional SDK resource prefix from the script actually loaded by the target. Standard SDK: https://cdn.captchafox.com/ ; MAM SDK: https://s.uicdn.com/mampkg/@mamdev/core.frontend.libs.captchafox/ . This is not the api.captchafox.com challenge/config HTTP API origin. MAM and standard tokens are not interchangeable."
          },
          "resultContract": "DOCUMENTED_FIELDS",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {
              "token": {
                "type": "string"
              }
            },
            "additionalProperties": true
          }
        },
        "allOf": [
          {
            "if": {
              "anyOf": [
                {
                  "required": [
                    "proxyType"
                  ]
                },
                {
                  "required": [
                    "proxyAddress"
                  ]
                },
                {
                  "required": [
                    "proxyPort"
                  ]
                },
                {
                  "required": [
                    "proxyLogin"
                  ]
                },
                {
                  "required": [
                    "proxyPassword"
                  ]
                }
              ]
            },
            "then": {
              "required": [
                "proxyType",
                "proxyAddress",
                "proxyPort"
              ]
            }
          },
          {
            "if": {
              "anyOf": [
                {
                  "required": [
                    "proxyLogin"
                  ]
                },
                {
                  "required": [
                    "proxyPassword"
                  ]
                }
              ]
            },
            "then": {
              "required": [
                "proxyLogin",
                "proxyPassword"
              ]
            }
          }
        ]
      },
      "Adapter_VK_CAPTCHA": {
        "type": "object",
        "description": "VK_CAPTCHA input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "image": {
            "type": "string",
            "x-description-key": "docs.parameter.image.e3b0c442",
            "description": "Base64-encoded challenge image."
          },
          "steps": {
            "description": "Ordered non-empty array of non-negative integers from the same VK captchaNotRobot.getContent response as image. This is not a maximum rotation count or degrees. Preserve the sequence exactly. Legacy strings containing a JSON integer array are accepted and normalized; a scalar such as \"3\" is invalid.",
            "x-description-key": "integration.vk.steps",
            "oneOf": [
              {
                "type": "array",
                "minItems": 1,
                "items": {
                  "type": "integer",
                  "minimum": 0
                }
              },
              {
                "type": "string",
                "pattern": "^\\s*\\[\\s*\\d+(\\s*,\\s*\\d+)*\\s*\\]\\s*$"
              }
            ],
            "example": [
              5,
              19,
              14,
              0
            ]
          },
          "redirectUri": {
            "type": "string",
            "x-description-key": "docs.parameter.redirectUri.e3b0c442",
            "description": "Fresh VK token challenge redirect URL; use instead of image/steps."
          },
          "userAgent": {
            "type": "string",
            "x-description-key": "docs.parameter.userAgent.e3b0c442",
            "description": "User-Agent of the browser that obtained the challenge."
          },
          "proxyType": {
            "type": "string",
            "x-description-key": "docs.parameter.proxyType.e3b0c442",
            "description": "Proxy protocol, for example http."
          },
          "proxyAddress": {
            "type": "string",
            "x-description-key": "docs.parameter.proxyAddress.e3b0c442",
            "description": "Proxy hostname or IP address."
          },
          "proxyPort": {
            "type": "integer",
            "x-description-key": "docs.parameter.proxyPort.e3b0c442",
            "description": "Proxy port."
          },
          "proxyLogin": {
            "type": "string",
            "x-description-key": "docs.parameter.proxyLogin.e3b0c442",
            "description": "Proxy username, when authentication is required."
          },
          "proxyPassword": {
            "type": "string",
            "x-description-key": "docs.parameter.proxyPassword.e3b0c442",
            "description": "Proxy password, when authentication is required."
          }
        },
        "additionalProperties": false,
        "x-provider-task-type": "VKCaptchaTask",
        "x-solution-example-verified": false,
        "x-solution-example": {
          "best_step": 2,
          "solution": [
            5,
            19
          ],
          "answer": "EXAMPLE_VK_FORMATTED_ANSWER",
          "preview": "BASE64_PREVIEW"
        },
        "oneOf": [
          {
            "required": [
              "image",
              "steps"
            ],
            "not": {
              "required": [
                "redirectUri"
              ]
            }
          },
          {
            "required": [
              "redirectUri",
              "userAgent",
              "proxyType",
              "proxyAddress",
              "proxyPort"
            ],
            "not": {
              "anyOf": [
                {
                  "required": [
                    "image"
                  ]
                },
                {
                  "required": [
                    "steps"
                  ]
                }
              ]
            }
          }
        ],
        "x-integration": {
          "workflows": [
            "HTTP_SUBMIT",
            "BROWSER_INTERACTION",
            "BROWSER_RESULT"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "MODE_SPECIFIC",
          "resultGuide": "Two native modes: image+steps selects the image task, returning best_step, ordered solution, answer and preview; redirectUri+userAgent+proxy selects the token task, returning solution.token. Keep modes separate. best_step is a count, not degrees; use the image answer in the VK API format or the token in its matching target session. Do not assume both modes have identical results.",
          "requirements": [
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "image": "Obtain the current challenge media from the target in the field format. For images, preserve original dimensions/order and crop to the challenge, not unrelated page content. For AUDIO, use the actual audio content.",
            "steps": "Ordered non-empty array of non-negative integers from the same VK captchaNotRobot.getContent response as image. This is not a maximum rotation count or degrees. Preserve the sequence exactly. Legacy strings containing a JSON integer array are accepted and normalized; a scalar such as \"3\" is invalid.",
            "redirectUri": "Read the fresh value from the current target challenge/session or its documented integration. Do not reuse a sample or a value from another challenge.",
            "userAgent": "Read the actual User-Agent used to obtain this challenge; preserve it when the product requires matching.",
            "proxyType": "Use the caller configured proxy. Supply related proxy fields together and retain the same egress when the target requires IP matching. Never invent proxy credentials.",
            "proxyAddress": "Use the caller configured proxy. Supply related proxy fields together and retain the same egress when the target requires IP matching. Never invent proxy credentials.",
            "proxyPort": "Use the caller configured proxy. Supply related proxy fields together and retain the same egress when the target requires IP matching. Never invent proxy credentials.",
            "proxyLogin": "Use the caller configured proxy. Supply related proxy fields together and retain the same egress when the target requires IP matching. Never invent proxy credentials.",
            "proxyPassword": "Use the caller configured proxy. Supply related proxy fields together and retain the same egress when the target requires IP matching. Never invent proxy credentials."
          },
          "resultContract": "MODE_SPECIFIC",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {
              "token": {
                "type": "string"
              },
              "best_step": {
                "type": "integer"
              },
              "solution": {
                "type": "array",
                "items": {
                  "type": "integer"
                }
              },
              "answer": {
                "type": "string"
              },
              "preview": {
                "type": "string"
              }
            },
            "anyOf": [
              {
                "required": [
                  "token"
                ]
              },
              {
                "required": [
                  "best_step",
                  "solution",
                  "answer"
                ]
              }
            ],
            "additionalProperties": true
          },
          "modes": [
            {
              "id": "IMAGE",
              "required": [
                "image",
                "steps"
              ],
              "resultKind": "STRUCTURED_PROOF"
            },
            {
              "id": "TOKEN",
              "required": [
                "redirectUri",
                "userAgent",
                "proxyType",
                "proxyAddress",
                "proxyPort"
              ],
              "resultKind": "TOKEN"
            }
          ]
        }
      },
      "Adapter_TEMU": {
        "type": "object",
        "description": "TEMU input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "image": {
            "type": "string",
            "description": "Base64-encoded challenge image.",
            "x-description-key": "docs.parameter.image.201eea51"
          },
          "parts": {
            "type": "array",
            "minItems": 1,
            "items": {
              "type": "string"
            },
            "description": "Array of Base64-encoded movable pieces, in response coordinate order.",
            "x-description-key": "docs.parameter.parts.c061ccf6"
          }
        },
        "required": [
          "image",
          "parts"
        ],
        "additionalProperties": false,
        "x-provider-task-type": "TemuImageTask",
        "x-solution-example-verified": true,
        "x-solution-example": {
          "coordinates": [
            {
              "x": 20,
              "y": 30
            },
            {
              "x": 50,
              "y": 60
            },
            {
              "x": 80,
              "y": 90
            }
          ]
        },
        "x-integration": {
          "workflows": [
            "BROWSER_INTERACTION"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "DRAG_TARGETS",
          "resultGuide": "Match returned coordinates to the submitted movable images/parts in their original order and map to the background image. Confirm the target drag convention; do not interpret them as arbitrary click points.",
          "requirements": [
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "image": "Obtain the current challenge media from the target in the field format. For images, preserve original dimensions/order and crop to the challenge, not unrelated page content. For AUDIO, use the actual audio content.",
            "parts": "Obtain the current challenge media from the target in the field format. For images, preserve original dimensions/order and crop to the challenge, not unrelated page content. For AUDIO, use the actual audio content."
          },
          "resultContract": "DOCUMENTED_FIELDS",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {
              "coordinates": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "x": {
                      "type": "integer"
                    },
                    "y": {
                      "type": "integer"
                    }
                  },
                  "additionalProperties": true
                }
              }
            },
            "additionalProperties": true
          }
        }
      },
      "Adapter_ALTCHA": {
        "type": "object",
        "description": "ALTCHA input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "websiteURL": {
            "type": "string",
            "description": "Full URL of the page containing the challenge.",
            "x-description-key": "docs.parameter.websiteURL.bf47bf9e"
          },
          "challengeURL": {
            "type": "string",
            "description": "URL returning the current ALTCHA challenge.",
            "x-description-key": "docs.parameter.challengeURL.0101559e"
          },
          "challengeJSON": {
            "type": "string",
            "description": "Serialized ALTCHA challenge JSON; use instead of challengeURL.",
            "x-description-key": "docs.parameter.challengeJSON.a5e4802a"
          },
          "proxyType": {
            "type": "string",
            "description": "Proxy protocol, for example http.",
            "x-description-key": "docs.parameter.proxyType.6d9fb546"
          },
          "proxyAddress": {
            "type": "string",
            "description": "Proxy hostname or IP address.",
            "x-description-key": "docs.parameter.proxyAddress.df6eede9"
          },
          "proxyPort": {
            "type": "integer",
            "format": "int32",
            "description": "Proxy port.",
            "x-description-key": "docs.parameter.proxyPort.894c263f"
          },
          "proxyLogin": {
            "type": "string",
            "description": "Proxy username, when authentication is required.",
            "x-description-key": "docs.parameter.proxyLogin.48ef2d87"
          },
          "proxyPassword": {
            "type": "string",
            "description": "Proxy password, when authentication is required.",
            "x-description-key": "docs.parameter.proxyPassword.18ae5ff4"
          }
        },
        "required": [
          "websiteURL"
        ],
        "additionalProperties": false,
        "x-provider-task-type": "AltchaTask",
        "oneOf": [
          {
            "required": [
              "challengeURL"
            ]
          },
          {
            "required": [
              "challengeJSON"
            ]
          }
        ],
        "x-solution-example-verified": true,
        "x-solution-example": {
          "token": "EXAMPLE_TOKEN"
        },
        "x-integration": {
          "workflows": [
            "HTTP_SUBMIT",
            "BROWSER_RESULT"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "TOKEN",
          "resultGuide": "Apply solution.token through this product integration, not an unrelated CAPTCHA field. Follow the target integration for submission and preserve any required returned User-Agent. A token alone does not establish target acceptance.",
          "requirements": [
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "websiteURL": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "challengeURL": "Read the fresh value from the current target challenge/session or its documented integration. Do not reuse a sample or a value from another challenge.",
            "challengeJSON": "Read the fresh value from the current target challenge/session or its documented integration. Do not reuse a sample or a value from another challenge.",
            "proxyType": "Use the caller configured proxy. Supply related proxy fields together and retain the same egress when the target requires IP matching. Never invent proxy credentials.",
            "proxyAddress": "Use the caller configured proxy. Supply related proxy fields together and retain the same egress when the target requires IP matching. Never invent proxy credentials.",
            "proxyPort": "Use the caller configured proxy. Supply related proxy fields together and retain the same egress when the target requires IP matching. Never invent proxy credentials.",
            "proxyLogin": "Use the caller configured proxy. Supply related proxy fields together and retain the same egress when the target requires IP matching. Never invent proxy credentials.",
            "proxyPassword": "Use the caller configured proxy. Supply related proxy fields together and retain the same egress when the target requires IP matching. Never invent proxy credentials."
          },
          "resultContract": "DOCUMENTED_FIELDS",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {
              "token": {
                "type": "string"
              }
            },
            "additionalProperties": true
          }
        }
      },
      "Adapter_YIDUN_NE_CAPTCHA": {
        "type": "object",
        "description": "YIDUN_NE_CAPTCHA input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "websiteURL": {
            "type": "string",
            "description": "Full URL of the page containing the challenge.",
            "x-description-key": "docs.parameter.websiteURL.bf47bf9e"
          },
          "websiteKey": {
            "type": "string",
            "description": "Public site key from the target page.",
            "x-description-key": "docs.parameter.websiteKey.e0ab88b7"
          },
          "userAgent": {
            "type": "string",
            "description": "Actual browser User-Agent from the matching target session.",
            "x-description-key": "integration.repair.YIDUN_NE_CAPTCHA.userAgent",
            "minLength": 1
          },
          "yidunGetLib": {
            "type": "string",
            "description": "Actual yidunGetLib from the matching current Yidun initialization/network context; omit when unused by that target.",
            "x-description-key": "integration.repair.YIDUN_NE_CAPTCHA.yidunGetLib",
            "minLength": 1
          },
          "yidunApiServerSubdomain": {
            "type": "string",
            "description": "Actual yidunApiServerSubdomain from the matching current Yidun initialization/network context; omit when unused by that target.",
            "x-description-key": "integration.repair.YIDUN_NE_CAPTCHA.yidunApiServerSubdomain",
            "minLength": 1
          },
          "challenge": {
            "type": "string",
            "description": "Actual challenge from the matching current Yidun initialization/network context; omit when unused by that target.",
            "x-description-key": "integration.repair.YIDUN_NE_CAPTCHA.challenge",
            "minLength": 1
          },
          "hcg": {
            "type": "string",
            "description": "Actual hcg from the matching current Yidun initialization/network context; omit when unused by that target.",
            "x-description-key": "integration.repair.YIDUN_NE_CAPTCHA.hcg",
            "minLength": 1
          },
          "hct": {
            "type": "integer",
            "description": "Numeric Enterprise timestamp identifier from the same target request; not a string or your local clock.",
            "x-description-key": "integration.repair.YIDUN_NE_CAPTCHA.hct",
            "minimum": 0,
            "example": 1779358333191
          },
          "proxyType": {
            "type": "string",
            "description": "Proxy protocol: http, socks4 or socks5; use the same actual egress as the target session when bound.",
            "x-description-key": "integration.repair.YIDUN_NE_CAPTCHA.proxyType",
            "minLength": 1,
            "enum": [
              "http",
              "socks4",
              "socks5"
            ]
          },
          "proxyAddress": {
            "type": "string",
            "description": "Reachable proxy hostname or IP without scheme, credentials or port.",
            "x-description-key": "integration.repair.YIDUN_NE_CAPTCHA.proxyAddress",
            "minLength": 1
          },
          "proxyLogin": {
            "type": "string",
            "description": "Optional proxy authentication username. Provide username and password together.",
            "x-description-key": "integration.repair.YIDUN_NE_CAPTCHA.proxyLogin",
            "minLength": 1
          },
          "proxyPassword": {
            "type": "string",
            "description": "Optional password for that same proxy, paired with proxyLogin.",
            "x-description-key": "integration.repair.YIDUN_NE_CAPTCHA.proxyPassword",
            "minLength": 1
          },
          "proxyPort": {
            "type": "integer",
            "description": "Proxy TCP port, integer 1 to 65535.",
            "x-description-key": "integration.repair.YIDUN_NE_CAPTCHA.proxyPort",
            "minimum": 1,
            "maximum": 65535
          }
        },
        "required": [
          "websiteURL",
          "websiteKey"
        ],
        "additionalProperties": false,
        "x-provider-task-type": "YidunTaskProxyless",
        "x-solution-example-verified": true,
        "x-solution-example": {
          "token": "EXAMPLE_TOKEN"
        },
        "x-integration": {
          "workflows": [
            "HTTP_SUBMIT",
            "BROWSER_RESULT"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "TOKEN",
          "resultGuide": "Apply solution.token through this product integration, not an unrelated CAPTCHA field. Follow the target integration for submission and preserve any required returned User-Agent. A token alone does not establish target acceptance.",
          "requirements": [
            "Keep websiteURL/websiteKey for existing basic integrations. Where the target uses Enterprise parameters, capture yidunGetLib, yidunApiServerSubdomain, challenge, hcg and numeric hct from that current flow rather than inventing them. Custom server subdomains exclude the https:// prefix.",
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "websiteURL": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "websiteKey": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "userAgent": "Actual browser User-Agent from the matching target session.",
            "yidunGetLib": "Actual yidunGetLib from the matching current Yidun initialization/network context; omit when unused by that target.",
            "yidunApiServerSubdomain": "Actual yidunApiServerSubdomain from the matching current Yidun initialization/network context; omit when unused by that target.",
            "challenge": "Actual challenge from the matching current Yidun initialization/network context; omit when unused by that target.",
            "hcg": "Actual hcg from the matching current Yidun initialization/network context; omit when unused by that target.",
            "hct": "Numeric Enterprise timestamp identifier from the same target request; not a string or your local clock.",
            "proxyType": "Proxy protocol: http, socks4 or socks5; use the same actual egress as the target session when bound.",
            "proxyAddress": "Reachable proxy hostname or IP without scheme, credentials or port.",
            "proxyLogin": "Optional proxy authentication username. Provide username and password together.",
            "proxyPassword": "Optional password for that same proxy, paired with proxyLogin.",
            "proxyPort": "Proxy TCP port, integer 1 to 65535."
          },
          "resultContract": "DOCUMENTED_FIELDS",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {
              "token": {
                "type": "string"
              }
            },
            "additionalProperties": true
          }
        },
        "allOf": [
          {
            "if": {
              "anyOf": [
                {
                  "required": [
                    "proxyType"
                  ]
                },
                {
                  "required": [
                    "proxyAddress"
                  ]
                },
                {
                  "required": [
                    "proxyPort"
                  ]
                },
                {
                  "required": [
                    "proxyLogin"
                  ]
                },
                {
                  "required": [
                    "proxyPassword"
                  ]
                }
              ]
            },
            "then": {
              "required": [
                "proxyType",
                "proxyAddress",
                "proxyPort"
              ]
            }
          },
          {
            "if": {
              "anyOf": [
                {
                  "required": [
                    "proxyLogin"
                  ]
                },
                {
                  "required": [
                    "proxyPassword"
                  ]
                }
              ]
            },
            "then": {
              "required": [
                "proxyLogin",
                "proxyPassword"
              ]
            }
          }
        ]
      },
      "Adapter_BINANCE": {
        "type": "object",
        "description": "BINANCE input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "websiteURL": {
            "type": "string",
            "description": "Full URL of the page containing the challenge.",
            "x-description-key": "docs.parameter.websiteURL.bf47bf9e"
          },
          "websiteKey": {
            "type": "string",
            "description": "The current native Binance captcha bizId/bizType/bizCode (for example login), paired with the same validateId. It is not a Google reCAPTCHA or hCaptcha public key. Check the actual precheck captchaType before selecting this product; a Binance page may present another provider.",
            "x-description-key": "integration.repair.BINANCE.websiteKey",
            "example": "login",
            "minLength": 1
          },
          "userAgent": {
            "type": "string",
            "description": "Actual browser User-Agent from the matching target session.",
            "x-description-key": "integration.repair.BINANCE.userAgent",
            "minLength": 1
          },
          "validateId": {
            "type": "string",
            "description": "Fresh validateId/securityId/securityCheckResponseValidateId from the same current target precheck or captcha response. Do not reuse another session or a stale value.",
            "x-description-key": "integration.repair.BINANCE.validateId",
            "example": "CURRENT_VALIDATE_ID",
            "minLength": 1
          },
          "proxyType": {
            "type": "string",
            "description": "Proxy protocol: http, socks4 or socks5; use the same actual egress as the target session when bound.",
            "x-description-key": "integration.repair.BINANCE.proxyType",
            "minLength": 1,
            "enum": [
              "http",
              "socks4",
              "socks5"
            ]
          },
          "proxyAddress": {
            "type": "string",
            "description": "Reachable proxy hostname or IP without scheme, credentials or port.",
            "x-description-key": "integration.repair.BINANCE.proxyAddress",
            "minLength": 1
          },
          "proxyLogin": {
            "type": "string",
            "description": "Optional proxy authentication username. Provide username and password together.",
            "x-description-key": "integration.repair.BINANCE.proxyLogin",
            "minLength": 1
          },
          "proxyPassword": {
            "type": "string",
            "description": "Optional password for that same proxy, paired with proxyLogin.",
            "x-description-key": "integration.repair.BINANCE.proxyPassword",
            "minLength": 1
          },
          "proxyPort": {
            "type": "integer",
            "description": "Proxy TCP port, integer 1 to 65535.",
            "x-description-key": "integration.repair.BINANCE.proxyPort",
            "minimum": 1,
            "maximum": 65535
          }
        },
        "required": [
          "websiteURL",
          "websiteKey",
          "validateId"
        ],
        "additionalProperties": false,
        "x-provider-task-type": "BinanceTaskProxyless",
        "x-solution-example-verified": true,
        "x-solution-example": {
          "token": "EXAMPLE_TOKEN",
          "userAgent": "EXAMPLE_USERAGENT"
        },
        "x-integration": {
          "workflows": [
            "HTTP_SUBMIT",
            "BROWSER_RESULT"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "TOKEN",
          "resultGuide": "Apply solution.token through this product integration, not an unrelated CAPTCHA field. Follow the target integration for submission and preserve any required returned User-Agent. A token alone does not establish target acceptance.",
          "requirements": [
            "Choose BINANCE only when the current precheck selects a native bCAPTCHA/bCAPTCHA2 challenge and the same session exposes bizId plus validateId. The same Binance URL can select reCAPTCHA instead; use that provider/version contract or report missing context, never force BINANCE just because the website is Binance. Native proxyless type is BinanceTaskProxyless, whose capitalization was verified against the live upstream API despite the spelling in its documentation.",
            "Capture websiteKey and validateId together immediately before creation. Without proxy fields use BinanceTaskProxyless; complete proxy fields select BinanceTask. Missing validation IDs fail before billing; an old websiteKey cannot replace them.",
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "websiteURL": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "websiteKey": "The current native Binance captcha bizId/bizType/bizCode (for example login), paired with the same validateId. It is not a Google reCAPTCHA or hCaptcha public key. Check the actual precheck captchaType before selecting this product; a Binance page may present another provider.",
            "userAgent": "Actual browser User-Agent from the matching target session.",
            "validateId": "Fresh validateId/securityId/securityCheckResponseValidateId from the same current target precheck or captcha response. Do not reuse another session or a stale value.",
            "proxyType": "Proxy protocol: http, socks4 or socks5; use the same actual egress as the target session when bound.",
            "proxyAddress": "Reachable proxy hostname or IP without scheme, credentials or port.",
            "proxyLogin": "Optional proxy authentication username. Provide username and password together.",
            "proxyPassword": "Optional password for that same proxy, paired with proxyLogin.",
            "proxyPort": "Proxy TCP port, integer 1 to 65535."
          },
          "resultContract": "DOCUMENTED_FIELDS",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {
              "token": {
                "type": "string"
              },
              "userAgent": {
                "type": "string"
              }
            },
            "additionalProperties": true
          }
        },
        "allOf": [
          {
            "if": {
              "anyOf": [
                {
                  "required": [
                    "proxyType"
                  ]
                },
                {
                  "required": [
                    "proxyAddress"
                  ]
                },
                {
                  "required": [
                    "proxyPort"
                  ]
                },
                {
                  "required": [
                    "proxyLogin"
                  ]
                },
                {
                  "required": [
                    "proxyPassword"
                  ]
                }
              ]
            },
            "then": {
              "required": [
                "proxyType",
                "proxyAddress",
                "proxyPort"
              ]
            }
          },
          {
            "if": {
              "anyOf": [
                {
                  "required": [
                    "proxyLogin"
                  ]
                },
                {
                  "required": [
                    "proxyPassword"
                  ]
                }
              ]
            },
            "then": {
              "required": [
                "proxyLogin",
                "proxyPassword"
              ]
            }
          }
        ]
      },
      "Adapter_HUNT": {
        "type": "object",
        "description": "HUNT input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "websiteURL": {
            "type": "string",
            "description": "Full URL of the page containing the challenge.",
            "x-description-key": "docs.parameter.websiteURL.bf47bf9e"
          },
          "websiteKey": {
            "type": "string",
            "description": "Legacy field retained for request compatibility; ignored upstream. It cannot replace the newly documented required product parameters.",
            "x-description-key": "integration.repair.HUNT.websiteKey",
            "deprecated": true
          },
          "userAgent": {
            "type": "string",
            "description": "Actual browser User-Agent from the matching target session.",
            "x-description-key": "integration.repair.HUNT.userAgent",
            "minLength": 1
          },
          "apiGetLib": {
            "type": "string",
            "description": "Full fresh URL of the Hunt api.js loaded by the current target page.",
            "x-description-key": "integration.repair.HUNT.apiGetLib",
            "example": "https://example.com/hd-api/external/apps/APP_ID/api.js",
            "minLength": 1
          },
          "data": {
            "type": "string",
            "description": "Second-stage meta.token returned by the target after the request with X-HD; omit for the first-stage fingerprint task.",
            "x-description-key": "integration.repair.HUNT.data",
            "example": "CURRENT_META_TOKEN",
            "minLength": 1
          },
          "proxyType": {
            "type": "string",
            "description": "Proxy protocol: http, socks4 or socks5; use the same actual egress as the target session when bound.",
            "x-description-key": "integration.repair.HUNT.proxyType",
            "minLength": 1,
            "enum": [
              "http",
              "socks4",
              "socks5"
            ]
          },
          "proxyAddress": {
            "type": "string",
            "description": "Reachable proxy hostname or IP without scheme, credentials or port.",
            "x-description-key": "integration.repair.HUNT.proxyAddress",
            "minLength": 1
          },
          "proxyLogin": {
            "type": "string",
            "description": "Optional proxy authentication username. Provide username and password together.",
            "x-description-key": "integration.repair.HUNT.proxyLogin",
            "minLength": 1
          },
          "proxyPassword": {
            "type": "string",
            "description": "Optional password for that same proxy, paired with proxyLogin.",
            "x-description-key": "integration.repair.HUNT.proxyPassword",
            "minLength": 1
          },
          "proxyPort": {
            "type": "integer",
            "description": "Proxy TCP port, integer 1 to 65535.",
            "x-description-key": "integration.repair.HUNT.proxyPort",
            "minimum": 1,
            "maximum": 65535
          }
        },
        "required": [
          "websiteURL",
          "apiGetLib",
          "proxyType",
          "proxyAddress",
          "proxyPort"
        ],
        "additionalProperties": false,
        "x-provider-task-type": "HuntTask",
        "x-solution-example-verified": true,
        "x-solution-example": {
          "token": "EXAMPLE_TOKEN"
        },
        "x-integration": {
          "workflows": [
            "HTTP_SUBMIT",
            "BROWSER_RESULT"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "TOKEN",
          "resultGuide": "Without data, read the fingerprint from solution[\"X-HD\"] (or solution.token when returned in that field) and send it as the target X-HD header. With data=meta.token, solution.token is the second-stage target answer. Raw upstream result fields are preserved. The caller maintains the target session and performs the intervening target request; Nex Captcha does not execute the business operation.",
          "requirements": [
            "HuntTask has two distinct paid modes and requires a caller proxy in API v2. First omit data to obtain X-HD. Send a target request with that X-HD, keeping cookies/IP/User-Agent; read fresh meta.token. Create a second task with data=meta.token, then submit its solution to the target. Never treat first-stage success as challenge acceptance. Each stage is a separate task/requestId and charge; retries of one stage reuse its original requestId.",
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "websiteURL": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "websiteKey": "Legacy field retained for request compatibility; ignored upstream. It cannot replace the newly documented required product parameters.",
            "userAgent": "Actual browser User-Agent from the matching target session.",
            "apiGetLib": "Full fresh URL of the Hunt api.js loaded by the current target page.",
            "data": "Second-stage meta.token returned by the target after the request with X-HD; omit for the first-stage fingerprint task.",
            "proxyType": "Proxy protocol: http, socks4 or socks5; use the same actual egress as the target session when bound.",
            "proxyAddress": "Reachable proxy hostname or IP without scheme, credentials or port.",
            "proxyLogin": "Optional proxy authentication username. Provide username and password together.",
            "proxyPassword": "Optional password for that same proxy, paired with proxyLogin.",
            "proxyPort": "Proxy TCP port, integer 1 to 65535."
          },
          "resultContract": "MODE_SPECIFIC",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {
              "X-HD": {
                "type": "string"
              },
              "token": {
                "type": "string"
              }
            },
            "anyOf": [
              {
                "required": [
                  "X-HD"
                ]
              },
              {
                "required": [
                  "token"
                ]
              }
            ],
            "additionalProperties": true
          },
          "modes": [
            {
              "id": "FINGERPRINT",
              "input": "data omitted",
              "output": "solution[\"X-HD\"] or upstream solution.token as X-HD"
            },
            {
              "id": "CHALLENGE",
              "input": "data = target meta.token",
              "output": "solution.token as target solution"
            }
          ]
        },
        "allOf": [
          {
            "if": {
              "anyOf": [
                {
                  "required": [
                    "proxyType"
                  ]
                },
                {
                  "required": [
                    "proxyAddress"
                  ]
                },
                {
                  "required": [
                    "proxyPort"
                  ]
                },
                {
                  "required": [
                    "proxyLogin"
                  ]
                },
                {
                  "required": [
                    "proxyPassword"
                  ]
                }
              ]
            },
            "then": {
              "required": [
                "proxyType",
                "proxyAddress",
                "proxyPort"
              ]
            }
          },
          {
            "if": {
              "anyOf": [
                {
                  "required": [
                    "proxyLogin"
                  ]
                },
                {
                  "required": [
                    "proxyPassword"
                  ]
                }
              ]
            },
            "then": {
              "required": [
                "proxyLogin",
                "proxyPassword"
              ]
            }
          }
        ]
      },
      "Adapter_TSPD": {
        "type": "object",
        "description": "TSPD input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "websiteURL": {
            "type": "string",
            "description": "Full URL of the page containing the challenge.",
            "x-description-key": "docs.parameter.websiteURL.bf47bf9e"
          },
          "userAgent": {
            "type": "string",
            "description": "User-Agent of the browser that obtained the challenge.",
            "x-description-key": "docs.parameter.userAgent.1ea0cf18"
          },
          "tspdCookie": {
            "type": "string",
            "description": "TSPD cookie from the challenge session.",
            "example": "YOUR_FRESH_TSPD_COOKIE",
            "x-description-key": "docs.parameter.tspdCookie.c5381e43"
          },
          "htmlPageBase64": {
            "type": "string",
            "description": "Base64-encoded full HTML of the current challenge page.",
            "example": "YOUR_FRESH_CHALLENGE_HTML_BASE64",
            "x-description-key": "docs.parameter.htmlPageBase64.29261971"
          },
          "proxyType": {
            "type": "string",
            "description": "Proxy protocol, for example http.",
            "example": "http",
            "x-description-key": "docs.parameter.proxyType.763f1203"
          },
          "proxyAddress": {
            "type": "string",
            "description": "Proxy hostname or IP address.",
            "example": "YOUR_PROXY_HOST",
            "x-description-key": "docs.parameter.proxyAddress.4a0b7772"
          },
          "proxyPort": {
            "type": "integer",
            "description": "Proxy port.",
            "example": 8080,
            "x-description-key": "docs.parameter.proxyPort.c3450379"
          },
          "proxyLogin": {
            "type": "string",
            "description": "Proxy username, when authentication is required.",
            "example": "YOUR_PROXY_LOGIN",
            "x-description-key": "docs.parameter.proxyLogin.48ef2d87"
          },
          "proxyPassword": {
            "type": "string",
            "description": "Proxy password, when authentication is required.",
            "example": "YOUR_PROXY_PASSWORD",
            "x-description-key": "docs.parameter.proxyPassword.18ae5ff4"
          }
        },
        "required": [
          "websiteURL",
          "tspdCookie",
          "htmlPageBase64",
          "proxyType",
          "proxyAddress",
          "proxyPort"
        ],
        "additionalProperties": false,
        "x-provider-task-type": "TspdTask",
        "x-solution-example-verified": true,
        "x-solution-example": {
          "Domains": {
            "example.com": {
              "Cookies": {
                "TS386a400d029": "EXAMPLE_TS386A400D029",
                "TS386a400d078": "EXAMPLE_TS386A400D078",
                "tspd_101_DID": "EXAMPLE_TSPD_101_DID"
              }
            }
          }
        },
        "x-integration": {
          "workflows": [
            "HTTP_SUBMIT",
            "BROWSER_RESULT"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "DOMAIN_COOKIES",
          "resultGuide": "Read the returned Domains/Cookies or domains/cookies map and apply each cookie to its matching domain. Preserve the challenge HTTP context; do not collapse this structure into a token string.",
          "requirements": [
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "websiteURL": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "userAgent": "Read the actual User-Agent used to obtain this challenge; preserve it when the product requires matching.",
            "tspdCookie": "Read the fresh value from the current target challenge/session or its documented integration. Do not reuse a sample or a value from another challenge.",
            "htmlPageBase64": "Read the fresh value from the current target challenge/session or its documented integration. Do not reuse a sample or a value from another challenge.",
            "proxyType": "Use the caller configured proxy. Supply related proxy fields together and retain the same egress when the target requires IP matching. Never invent proxy credentials.",
            "proxyAddress": "Use the caller configured proxy. Supply related proxy fields together and retain the same egress when the target requires IP matching. Never invent proxy credentials.",
            "proxyPort": "Use the caller configured proxy. Supply related proxy fields together and retain the same egress when the target requires IP matching. Never invent proxy credentials.",
            "proxyLogin": "Use the caller configured proxy. Supply related proxy fields together and retain the same egress when the target requires IP matching. Never invent proxy credentials.",
            "proxyPassword": "Use the caller configured proxy. Supply related proxy fields together and retain the same egress when the target requires IP matching. Never invent proxy credentials."
          },
          "resultContract": "DOCUMENTED_FIELDS",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {
              "Domains": {
                "type": "object",
                "properties": {
                  "example.com": {
                    "type": "object",
                    "properties": {
                      "Cookies": {
                        "type": "object",
                        "properties": {
                          "TS386a400d029": {
                            "type": "string"
                          },
                          "TS386a400d078": {
                            "type": "string"
                          },
                          "tspd_101_DID": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": true
                      }
                    },
                    "additionalProperties": true
                  }
                },
                "additionalProperties": true
              }
            },
            "additionalProperties": true
          }
        }
      },
      "Adapter_BASILISK": {
        "type": "object",
        "description": "BASILISK input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "websiteURL": {
            "type": "string",
            "description": "Full URL of the page containing the challenge.",
            "x-description-key": "docs.parameter.websiteURL.bf47bf9e"
          },
          "websiteKey": {
            "type": "string",
            "description": "Public site key from the target page.",
            "x-description-key": "docs.parameter.websiteKey.e0ab88b7"
          },
          "userAgent": {
            "type": "string",
            "description": "User-Agent of the browser that obtained the challenge.",
            "x-description-key": "docs.parameter.userAgent.1ea0cf18"
          }
        },
        "required": [
          "websiteURL",
          "websiteKey"
        ],
        "additionalProperties": false,
        "x-provider-task-type": "BasiliskTaskProxyless",
        "x-solution-example-verified": true,
        "x-solution-example": {
          "data": {
            "captcha_response": "EXAMPLE_CAPTCHA_RESPONSE"
          },
          "headers": {
            "User-Agent": "EXAMPLE_USER_AGENT"
          }
        },
        "x-integration": {
          "workflows": [
            "HTTP_SUBMIT",
            "BROWSER_RESULT"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "STRUCTURED_PROOF",
          "resultGuide": "Apply data.captcha_response together with any returned headers through the target integration. Preserve the returned User-Agent when present.",
          "requirements": [
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "websiteURL": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "websiteKey": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "userAgent": "Read the actual User-Agent used to obtain this challenge; preserve it when the product requires matching."
          },
          "resultContract": "DOCUMENTED_FIELDS",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {
              "data": {
                "type": "object",
                "properties": {
                  "captcha_response": {
                    "type": "string"
                  }
                },
                "additionalProperties": true
              },
              "headers": {
                "type": "object",
                "properties": {
                  "User-Agent": {
                    "type": "string"
                  }
                },
                "additionalProperties": true
              }
            },
            "additionalProperties": true
          }
        }
      },
      "Adapter_IMPERVA": {
        "type": "object",
        "description": "IMPERVA input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "websiteURL": {
            "type": "string",
            "description": "Full URL of the actual Imperva-protected page. Collect the script and cookies from this same target session.",
            "x-description-key": "integration.imperva.websiteURL",
            "minLength": 1
          },
          "websiteKey": {
            "type": "string",
            "description": "Deprecated compatibility field, ignored for Imperva. A site key cannot replace the required script, cookies or proxy.",
            "x-description-key": "integration.imperva.websiteKey",
            "deprecated": true
          },
          "incapsulaScriptUrl": {
            "type": "string",
            "description": "Fresh Incapsula script URL or path from the target page/network, including its query string; for example /_Incapsula_Resource?SWJIYLWA=... . Do not substitute a site key.",
            "x-description-key": "integration.imperva.incapsulaScriptUrl",
            "minLength": 1,
            "example": "/_Incapsula_Resource?SWJIYLWA=YOUR_CURRENT_SCRIPT_ID"
          },
          "incapsulaCookies": {
            "type": "string",
            "description": "Cookie-header string from the same fresh target session, including its actual incap_ses_* and visid_incap_* values where issued. Preserve values; do not copy example cookies.",
            "x-description-key": "integration.imperva.incapsulaCookies",
            "minLength": 1,
            "example": "incap_ses_YOUR_ID=YOUR_SESSION_VALUE; visid_incap_YOUR_ID=YOUR_VISITOR_VALUE"
          },
          "reese84UrlEndpoint": {
            "type": "string",
            "description": "Optional actual Reese84 endpoint observed in target network requests, commonly ending in ?d=the-target-host. Omit when not present; do not invent it.",
            "x-description-key": "integration.imperva.reese84UrlEndpoint"
          },
          "userAgent": {
            "type": "string",
            "description": "Actual User-Agent used to collect this session. Keep it consistent when applying the returned cookies, or use the returned User-Agent when supplied.",
            "x-description-key": "integration.imperva.userAgent"
          },
          "proxyType": {
            "type": "string",
            "description": "Required upstream proxy protocol: http, socks4 or socks5. This Imperva integration has no documented proxyless mode.",
            "x-description-key": "integration.imperva.proxyType",
            "enum": [
              "http",
              "socks4",
              "socks5"
            ],
            "example": "http",
            "minLength": 1
          },
          "proxyAddress": {
            "type": "string",
            "description": "Reachable proxy hostname or IP, separate from its port and credentials. Use the same proxy egress for challenge collection, solving and subsequent target requests.",
            "x-description-key": "integration.imperva.proxyAddress",
            "minLength": 1
          },
          "proxyPort": {
            "type": "integer",
            "description": "Proxy TCP port, an integer from 1 to 65535; not a URL or a host:port string.",
            "x-description-key": "integration.imperva.proxyPort",
            "minimum": 1,
            "maximum": 65535,
            "example": 8080
          },
          "proxyLogin": {
            "type": "string",
            "description": "Username for the supplied proxy when authentication is required; not your Nex Captcha API key.",
            "x-description-key": "integration.imperva.proxyLogin"
          },
          "proxyPassword": {
            "type": "string",
            "description": "Password for the supplied proxy when authentication is required. Preserve the original credential.",
            "x-description-key": "integration.imperva.proxyPassword"
          }
        },
        "required": [
          "websiteURL",
          "incapsulaScriptUrl",
          "incapsulaCookies",
          "proxyType",
          "proxyAddress",
          "proxyPort"
        ],
        "additionalProperties": false,
        "x-provider-task-type": "ImpervaTask",
        "x-solution-example-verified": true,
        "x-solution-example": {
          "domains": {
            "https://site-example.com": {
              "cookies": {
                "___utmvc": "EXAMPLE____UTMVC"
              }
            }
          }
        },
        "x-integration": {
          "workflows": [
            "HTTP_SUBMIT",
            "BROWSER_RESULT"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "DOMAIN_COOKIES",
          "resultGuide": "Apply solution.domains cookies only to their matching domains, preserving cookie scope/attributes and the same proxy session. Use solution.headers.User-Agent when returned. This is not a form token; separately confirm target acceptance.",
          "requirements": [
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "This is a cookie-based protection flow, not websiteURL plus site key. Supply a fresh script, cookies and a working proxy together. Missing materials block creation before billing. A nested hCaptcha site key alone does not establish that this cookie workflow can solve the observed page. ERROR_BAD_PROXY is a proxy/input failure, not proof of an unsolvable CAPTCHA; do not retry unchanged inputs or switch to GRID.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "websiteURL": "Full URL of the actual Imperva-protected page. Collect the script and cookies from this same target session.",
            "websiteKey": "Deprecated compatibility field, ignored for Imperva. A site key cannot replace the required script, cookies or proxy.",
            "incapsulaScriptUrl": "Fresh Incapsula script URL or path from the target page/network, including its query string; for example /_Incapsula_Resource?SWJIYLWA=... . Do not substitute a site key.",
            "incapsulaCookies": "Cookie-header string from the same fresh target session, including its actual incap_ses_* and visid_incap_* values where issued. Preserve values; do not copy example cookies.",
            "reese84UrlEndpoint": "Optional actual Reese84 endpoint observed in target network requests, commonly ending in ?d=the-target-host. Omit when not present; do not invent it.",
            "userAgent": "Actual User-Agent used to collect this session. Keep it consistent when applying the returned cookies, or use the returned User-Agent when supplied.",
            "proxyType": "Required upstream proxy protocol: http, socks4 or socks5. This Imperva integration has no documented proxyless mode.",
            "proxyAddress": "Reachable proxy hostname or IP, separate from its port and credentials. Use the same proxy egress for challenge collection, solving and subsequent target requests.",
            "proxyPort": "Proxy TCP port, an integer from 1 to 65535; not a URL or a host:port string.",
            "proxyLogin": "Username for the supplied proxy when authentication is required; not your Nex Captcha API key.",
            "proxyPassword": "Password for the supplied proxy when authentication is required. Preserve the original credential."
          },
          "resultContract": "DOCUMENTED_FIELDS",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {
              "domains": {
                "type": "object",
                "properties": {
                  "https://site-example.com": {
                    "type": "object",
                    "properties": {
                      "cookies": {
                        "type": "object",
                        "properties": {
                          "___utmvc": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": true
                      }
                    },
                    "additionalProperties": true
                  }
                },
                "additionalProperties": true
              }
            },
            "additionalProperties": true
          }
        }
      },
      "Adapter_ALIBABA": {
        "type": "object",
        "description": "ALIBABA input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "websiteURL": {
            "type": "string",
            "description": "Full URL of the page containing the challenge.",
            "x-description-key": "docs.parameter.websiteURL.bf47bf9e"
          },
          "sceneId": {
            "type": "string",
            "description": "Alibaba scene identifier.",
            "x-description-key": "docs.parameter.sceneId.ae0a46e2"
          },
          "prefix": {
            "type": "string",
            "description": "Alibaba challenge prefix.",
            "x-description-key": "docs.parameter.prefix.d7742762"
          },
          "userId": {
            "type": "string",
            "description": "User identifier supplied by the target integration.",
            "x-description-key": "docs.parameter.userId.a8b38c37"
          },
          "userUserId": {
            "type": "string",
            "description": "User identifier supplied by the target integration.",
            "x-description-key": "docs.parameter.userUserId.90a912db"
          },
          "verifyType": {
            "type": "string",
            "description": "Target verification mode.",
            "x-description-key": "docs.parameter.verifyType.e78cffcf"
          },
          "region": {
            "type": "string",
            "description": "Target verification region.",
            "x-description-key": "docs.parameter.region.c198ead3"
          },
          "userCertifyId": {
            "type": "string",
            "description": "Target verification identifier.",
            "x-description-key": "docs.parameter.userCertifyId.cd4cec76"
          },
          "apiGetLib": {
            "type": "string",
            "description": "Target API library URL.",
            "x-description-key": "docs.parameter.apiGetLib.7d409934"
          },
          "userAgent": {
            "type": "string",
            "description": "User-Agent of the browser that obtained the challenge.",
            "x-description-key": "docs.parameter.userAgent.1ea0cf18"
          }
        },
        "required": [
          "websiteURL",
          "sceneId",
          "prefix"
        ],
        "additionalProperties": false,
        "x-provider-task-type": "AlibabaTask",
        "x-solution-example-verified": true,
        "x-solution-example": {
          "data": {
            "tokens": "{\"sceneId\":\"EXAMPLE_SCENE_ID\",\"certifyId\":\"EXAMPLE_CERTIFY_ID\",\"deviceToken\":\"EXAMPLE_DEVICE_TOKEN\",\"data\":\"EXAMPLE_DATA\"}"
          }
        },
        "x-integration": {
          "workflows": [
            "HTTP_SUBMIT",
            "BROWSER_RESULT"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "STRUCTURED_PROOF",
          "resultGuide": "data.tokens may be a serialized JSON string. Preserve the returned scene/certify/device fields together and use the target Alibaba integration; do not mistake the serialized structure for a generic token.",
          "requirements": [
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "websiteURL": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "sceneId": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "prefix": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "userId": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "userUserId": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "verifyType": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "region": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "userCertifyId": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "apiGetLib": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "userAgent": "Read the actual User-Agent used to obtain this challenge; preserve it when the product requires matching."
          },
          "resultContract": "DOCUMENTED_FIELDS",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {
              "data": {
                "type": "object",
                "properties": {
                  "tokens": {
                    "type": "string"
                  }
                },
                "additionalProperties": true
              }
            },
            "additionalProperties": true
          }
        }
      },
      "Adapter_YANDEX_SMARTCAPTCHA": {
        "type": "object",
        "description": "YANDEX_SMARTCAPTCHA input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "websiteURL": {
            "type": "string",
            "description": "Full URL of the page containing the challenge.",
            "x-description-key": "docs.parameter.websiteURL.bf47bf9e"
          },
          "websiteKey": {
            "type": "string",
            "description": "Public site key from the target page.",
            "x-description-key": "docs.parameter.websiteKey.e0ab88b7"
          },
          "userAgent": {
            "type": "string",
            "description": "User-Agent of the browser that obtained the challenge.",
            "x-description-key": "docs.parameter.userAgent.1ea0cf18"
          },
          "cookies": {
            "type": "string",
            "description": "Cookies from the browser session that obtained the challenge.",
            "x-description-key": "docs.parameter.cookies.dc177950"
          },
          "proxyType": {
            "type": "string",
            "description": "Proxy protocol, for example http.",
            "x-description-key": "docs.parameter.proxyType.391537f4"
          },
          "proxyAddress": {
            "type": "string",
            "description": "Proxy hostname or IP address.",
            "x-description-key": "docs.parameter.proxyAddress.f8bdca2c"
          },
          "proxyPort": {
            "type": "integer",
            "format": "int32",
            "description": "Proxy port.",
            "x-description-key": "docs.parameter.proxyPort.c3450379"
          },
          "proxyLogin": {
            "type": "string",
            "description": "Proxy username, when authentication is required.",
            "x-description-key": "docs.parameter.proxyLogin.48ef2d87"
          },
          "proxyPassword": {
            "type": "string",
            "description": "Proxy password, when authentication is required.",
            "x-description-key": "docs.parameter.proxyPassword.18ae5ff4"
          }
        },
        "required": [
          "websiteURL",
          "websiteKey"
        ],
        "additionalProperties": false,
        "x-provider-task-type": "YandexSmartCaptchaTaskProxyless",
        "x-solution-example-verified": true,
        "x-solution-example": {
          "token": "EXAMPLE_TOKEN"
        },
        "x-integration": {
          "workflows": [
            "HTTP_SUBMIT",
            "BROWSER_RESULT"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "TOKEN",
          "resultGuide": "Apply solution.token through this product integration, not an unrelated CAPTCHA field. Follow the target integration for submission and preserve any required returned User-Agent. A token alone does not establish target acceptance.",
          "requirements": [
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "websiteURL": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "websiteKey": "Read from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.",
            "userAgent": "Read the actual User-Agent used to obtain this challenge; preserve it when the product requires matching.",
            "cookies": "Read the fresh value from the current target challenge/session or its documented integration. Do not reuse a sample or a value from another challenge.",
            "proxyType": "Use the caller configured proxy. Supply related proxy fields together and retain the same egress when the target requires IP matching. Never invent proxy credentials.",
            "proxyAddress": "Use the caller configured proxy. Supply related proxy fields together and retain the same egress when the target requires IP matching. Never invent proxy credentials.",
            "proxyPort": "Use the caller configured proxy. Supply related proxy fields together and retain the same egress when the target requires IP matching. Never invent proxy credentials.",
            "proxyLogin": "Use the caller configured proxy. Supply related proxy fields together and retain the same egress when the target requires IP matching. Never invent proxy credentials.",
            "proxyPassword": "Use the caller configured proxy. Supply related proxy fields together and retain the same egress when the target requires IP matching. Never invent proxy credentials."
          },
          "resultContract": "DOCUMENTED_FIELDS",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {
              "token": {
                "type": "string"
              }
            },
            "additionalProperties": true
          }
        }
      },
      "Adapter_RUSSIAN_CAPTCHA": {
        "type": "object",
        "description": "RUSSIAN_CAPTCHA input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "body": {
            "type": "string",
            "description": "Base64-encoded image or audio content.",
            "x-description-key": "docs.parameter.body.36ac510d"
          },
          "phrase": {
            "type": "boolean",
            "description": "Whether the answer contains multiple words.",
            "x-description-key": "docs.parameter.phrase.e4ec0b0b"
          },
          "caseSensitive": {
            "type": "boolean",
            "description": "Whether the answer is case-sensitive.",
            "x-description-key": "docs.parameter.caseSensitive.d8a073b8"
          },
          "numeric": {
            "type": "boolean",
            "description": "Character recognition mode.",
            "x-description-key": "docs.parameter.numeric.0ad5f10f"
          },
          "math": {
            "type": "boolean",
            "description": "Whether to calculate the expression shown in the image.",
            "x-description-key": "docs.parameter.math.b03e7411"
          },
          "minLength": {
            "type": "integer",
            "format": "int32",
            "description": "Minimum answer length.",
            "x-description-key": "docs.parameter.minLength.591bd5b2"
          },
          "maxLength": {
            "type": "integer",
            "format": "int32",
            "description": "Maximum answer length.",
            "x-description-key": "docs.parameter.maxLength.1111471b"
          },
          "comment": {
            "type": "string",
            "description": "Question or instructions for solving the challenge.",
            "x-description-key": "docs.parameter.comment.68c7c3d3"
          },
          "imgInstructions": {
            "type": "string",
            "description": "Base64-encoded image instructions.",
            "x-description-key": "docs.parameter.imgInstructions.a452ff6c"
          }
        },
        "required": [
          "body"
        ],
        "additionalProperties": false,
        "x-provider-task-type": "ImageToTextTask",
        "x-solution-example-verified": true,
        "x-solution-example": {
          "text": "EXAMPLE_ANSWER"
        },
        "x-language-pool": "ru",
        "x-integration": {
          "workflows": [
            "HTTP_SUBMIT",
            "BROWSER_RESULT"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "TEXT_ANSWER",
          "resultGuide": "Read solution.text as the answer to the current image or text question; submit it in the target answer field while preserving the challenge session.",
          "requirements": [
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "body": "Obtain the current challenge media from the target in the field format. For images, preserve original dimensions/order and crop to the challenge, not unrelated page content. For AUDIO, use the actual audio content.",
            "phrase": "Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.",
            "caseSensitive": "Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.",
            "numeric": "Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.",
            "math": "Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.",
            "minLength": "Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.",
            "maxLength": "Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.",
            "comment": "Use the actual question/instructions from the current challenge. Do not append agent commands such as Return coordinates. This field is semantically necessary for instruction-dependent tasks.",
            "imgInstructions": "Obtain the current challenge media from the target in the field format. For images, preserve original dimensions/order and crop to the challenge, not unrelated page content. For AUDIO, use the actual audio content."
          },
          "resultContract": "DOCUMENTED_FIELDS",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {
              "text": {
                "type": "string"
              }
            },
            "additionalProperties": true
          }
        }
      },
      "Adapter_CHINESE_CAPTCHA": {
        "type": "object",
        "description": "CHINESE_CAPTCHA input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "body": {
            "type": "string",
            "description": "Base64-encoded image or audio content.",
            "x-description-key": "docs.parameter.body.36ac510d"
          },
          "phrase": {
            "type": "boolean",
            "description": "Whether the answer contains multiple words.",
            "x-description-key": "docs.parameter.phrase.e4ec0b0b"
          },
          "caseSensitive": {
            "type": "boolean",
            "description": "Whether the answer is case-sensitive.",
            "x-description-key": "docs.parameter.caseSensitive.d8a073b8"
          },
          "numeric": {
            "type": "boolean",
            "description": "Character recognition mode.",
            "x-description-key": "docs.parameter.numeric.0ad5f10f"
          },
          "math": {
            "type": "boolean",
            "description": "Whether to calculate the expression shown in the image.",
            "x-description-key": "docs.parameter.math.b03e7411"
          },
          "minLength": {
            "type": "integer",
            "format": "int32",
            "description": "Minimum answer length.",
            "x-description-key": "docs.parameter.minLength.591bd5b2"
          },
          "maxLength": {
            "type": "integer",
            "format": "int32",
            "description": "Maximum answer length.",
            "x-description-key": "docs.parameter.maxLength.1111471b"
          },
          "comment": {
            "type": "string",
            "description": "Question or instructions for solving the challenge.",
            "x-description-key": "docs.parameter.comment.68c7c3d3"
          },
          "imgInstructions": {
            "type": "string",
            "description": "Base64-encoded image instructions.",
            "x-description-key": "docs.parameter.imgInstructions.a452ff6c"
          }
        },
        "required": [
          "body"
        ],
        "additionalProperties": false,
        "x-provider-task-type": "ImageToTextTask",
        "x-solution-example-verified": true,
        "x-solution-example": {
          "text": "EXAMPLE_ANSWER"
        },
        "x-language-pool": "zh",
        "x-integration": {
          "workflows": [
            "HTTP_SUBMIT",
            "BROWSER_RESULT"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "TEXT_ANSWER",
          "resultGuide": "Read solution.text as the answer to the current image or text question; submit it in the target answer field while preserving the challenge session.",
          "requirements": [
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "body": "Obtain the current challenge media from the target in the field format. For images, preserve original dimensions/order and crop to the challenge, not unrelated page content. For AUDIO, use the actual audio content.",
            "phrase": "Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.",
            "caseSensitive": "Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.",
            "numeric": "Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.",
            "math": "Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.",
            "minLength": "Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.",
            "maxLength": "Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.",
            "comment": "Use the actual question/instructions from the current challenge. Do not append agent commands such as Return coordinates. This field is semantically necessary for instruction-dependent tasks.",
            "imgInstructions": "Obtain the current challenge media from the target in the field format. For images, preserve original dimensions/order and crop to the challenge, not unrelated page content. For AUDIO, use the actual audio content."
          },
          "resultContract": "DOCUMENTED_FIELDS",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {
              "text": {
                "type": "string"
              }
            },
            "additionalProperties": true
          }
        }
      },
      "Adapter_NUMBER_CAPTCHA": {
        "type": "object",
        "description": "NUMBER_CAPTCHA input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "body": {
            "type": "string",
            "description": "Base64-encoded image or audio content.",
            "x-description-key": "docs.parameter.body.36ac510d"
          },
          "phrase": {
            "type": "boolean",
            "description": "Whether the answer contains multiple words.",
            "x-description-key": "docs.parameter.phrase.e4ec0b0b"
          },
          "caseSensitive": {
            "type": "boolean",
            "description": "Whether the answer is case-sensitive.",
            "x-description-key": "docs.parameter.caseSensitive.d8a073b8"
          },
          "numeric": {
            "type": "boolean",
            "description": "Character recognition mode.",
            "x-description-key": "docs.parameter.numeric.0ad5f10f"
          },
          "math": {
            "type": "boolean",
            "description": "Whether to calculate the expression shown in the image.",
            "x-description-key": "docs.parameter.math.b03e7411"
          },
          "minLength": {
            "type": "integer",
            "format": "int32",
            "description": "Minimum answer length.",
            "x-description-key": "docs.parameter.minLength.591bd5b2"
          },
          "maxLength": {
            "type": "integer",
            "format": "int32",
            "description": "Maximum answer length.",
            "x-description-key": "docs.parameter.maxLength.1111471b"
          },
          "comment": {
            "type": "string",
            "description": "Question or instructions for solving the challenge.",
            "x-description-key": "docs.parameter.comment.68c7c3d3"
          },
          "imgInstructions": {
            "type": "string",
            "description": "Base64-encoded image instructions.",
            "x-description-key": "docs.parameter.imgInstructions.a452ff6c"
          }
        },
        "required": [
          "body"
        ],
        "additionalProperties": false,
        "x-provider-task-type": "ImageToTextTask",
        "x-solution-example-verified": true,
        "x-solution-example": {
          "text": "EXAMPLE_ANSWER"
        },
        "x-integration": {
          "workflows": [
            "HTTP_SUBMIT",
            "BROWSER_RESULT"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "TEXT_ANSWER",
          "resultGuide": "Read solution.text as the answer to the current image or text question; submit it in the target answer field while preserving the challenge session.",
          "requirements": [
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "body": "Obtain the current challenge media from the target in the field format. For images, preserve original dimensions/order and crop to the challenge, not unrelated page content. For AUDIO, use the actual audio content.",
            "phrase": "Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.",
            "caseSensitive": "Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.",
            "numeric": "Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.",
            "math": "Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.",
            "minLength": "Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.",
            "maxLength": "Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.",
            "comment": "Use the actual question/instructions from the current challenge. Do not append agent commands such as Return coordinates. This field is semantically necessary for instruction-dependent tasks.",
            "imgInstructions": "Obtain the current challenge media from the target in the field format. For images, preserve original dimensions/order and crop to the challenge, not unrelated page content. For AUDIO, use the actual audio content."
          },
          "resultContract": "DOCUMENTED_FIELDS",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {
              "text": {
                "type": "string"
              }
            },
            "additionalProperties": true
          }
        }
      },
      "Adapter_MATH_CAPTCHA": {
        "type": "object",
        "description": "MATH_CAPTCHA input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "body": {
            "type": "string",
            "description": "Base64-encoded image or audio content.",
            "x-description-key": "docs.parameter.body.36ac510d"
          },
          "phrase": {
            "type": "boolean",
            "description": "Whether the answer contains multiple words.",
            "x-description-key": "docs.parameter.phrase.e4ec0b0b"
          },
          "caseSensitive": {
            "type": "boolean",
            "description": "Whether the answer is case-sensitive.",
            "x-description-key": "docs.parameter.caseSensitive.d8a073b8"
          },
          "numeric": {
            "type": "boolean",
            "description": "Character recognition mode.",
            "x-description-key": "docs.parameter.numeric.0ad5f10f"
          },
          "math": {
            "type": "boolean",
            "description": "Whether to calculate the expression shown in the image.",
            "x-description-key": "docs.parameter.math.b03e7411"
          },
          "minLength": {
            "type": "integer",
            "format": "int32",
            "description": "Minimum answer length.",
            "x-description-key": "docs.parameter.minLength.591bd5b2"
          },
          "maxLength": {
            "type": "integer",
            "format": "int32",
            "description": "Maximum answer length.",
            "x-description-key": "docs.parameter.maxLength.1111471b"
          },
          "comment": {
            "type": "string",
            "description": "Question or instructions for solving the challenge.",
            "x-description-key": "docs.parameter.comment.68c7c3d3"
          },
          "imgInstructions": {
            "type": "string",
            "description": "Base64-encoded image instructions.",
            "x-description-key": "docs.parameter.imgInstructions.a452ff6c"
          }
        },
        "required": [
          "body"
        ],
        "additionalProperties": false,
        "x-provider-task-type": "ImageToTextTask",
        "x-solution-example-verified": true,
        "x-solution-example": {
          "text": "EXAMPLE_ANSWER"
        },
        "x-integration": {
          "workflows": [
            "HTTP_SUBMIT",
            "BROWSER_RESULT"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "TEXT_ANSWER",
          "resultGuide": "Read solution.text as the answer to the current image or text question; submit it in the target answer field while preserving the challenge session.",
          "requirements": [
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "body": "Obtain the current challenge media from the target in the field format. For images, preserve original dimensions/order and crop to the challenge, not unrelated page content. For AUDIO, use the actual audio content.",
            "phrase": "Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.",
            "caseSensitive": "Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.",
            "numeric": "Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.",
            "math": "Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.",
            "minLength": "Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.",
            "maxLength": "Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.",
            "comment": "Use the actual question/instructions from the current challenge. Do not append agent commands such as Return coordinates. This field is semantically necessary for instruction-dependent tasks.",
            "imgInstructions": "Obtain the current challenge media from the target in the field format. For images, preserve original dimensions/order and crop to the challenge, not unrelated page content. For AUDIO, use the actual audio content."
          },
          "resultContract": "DOCUMENTED_FIELDS",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {
              "text": {
                "type": "string"
              }
            },
            "additionalProperties": true
          }
        }
      },
      "Adapter_CUSTOM": {
        "type": "object",
        "description": "CUSTOM input parameters. Read x-integration before creating a paid task.",
        "properties": {
          "body": {
            "type": "string",
            "description": "Base64-encoded image or audio content.",
            "x-description-key": "docs.parameter.body.36ac510d"
          },
          "comment": {
            "type": "string",
            "description": "Question or instructions for solving the challenge.",
            "x-description-key": "docs.parameter.comment.68c7c3d3"
          }
        },
        "additionalProperties": false,
        "x-solution-example-verified": false,
        "x-solution-example": {},
        "x-integration": {
          "workflows": [],
          "readiness": "DOCUMENTATION_REQUIRED",
          "resultKind": "UNDOCUMENTED",
          "resultGuide": "CUSTOM is not connected: no confirmed upstream CustomTask input/result contract or valid runnable example is available. The legacy body/comment fields are reserved and do not establish support. Creation is rejected before task persistence or charging. Use a matching documented product; do not invent a CUSTOM token or generic solution.",
          "requirements": [
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "body": "Obtain the current challenge media from the target in the field format. For images, preserve original dimensions/order and crop to the challenge, not unrelated page content. For AUDIO, use the actual audio content.",
            "comment": "Use the actual question/instructions from the current challenge. Do not append agent commands such as Return coordinates. This field is semantically necessary for instruction-dependent tasks."
          },
          "resultContract": "UNDOCUMENTED",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {},
            "additionalProperties": true
          }
        },
        "deprecated": true
      },
      "ValidatorCreateRequest": {
        "type": "object",
        "required": [
          "productCode",
          "adapter"
        ],
        "properties": {
          "productCode": {
            "type": "string",
            "enum": [
              "NORMAL_CAPTCHA",
              "RECAPTCHA_V2",
              "RECAPTCHA_V3",
              "RECAPTCHA_V2_ENTERPRISE",
              "RECAPTCHA_V3_ENTERPRISE",
              "RECAPTCHA_ENTERPRISE",
              "CLOUDFLARE_TURNSTILE",
              "HCAPTCHA",
              "ARKOSE",
              "GEETEST",
              "GEETEST_V4",
              "CAPY_PUZZLE",
              "KEYCAPTCHA",
              "LEMIN",
              "AMAZON",
              "IMAGE_CAPTCHA",
              "TEXT",
              "AUDIO",
              "ROTATE",
              "GRID",
              "CLICK",
              "COORDINATES",
              "DRAW_AROUND",
              "DRAG_AND_DROP",
              "BOUNDING_BOX",
              "SLIDER_CAPTCHA",
              "CYBERSIARA",
              "MTCAPTCHA",
              "DATADOME",
              "FRIENDLY_CAPTCHA",
              "CUTCAPTCHA",
              "ATBCAPTCHA",
              "TENCENT",
              "PROSOPO",
              "CAPTCHAFOX",
              "VK_CAPTCHA",
              "TEMU",
              "ALTCHA",
              "YIDUN_NE_CAPTCHA",
              "BINANCE",
              "HUNT",
              "TSPD",
              "BASILISK",
              "IMPERVA",
              "ALIBABA",
              "YANDEX_SMARTCAPTCHA",
              "RUSSIAN_CAPTCHA",
              "CHINESE_CAPTCHA",
              "NUMBER_CAPTCHA",
              "MATH_CAPTCHA",
              "CUSTOM"
            ],
            "description": "产品编码；必须与 adapter 参数模型匹配。"
          },
          "adapter": {
            "type": "object",
            "description": "Product-specific parameters; matched to productCode."
          }
        },
        "oneOf": [
          {
            "properties": {
              "productCode": {
                "const": "NORMAL_CAPTCHA"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_NORMAL_CAPTCHA"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "RECAPTCHA_V2"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_RECAPTCHA_V2"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "RECAPTCHA_V3"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_RECAPTCHA_V3"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "RECAPTCHA_V2_ENTERPRISE"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_RECAPTCHA_V2_ENTERPRISE"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "RECAPTCHA_V3_ENTERPRISE"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_RECAPTCHA_V3_ENTERPRISE"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "RECAPTCHA_ENTERPRISE"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_RECAPTCHA_ENTERPRISE"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "CLOUDFLARE_TURNSTILE"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_CLOUDFLARE_TURNSTILE"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "ARKOSE"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_ARKOSE"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "GEETEST"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_GEETEST"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "GEETEST_V4"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_GEETEST_V4"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "CAPY_PUZZLE"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_CAPY_PUZZLE"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "KEYCAPTCHA"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_KEYCAPTCHA"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "LEMIN"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_LEMIN"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "AMAZON"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_AMAZON"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "IMAGE_CAPTCHA"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_IMAGE_CAPTCHA"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "TEXT"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_TEXT"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "AUDIO"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_AUDIO"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "ROTATE"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_ROTATE"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "GRID"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_GRID"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "CLICK"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_CLICK"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "COORDINATES"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_COORDINATES"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "DRAW_AROUND"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_DRAW_AROUND"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "DRAG_AND_DROP"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_DRAG_AND_DROP"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "BOUNDING_BOX"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_BOUNDING_BOX"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "SLIDER_CAPTCHA"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_SLIDER_CAPTCHA"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "CYBERSIARA"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_CYBERSIARA"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "MTCAPTCHA"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_MTCAPTCHA"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "DATADOME"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_DATADOME"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "FRIENDLY_CAPTCHA"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_FRIENDLY_CAPTCHA"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "CUTCAPTCHA"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_CUTCAPTCHA"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "ATBCAPTCHA"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_ATBCAPTCHA"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "TENCENT"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_TENCENT"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "PROSOPO"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_PROSOPO"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "CAPTCHAFOX"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_CAPTCHAFOX"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "VK_CAPTCHA"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_VK_CAPTCHA"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "TEMU"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_TEMU"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "ALTCHA"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_ALTCHA"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "YIDUN_NE_CAPTCHA"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_YIDUN_NE_CAPTCHA"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "BINANCE"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_BINANCE"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "HUNT"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_HUNT"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "TSPD"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_TSPD"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "BASILISK"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_BASILISK"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "IMPERVA"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_IMPERVA"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "ALIBABA"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_ALIBABA"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "YANDEX_SMARTCAPTCHA"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_YANDEX_SMARTCAPTCHA"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "RUSSIAN_CAPTCHA"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_RUSSIAN_CAPTCHA"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "CHINESE_CAPTCHA"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_CHINESE_CAPTCHA"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "NUMBER_CAPTCHA"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_NUMBER_CAPTCHA"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "MATH_CAPTCHA"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_MATH_CAPTCHA"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "CUSTOM"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_CUSTOM"
              }
            },
            "required": [
              "productCode",
              "adapter"
            ]
          },
          {
            "properties": {
              "productCode": {
                "const": "HCAPTCHA"
              },
              "adapter": {
                "$ref": "#/components/schemas/Adapter_HCAPTCHA"
              }
            }
          }
        ]
      },
      "ValidatorQueryRequest": {
        "type": "object",
        "required": [
          "taskId"
        ],
        "properties": {
          "taskId": {
            "type": "string",
            "format": "uuid",
            "description": "create.cgi 返回的平台任务 ID。"
          }
        }
      },
      "ValidatorCreateData": {
        "type": "object",
        "required": [
          "taskId",
          "productCode",
          "state"
        ],
        "properties": {
          "taskId": {
            "type": "string",
            "format": "uuid"
          },
          "uuid": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "productCode": {
            "type": "string",
            "enum": [
              "NORMAL_CAPTCHA",
              "RECAPTCHA_V2",
              "RECAPTCHA_V3",
              "RECAPTCHA_V2_ENTERPRISE",
              "RECAPTCHA_V3_ENTERPRISE",
              "RECAPTCHA_ENTERPRISE",
              "CLOUDFLARE_TURNSTILE",
              "HCAPTCHA",
              "ARKOSE",
              "GEETEST",
              "GEETEST_V4",
              "CAPY_PUZZLE",
              "KEYCAPTCHA",
              "LEMIN",
              "AMAZON",
              "IMAGE_CAPTCHA",
              "TEXT",
              "AUDIO",
              "ROTATE",
              "GRID",
              "CLICK",
              "COORDINATES",
              "DRAW_AROUND",
              "DRAG_AND_DROP",
              "BOUNDING_BOX",
              "SLIDER_CAPTCHA",
              "CYBERSIARA",
              "MTCAPTCHA",
              "DATADOME",
              "FRIENDLY_CAPTCHA",
              "CUTCAPTCHA",
              "ATBCAPTCHA",
              "TENCENT",
              "PROSOPO",
              "CAPTCHAFOX",
              "VK_CAPTCHA",
              "TEMU",
              "ALTCHA",
              "YIDUN_NE_CAPTCHA",
              "BINANCE",
              "HUNT",
              "TSPD",
              "BASILISK",
              "IMPERVA",
              "ALIBABA",
              "YANDEX_SMARTCAPTCHA",
              "RUSSIAN_CAPTCHA",
              "CHINESE_CAPTCHA",
              "NUMBER_CAPTCHA",
              "MATH_CAPTCHA",
              "CUSTOM"
            ]
          },
          "state": {
            "$ref": "#/components/schemas/TaskState"
          }
        }
      },
      "ValidatorQueryData": {
        "type": "object",
        "required": [
          "taskId",
          "productCode",
          "state",
          "solution"
        ],
        "properties": {
          "taskId": {
            "type": "string",
            "format": "uuid"
          },
          "productCode": {
            "type": "string",
            "enum": [
              "NORMAL_CAPTCHA",
              "RECAPTCHA_V2",
              "RECAPTCHA_V3",
              "RECAPTCHA_V2_ENTERPRISE",
              "RECAPTCHA_V3_ENTERPRISE",
              "RECAPTCHA_ENTERPRISE",
              "CLOUDFLARE_TURNSTILE",
              "HCAPTCHA",
              "ARKOSE",
              "GEETEST",
              "GEETEST_V4",
              "CAPY_PUZZLE",
              "KEYCAPTCHA",
              "LEMIN",
              "AMAZON",
              "IMAGE_CAPTCHA",
              "TEXT",
              "AUDIO",
              "ROTATE",
              "GRID",
              "CLICK",
              "COORDINATES",
              "DRAW_AROUND",
              "DRAG_AND_DROP",
              "BOUNDING_BOX",
              "SLIDER_CAPTCHA",
              "CYBERSIARA",
              "MTCAPTCHA",
              "DATADOME",
              "FRIENDLY_CAPTCHA",
              "CUTCAPTCHA",
              "ATBCAPTCHA",
              "TENCENT",
              "PROSOPO",
              "CAPTCHAFOX",
              "VK_CAPTCHA",
              "TEMU",
              "ALTCHA",
              "YIDUN_NE_CAPTCHA",
              "BINANCE",
              "HUNT",
              "TSPD",
              "BASILISK",
              "IMPERVA",
              "ALIBABA",
              "YANDEX_SMARTCAPTCHA",
              "RUSSIAN_CAPTCHA",
              "CHINESE_CAPTCHA",
              "NUMBER_CAPTCHA",
              "MATH_CAPTCHA",
              "CUSTOM"
            ]
          },
          "state": {
            "$ref": "#/components/schemas/TaskState"
          },
          "solution": {
            "type": "object",
            "additionalProperties": true
          },
          "failure": {
            "$ref": "#/components/schemas/TaskFailure"
          }
        },
        "additionalProperties": false
      },
      "TaskState": {
        "type": "string",
        "enum": [
          "CREATED",
          "SUBMITTING",
          "PROCESSING",
          "SUCCEEDED",
          "FAILED",
          "EXPIRED"
        ]
      },
      "Result": {
        "type": "object",
        "required": [
          "code",
          "msg",
          "data"
        ],
        "properties": {
          "code": {
            "type": "integer",
            "description": "0 表示成功，负数表示业务错误。"
          },
          "msg": {
            "type": "string",
            "description": "Localized success or error message; OpenAPI uses Accept-Language first, then the API key owner's configured language, then en-US."
          },
          "data": {}
        }
      },
      "SocketReady": {
        "type": "object",
        "required": [
          "type",
          "replayLimit",
          "heartbeatSeconds"
        ],
        "properties": {
          "type": {
            "const": "socket.ready"
          },
          "replayLimit": {
            "const": 20
          },
          "heartbeatSeconds": {
            "const": 20
          }
        },
        "additionalProperties": false
      },
      "SocketHeartbeat": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "const": "heartbeat"
          }
        },
        "additionalProperties": false
      },
      "SocketHeartbeatAck": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "const": "heartbeat.ack"
          }
        },
        "additionalProperties": false
      },
      "TaskPushMessage": {
        "type": "object",
        "required": [
          "type",
          "userId",
          "replay",
          "task",
          "product",
          "result"
        ],
        "additionalProperties": false,
        "properties": {
          "type": {
            "const": "task.updated"
          },
          "userId": {
            "type": "integer",
            "description": "Server-authenticated owner; never supplied by the subscribing client."
          },
          "replay": {
            "type": "boolean"
          },
          "task": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "taskId",
              "state"
            ],
            "properties": {
              "taskId": {
                "type": "string",
                "format": "uuid"
              },
              "uuid": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "state": {
                "$ref": "#/components/schemas/TaskState"
              },
              "updatedAt": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Server time formatted yyyy-MM-dd HH:mm:ss; not an ordering/version token."
              }
            }
          },
          "product": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "productCode"
            ],
            "properties": {
              "productCode": {
                "type": "string",
                "enum": [
                  "NORMAL_CAPTCHA",
                  "RECAPTCHA_V2",
                  "RECAPTCHA_V3",
                  "RECAPTCHA_V2_ENTERPRISE",
                  "RECAPTCHA_V3_ENTERPRISE",
                  "RECAPTCHA_ENTERPRISE",
                  "CLOUDFLARE_TURNSTILE",
                  "HCAPTCHA",
                  "ARKOSE",
                  "GEETEST",
                  "GEETEST_V4",
                  "CAPY_PUZZLE",
                  "KEYCAPTCHA",
                  "LEMIN",
                  "AMAZON",
                  "IMAGE_CAPTCHA",
                  "TEXT",
                  "AUDIO",
                  "ROTATE",
                  "GRID",
                  "CLICK",
                  "COORDINATES",
                  "DRAW_AROUND",
                  "DRAG_AND_DROP",
                  "BOUNDING_BOX",
                  "SLIDER_CAPTCHA",
                  "CYBERSIARA",
                  "MTCAPTCHA",
                  "DATADOME",
                  "FRIENDLY_CAPTCHA",
                  "CUTCAPTCHA",
                  "ATBCAPTCHA",
                  "TENCENT",
                  "PROSOPO",
                  "CAPTCHAFOX",
                  "VK_CAPTCHA",
                  "TEMU",
                  "ALTCHA",
                  "YIDUN_NE_CAPTCHA",
                  "BINANCE",
                  "HUNT",
                  "TSPD",
                  "BASILISK",
                  "IMPERVA",
                  "ALIBABA",
                  "YANDEX_SMARTCAPTCHA",
                  "RUSSIAN_CAPTCHA",
                  "CHINESE_CAPTCHA",
                  "NUMBER_CAPTCHA",
                  "MATH_CAPTCHA",
                  "CUSTOM"
                ]
              },
              "name": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "description": {
                "type": [
                  "string",
                  "null"
                ]
              }
            }
          },
          "result": {
            "type": "object",
            "description": "Product solution, empty before SUCCEEDED. No cost fields at any depth."
          },
          "failure": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "code": {
                "type": "string"
              },
              "nextAction": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "description": "Public failure diagnosis on FAILED or EXPIRED; absent/null otherwise."
          }
        },
        "example": {
          "type": "task.updated",
          "userId": 123,
          "replay": false,
          "task": {
            "taskId": "11111111-1111-4111-8111-111111111111",
            "uuid": "11111111-1111-4111-8111-111111111111",
            "state": "SUCCEEDED",
            "updatedAt": "2026-10-04 12:00:00"
          },
          "product": {
            "productCode": "TEXT",
            "name": "Text Captcha",
            "description": "Text question"
          },
          "result": {
            "text": "4"
          }
        }
      },
      "TaskFailure": {
        "type": "object",
        "required": [
          "code",
          "nextAction"
        ],
        "description": "Public diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.",
        "properties": {
          "code": {
            "type": "string",
            "enum": [
              "TASK_EXPIRED",
              "PROVIDER_INPUT_INVALID",
              "PROVIDER_UNSOLVABLE",
              "PROVIDER_UNAVAILABLE",
              "TASK_FAILED"
            ]
          },
          "nextAction": {
            "type": "string",
            "enum": [
              "RECAPTURE_CHALLENGE",
              "READ_PRODUCT_SCHEMA",
              "INSPECT_CHALLENGE",
              "RETRY_LATER"
            ]
          }
        }
      },
      "ProductSchemaData": {
        "type": "object",
        "required": [
          "productCode",
          "schema",
          "example",
          "integration",
          "workflowGuide"
        ],
        "properties": {
          "productCode": {
            "type": "string",
            "enum": [
              "NORMAL_CAPTCHA",
              "RECAPTCHA_V2",
              "RECAPTCHA_V3",
              "RECAPTCHA_V2_ENTERPRISE",
              "RECAPTCHA_V3_ENTERPRISE",
              "RECAPTCHA_ENTERPRISE",
              "CLOUDFLARE_TURNSTILE",
              "HCAPTCHA",
              "ARKOSE",
              "GEETEST",
              "GEETEST_V4",
              "CAPY_PUZZLE",
              "KEYCAPTCHA",
              "LEMIN",
              "AMAZON",
              "IMAGE_CAPTCHA",
              "TEXT",
              "AUDIO",
              "ROTATE",
              "GRID",
              "CLICK",
              "COORDINATES",
              "DRAW_AROUND",
              "DRAG_AND_DROP",
              "BOUNDING_BOX",
              "SLIDER_CAPTCHA",
              "CYBERSIARA",
              "MTCAPTCHA",
              "DATADOME",
              "FRIENDLY_CAPTCHA",
              "CUTCAPTCHA",
              "ATBCAPTCHA",
              "TENCENT",
              "PROSOPO",
              "CAPTCHAFOX",
              "VK_CAPTCHA",
              "TEMU",
              "ALTCHA",
              "YIDUN_NE_CAPTCHA",
              "BINANCE",
              "HUNT",
              "TSPD",
              "BASILISK",
              "IMPERVA",
              "ALIBABA",
              "YANDEX_SMARTCAPTCHA",
              "RUSSIAN_CAPTCHA",
              "CHINESE_CAPTCHA",
              "NUMBER_CAPTCHA",
              "MATH_CAPTCHA",
              "CUSTOM"
            ],
            "description": "Exact enabled product code obtained from GET /api/product/list.cgi."
          },
          "schema": {
            "type": "object",
            "description": "Standalone adapter JSON Schema with local references resolved. Validate only the adapter object, not the whole create request. Supports required, oneOf/anyOf/allOf, arrays, bounds and additionalProperties. No provider metadata. Descriptions are canonical source text and are not translated.",
            "additionalProperties": true
          },
          "example": {
            "type": "object",
            "description": "Minimal adapter example with required fields and the first conditional branch. Placeholders must be replaced with the current challenge.",
            "additionalProperties": true
          },
          "integration": {
            "type": "object",
            "required": [
              "workflows",
              "readiness",
              "resultKind",
              "resultGuide",
              "requirements",
              "inputSources",
              "resultContract",
              "targetAcceptanceVerified",
              "resultSchema"
            ],
            "properties": {
              "workflows": {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "HTTP_SUBMIT",
                    "BROWSER_RESULT",
                    "BROWSER_INTERACTION"
                  ]
                }
              },
              "readiness": {
                "type": "string",
                "enum": [
                  "CONDITIONAL",
                  "DOCUMENTATION_REQUIRED"
                ]
              },
              "resultKind": {
                "type": "string"
              },
              "resultGuide": {
                "type": "string"
              },
              "requirements": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "inputSources": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                }
              },
              "resultContract": {
                "type": "string",
                "enum": [
                  "DOCUMENTED_FIELDS",
                  "IMAGE_MODE_ONLY",
                  "UNDOCUMENTED"
                ]
              },
              "targetAcceptanceVerified": {
                "type": "boolean",
                "const": false
              },
              "resultSchema": {
                "type": "object",
                "additionalProperties": true
              },
              "indexBase": {
                "type": "integer"
              },
              "order": {
                "type": "string"
              }
            },
            "additionalProperties": true,
            "description": "Localized integration guide and result schema. DOCUMENTATION_REQUIRED means collect further documentation before a paid task. Workflows are conditional, not live acceptance guarantees."
          },
          "workflowGuide": {
            "type": "object",
            "required": [
              "title",
              "rules",
              "workflows",
              "completionStages",
              "stageNote",
              "failures",
              "labels"
            ],
            "properties": {
              "title": {
                "type": "string"
              },
              "rules": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "workflows": {
                "type": "array",
                "items": {
                  "type": "object",
                  "required": [
                    "id",
                    "title",
                    "precondition",
                    "steps"
                  ],
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "title": {
                      "type": "string"
                    },
                    "precondition": {
                      "type": "string"
                    },
                    "steps": {
                      "type": "string"
                    }
                  }
                }
              },
              "completionStages": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "stageNote": {
                "type": "string"
              },
              "failures": {
                "type": "array",
                "items": {
                  "type": "object",
                  "required": [
                    "code",
                    "nextAction",
                    "description"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "nextAction": {
                      "type": "string"
                    },
                    "description": {
                      "type": "string"
                    }
                  }
                }
              },
              "labels": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                }
              }
            },
            "additionalProperties": true
          }
        }
      },
      "ProductSchemaResponse": {
        "type": "object",
        "required": [
          "code",
          "msg",
          "data"
        ],
        "properties": {
          "code": {
            "type": "integer",
            "description": "0 for success; business failures usually return HTTP 200 with a nonzero code."
          },
          "msg": {
            "type": "string",
            "description": "Localized success/error message. Branch on code, never this text."
          },
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ProductSchemaData"
              },
              {
                "type": "null"
              }
            ]
          }
        }
      },
      "Adapter_HCAPTCHA": {
        "type": "object",
        "required": [
          "websiteURL",
          "websiteKey"
        ],
        "additionalProperties": false,
        "properties": {
          "websiteURL": {
            "type": "string",
            "minLength": 1,
            "description": "Full URL of the target page containing the current hCaptcha widget; not the hcaptcha.com iframe URL.",
            "x-description-key": "integration.hcaptcha.websiteURL"
          },
          "websiteKey": {
            "type": "string",
            "minLength": 1,
            "description": "Public hCaptcha sitekey from the current target widget data-sitekey or hcaptcha.render configuration. Never use a reCAPTCHA key or the account secret.",
            "x-description-key": "integration.hcaptcha.websiteKey"
          }
        },
        "x-provider-task-type": "HCaptchaTaskProxyless",
        "x-solution-example": {
          "gRecaptchaResponse": "EXAMPLE_HCAPTCHA_TOKEN"
        },
        "description": "HCAPTCHA input parameters. Read x-integration before creating a paid task.",
        "x-integration": {
          "workflows": [
            "HTTP_SUBMIT",
            "BROWSER_RESULT"
          ],
          "readiness": "CONDITIONAL",
          "resultKind": "TOKEN",
          "resultGuide": "Use solution.gRecaptchaResponse (or token when returned) with h-captcha-response and the callback required by the same target hCaptcha integration. The field name gRecaptchaResponse does not make this a Google token. Keep challenge/session bindings and check expiry, target verification and business completion. A token is not a transferable replacement challenge/answer pair.",
          "requirements": [
            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
            "Identify hCaptcha by its hcaptcha API/widget, not its visual resemblance to reCAPTCHA. Select enabled HCAPTCHA and inspect its schema. This initial native contract supports websiteURL and websiteKey only. Upstream MCP parameters are not automatically Nex Captcha parameters: rqdata/data, invisible, custom domain, userAgent and proxy inputs are not exposed here. If the target requires them, stop and report the missing capability; do not omit required context, guess fields, misuse IMPERVA/reCAPTCHA, or silently purchase GRID.",
            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
          ],
          "inputSources": {
            "websiteURL": "Full URL of the target page containing the current hCaptcha widget; not the hcaptcha.com iframe URL.",
            "websiteKey": "Public hCaptcha sitekey from the current target widget data-sitekey or hcaptcha.render configuration. Never use a reCAPTCHA key or the account secret."
          },
          "resultContract": "DOCUMENTED_FIELDS",
          "targetAcceptanceVerified": false,
          "resultSchema": {
            "type": "object",
            "properties": {
              "gRecaptchaResponse": {
                "type": "string",
                "minLength": 1
              },
              "token": {
                "type": "string",
                "minLength": 1
              }
            },
            "anyOf": [
              {
                "required": [
                  "gRecaptchaResponse"
                ]
              },
              {
                "required": [
                  "token"
                ]
              }
            ],
            "additionalProperties": true
          }
        }
      }
    },
    "parameters": {
      "AcceptLanguage": {
        "name": "Accept-Language",
        "in": "header",
        "required": false,
        "description": "Success and error messages use Accept-Language first (zh-CN, zh-TW or en-US; q weights supported). When absent or blank, use the API key owner's configured language. Unknown users, missing preferences and unsupported supplied languages default to en-US. X-Language, URL lang and X-I18n-Cache do not override OpenAPI responses. Machine-readable codes, states and solution values remain unchanged.",
        "schema": {
          "type": "string"
        },
        "example": "zh-CN, en-US;q=0.8"
      }
    }
  },
  "paths": {
    "/api/validator/create.cgi": {
      "post": {
        "summary": "创建验证任务",
        "description": "Create an asynchronous task using productCode and adapter; the response contains its ID and initial state. Authenticate using the apiKey HTTP header. JSON request bodies contain business parameters only; body and URL credentials are not used for REST authentication or language selection. Business errors return HTTP 200 with a nonzero code. Success and error messages use Accept-Language first (zh-CN, zh-TW or en-US; q weights supported), then the header API key owner's configured language, then en-US. X-Language, URL lang and X-I18n-Cache do not override responses. Machine-readable codes, states and solution values remain unchanged.\n\nProduct selection: Prefer the matching native CAPTCHA product and its token or paired challenge/proof result. Generic GRID is a fallback only when the native route is confirmed unavailable for the current challenge; capture, recognition and multi-round browser interaction may exceed target expiry. Transport/input errors alone do not justify fallback. SUCCEEDED is solver success, not target acceptance.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ValidatorCreateRequest"
              },
              "examples": {
                "recaptchaV2": {
                  "summary": "reCAPTCHA v2 示例",
                  "value": {
                    "productCode": "RECAPTCHA_V2",
                    "adapter": {
                      "websiteURL": "https://example.com/register",
                      "websiteKey": "6Lc..."
                    }
                  }
                },
                "normalCaptcha": {
                  "summary": "普通图片验证码示例",
                  "value": {
                    "productCode": "NORMAL_CAPTCHA",
                    "adapter": {
                      "body": "base64-or-text"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Business response. Inspect code (0 = success); do not use HTTP status alone.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "msg",
                    "data"
                  ],
                  "properties": {
                    "code": {
                      "type": "integer"
                    },
                    "msg": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Localized success or error message. Follows Accept-Language, then the API key owner's configured language, then en-US. Do not branch on message text; use code."
                    },
                    "data": {
                      "anyOf": [
                        {
                          "$ref": "#/components/schemas/ValidatorCreateData"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    }
                  }
                },
                "examples": {
                  "invalidKey": {
                    "value": {
                      "code": -1317,
                      "msg": "Invalid API key.",
                      "data": null
                    }
                  },
                  "created": {
                    "summary": "Example with Accept-Language: en-US",
                    "value": {
                      "code": 0,
                      "msg": "Success",
                      "data": {
                        "taskId": "11111111-1111-4111-8111-111111111111",
                        "productCode": "RECAPTCHA_V2",
                        "state": "CREATED",
                        "uuid": null
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON or HTTP request rejected by Spring. The error message follows the same header-based language policy.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "message"
                  ],
                  "properties": {
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "description": "Localized HTTP error message using the same Accept-Language / user preference policy."
                    }
                  }
                }
              }
            }
          },
          "default": {
            "description": "Transport/server failure. Client must handle non-JSON responses."
          }
        },
        "operationId": "createTask",
        "security": [
          {
            "apiKey": []
          },
          {
            "alternateApiKey": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptLanguage"
          }
        ]
      }
    },
    "/api/validator/query.cgi": {
      "post": {
        "summary": "查询验证任务",
        "description": "Query a task using taskId; solution is available after solver success. Authenticate using the apiKey HTTP header. JSON request bodies contain business parameters only; body and URL credentials are not used for REST authentication or language selection. Business errors return HTTP 200 with a nonzero code. Success and error messages use Accept-Language first (zh-CN, zh-TW or en-US; q weights supported), then the header API key owner's configured language, then en-US. X-Language, URL lang and X-I18n-Cache do not override responses. Machine-readable codes, states and solution values remain unchanged.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ValidatorQueryRequest"
              },
              "example": {
                "taskId": "11111111-1111-4111-8111-111111111111"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Business response. Inspect code (0 = success); do not use HTTP status alone.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "msg",
                    "data"
                  ],
                  "properties": {
                    "code": {
                      "type": "integer"
                    },
                    "msg": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Localized success or error message. Follows Accept-Language, then the API key owner's configured language, then en-US. Do not branch on message text; use code."
                    },
                    "data": {
                      "anyOf": [
                        {
                          "$ref": "#/components/schemas/ValidatorQueryData"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    }
                  }
                },
                "examples": {
                  "invalidKey": {
                    "value": {
                      "code": -1317,
                      "msg": "Invalid API key.",
                      "data": null
                    }
                  },
                  "processing": {
                    "summary": "Example with Accept-Language: en-US",
                    "value": {
                      "code": 0,
                      "msg": "Success",
                      "data": {
                        "taskId": "11111111-1111-4111-8111-111111111111",
                        "productCode": "RECAPTCHA_V2",
                        "state": "PROCESSING",
                        "solution": {}
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON or HTTP request rejected by Spring. The error message follows the same header-based language policy.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "message"
                  ],
                  "properties": {
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "description": "Localized HTTP error message using the same Accept-Language / user preference policy."
                    }
                  }
                }
              }
            }
          },
          "default": {
            "description": "Transport/server failure. Client must handle non-JSON responses."
          }
        },
        "operationId": "queryTask",
        "security": [
          {
            "apiKey": []
          },
          {
            "alternateApiKey": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptLanguage"
          }
        ]
      }
    },
    "/socket/task.cgi": {
      "get": {
        "operationId": "subscribeTaskResults",
        "summary": "Upgrade to the authenticated task WebSocket on the same Tomcat port",
        "description": "Preferred delivery for every committed task state change from API and MCP. Connect with the apiKey handshake HTTP header and wait for socket.ready BEFORE creating a task. Match task.taskId to REST taskId or MCP id; consume result on SUCCEEDED and failure on FAILED/EXPIRED. Use query.cgi or get_task only if sockets are unavailable, disconnected or an update is missing. API keys never belong in URLs. Native browser WebSocket uses the login cookie because it cannot set custom headers. A solver success does not prove target acceptance.",
        "security": [
          {
            "apiKey": []
          },
          {
            "alternateApiKey": []
          },
          {
            "sessionCookie": []
          },
          {
            "sessionToken": []
          },
          {
            "sessionBearer": []
          }
        ],
        "responses": {
          "101": {
            "description": "WebSocket protocol upgrade. Credentials are checked after upgrade; then socket.ready or close 4003."
          },
          "403": {
            "description": "Origin policy rejected the handshake."
          }
        },
        "x-websocket": {
          "subprotocol": null,
          "clientMessages": [
            {
              "$ref": "#/components/schemas/SocketHeartbeat"
            }
          ],
          "serverMessages": [
            {
              "$ref": "#/components/schemas/SocketReady"
            },
            {
              "$ref": "#/components/schemas/SocketHeartbeatAck"
            },
            {
              "$ref": "#/components/schemas/TaskPushMessage"
            }
          ],
          "heartbeatSeconds": 20,
          "idleSeconds": 35,
          "replayLimit": 20,
          "closeCodes": {
            "1001": "Server shutting down",
            "4003": "Authentication missing, invalid, expired or revoked",
            "4500": "Session idle or unreliable",
            "4009": "Previous connection for this user ID was replaced; stop automatic reconnect on the replaced client",
            "1013": "Instance or replay/send capacity reached; retry with backoff"
          },
          "examples": {
            "browser": "/openapi/examples/task-websocket.js",
            "python": "/openapi/examples/task_websocket.py",
            "java": "/openapi/examples/TaskWebSocketExample.java"
          },
          "priority": "preferred",
          "idleCheckSeconds": 10,
          "delivery": "Committed state snapshots, best effort; replay covers the latest 20 terminal tasks, not durable history. Clients must deduplicate taskId, ignore late nonterminal frames after a terminal frame, reconnect with backoff and query missing results.",
          "limits": {
            "connectionsPerInstanceMaximum": 256,
            "pendingMessagesPerConnection": 64,
            "pendingUtf8BytesPerConnection": 262144,
            "frameUtf8Bytes": 262144,
            "concurrentWritersMaximum": 256,
            "concurrentReplaysMaximum": 4,
            "blockingSendTimeoutMillis": 10000,
            "peerCloseTimeoutMillis": 5000
          },
          "binding": "One current connection per user ID per instance; a new connection replaces the previous one."
        }
      }
    },
    "/api/product/list.cgi": {
      "get": {
        "operationId": "listProducts",
        "summary": "List enabled products",
        "security": [],
        "responses": {
          "200": {
            "description": "Enabled public product catalogue. Internal adapter names are not included.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "msg",
                    "data"
                  ],
                  "properties": {
                    "code": {
                      "type": "integer"
                    },
                    "msg": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Localized success message using Accept-Language, then the API key owner language, then en-US."
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "productCode": {
                            "type": "string"
                          },
                          "name": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "description": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "price": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "description": "Retail price per task in USD; not upstream cost."
                          },
                          "iconBase64": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "sortOrder": {
                            "type": [
                              "integer",
                              "null"
                            ]
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptLanguage"
          }
        ],
        "description": "Success and error messages use Accept-Language first (zh-CN, zh-TW or en-US; q weights supported). When absent or blank, use the API key owner's configured language. Unknown users, missing preferences and unsupported supplied languages default to en-US. X-Language, URL lang and X-I18n-Cache do not override OpenAPI responses. Machine-readable codes, states and solution values remain unchanged. This endpoint is public; an apiKey or X-API-Key header is optional and only needed to use an account language preference when Accept-Language is absent."
      }
    },
    "/api/product/schema.cgi": {
      "get": {
        "operationId": "getProductSchema",
        "summary": "Get an enabled product input schema and integration contract",
        "description": "Free, public, read-only equivalent of MCP get_product_schema. No task creation, billing or upstream call. Pass an exact enabled productCode from listProducts. data.schema describes only adapter, data.example contains placeholders. Integration and workflowGuide text plus success/error messages use Accept-Language first, then the optional header API key owner language, then en-US; field names/enums/schema descriptions remain canonical. Do not use URL lang, X-Language or X-I18n-Cache. Unknown codes return -1100; missing/blank codes -1101; disabled/missing products -1008. Business errors return HTTP 200. Examples are not usable challenges.\n\nProduct selection: Prefer the matching native CAPTCHA product and its token or paired challenge/proof result. Generic GRID is a fallback only when the native route is confirmed unavailable for the current challenge; capture, recognition and multi-round browser interaction may exceed target expiry. Transport/input errors alone do not justify fallback. SUCCEEDED is solver success, not target acceptance.",
        "security": [],
        "parameters": [
          {
            "name": "productCode",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "NORMAL_CAPTCHA",
                "RECAPTCHA_V2",
                "RECAPTCHA_V3",
                "RECAPTCHA_V2_ENTERPRISE",
                "RECAPTCHA_V3_ENTERPRISE",
                "RECAPTCHA_ENTERPRISE",
                "CLOUDFLARE_TURNSTILE",
                "HCAPTCHA",
                "ARKOSE",
                "GEETEST",
                "GEETEST_V4",
                "CAPY_PUZZLE",
                "KEYCAPTCHA",
                "LEMIN",
                "AMAZON",
                "IMAGE_CAPTCHA",
                "TEXT",
                "AUDIO",
                "ROTATE",
                "GRID",
                "CLICK",
                "COORDINATES",
                "DRAW_AROUND",
                "DRAG_AND_DROP",
                "BOUNDING_BOX",
                "SLIDER_CAPTCHA",
                "CYBERSIARA",
                "MTCAPTCHA",
                "DATADOME",
                "FRIENDLY_CAPTCHA",
                "CUTCAPTCHA",
                "ATBCAPTCHA",
                "TENCENT",
                "PROSOPO",
                "CAPTCHAFOX",
                "VK_CAPTCHA",
                "TEMU",
                "ALTCHA",
                "YIDUN_NE_CAPTCHA",
                "BINANCE",
                "HUNT",
                "TSPD",
                "BASILISK",
                "IMPERVA",
                "ALIBABA",
                "YANDEX_SMARTCAPTCHA",
                "RUSSIAN_CAPTCHA",
                "CHINESE_CAPTCHA",
                "NUMBER_CAPTCHA",
                "MATH_CAPTCHA",
                "CUSTOM"
              ]
            },
            "example": "GRID"
          },
          {
            "$ref": "#/components/parameters/AcceptLanguage"
          }
        ],
        "responses": {
          "200": {
            "description": "Inspect code. Enabled product metadata on success, null data on business errors.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductSchemaResponse"
                },
                "examples": {
                  "grid": {
                    "value": {
                      "code": 0,
                      "msg": "Success",
                      "data": {
                        "productCode": "GRID",
                        "schema": {
                          "type": "object",
                          "description": "GRID input parameters. Read x-integration before creating a paid task. Fallback only when the matching native route is confirmed unavailable; latency and multiple rounds may exceed the target challenge deadline.",
                          "required": [
                            "body"
                          ],
                          "properties": {
                            "body": {
                              "type": "string",
                              "description": "Base64-encoded image or audio content.",
                              "minLength": 1
                            },
                            "comment": {
                              "type": "string",
                              "description": "Question or instructions for solving the challenge.",
                              "minLength": 1,
                              "examples": [
                                "Select all images containing stairs."
                              ]
                            },
                            "rows": {
                              "type": "integer",
                              "description": "Actual number of rows in the submitted current grid.",
                              "minimum": 1,
                              "examples": [
                                3
                              ]
                            },
                            "columns": {
                              "type": "integer",
                              "description": "Actual number of columns in the submitted current grid.",
                              "minimum": 1,
                              "examples": [
                                3
                              ]
                            },
                            "imgInstructions": {
                              "type": "string",
                              "description": "Optional Base64 instruction image, at most 100 kB. Supply comment or imgInstructions; imgType requires the original English comment and original image files.",
                              "minLength": 1,
                              "examples": [
                                "BASE64_INSTRUCTION_IMAGE"
                              ]
                            },
                            "imgType": {
                              "type": "string",
                              "description": "Optional upstream Computer Vision mode: recaptcha or funcaptcha. Do not label a generic/custom image as one of these types; original English comment and original image files are required.",
                              "enum": [
                                "recaptcha",
                                "funcaptcha"
                              ],
                              "minLength": 1,
                              "examples": [
                                "recaptcha"
                              ]
                            },
                            "previousId": {
                              "type": "string",
                              "description": "Optional upstream task ID for the same continuing challenge, only if known. This is not a Nex Captcha platform UUID; omit when no upstream ID is available. Never use a different or expired challenge.",
                              "minLength": 1,
                              "pattern": "^[0-9]+$",
                              "examples": [
                                "123456789"
                              ]
                            },
                            "minClicks": {
                              "type": "integer",
                              "description": "Optional minClicks bound; cannot exceed rows*columns when dimensions are supplied. minClicks cannot exceed maxClicks.",
                              "minimum": 0,
                              "examples": [
                                1
                              ]
                            },
                            "maxClicks": {
                              "type": "integer",
                              "description": "Optional maxClicks bound; cannot exceed rows*columns when dimensions are supplied. minClicks cannot exceed maxClicks.",
                              "minimum": 0,
                              "examples": [
                                9
                              ]
                            },
                            "canNoAnswer": {
                              "type": "integer",
                              "description": "0 or 1. Set 1 only when the actual task permits no matching images; do not use it to hide recognition failures.",
                              "enum": [
                                0,
                                1
                              ],
                              "examples": [
                                0
                              ]
                            }
                          },
                          "additionalProperties": false,
                          "anyOf": [
                            {
                              "required": [
                                "comment"
                              ]
                            },
                            {
                              "required": [
                                "imgInstructions"
                              ]
                            }
                          ],
                          "allOf": [
                            {
                              "if": {
                                "required": [
                                  "imgType"
                                ]
                              },
                              "then": {
                                "required": [
                                  "comment"
                                ]
                              }
                            }
                          ]
                        },
                        "example": {
                          "body": "BASE64_CONTENT",
                          "comment": "Select all images containing stairs."
                        },
                        "integration": {
                          "workflows": [
                            "BROWSER_INTERACTION"
                          ],
                          "readiness": "CONDITIONAL",
                          "resultKind": "GRID_CELLS",
                          "resultGuide": "Fallback only after confirming the matching native route unavailable. solution.click contains 1-based row-major tile numbers. Use current unchanged image/instructions and verify each subsequent round. Optional dimensions, instruction image and recognition settings do not make the result a native hCaptcha/reCAPTCHA token. previousId, when available, is an upstream ID, never a platform UUID. No fixed latency or target acceptance is guaranteed.",
                          "requirements": [
                            "GRID is a fallback only when no usable matching native product/integration exists, or diagnosis confirms that the native route cannot be used for this challenge. First inspect parameters, session bindings and expiry. HTTP 403, timeout or invalid input alone is not a fallback decision. GRID still requires a real current grid image, its original instructions and browser interaction capability; if those are unavailable, stop and report the blocker.",
                            "GRID has variable end-to-end latency from image capture, solver queue/recognition, polling and browser clicks; dynamic tiles and further rounds add work. It may exceed a short-lived target challenge deadline, so it is not the default for time-sensitive flows. No fixed solve time or target acceptance is guaranteed. Capture just before solving, check freshness again before applying, and discard answers after challenge expiry or image changes. Do not reuse expired answers or automatically create another paid task.",
                            "Collect fresh values from the same target/challenge. Respect product-specific hostname, action, challenge/session, IP, User-Agent and expiry requirements; these are not universally interchangeable. Apply returned cookies only to their matching domains.",
                            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields."
                          ],
                          "inputSources": {
                            "body": "Obtain the current challenge media from the target in the field format. For images, preserve original dimensions/order and crop to the challenge, not unrelated page content. For AUDIO, use the actual audio content.",
                            "comment": "Use the actual question/instructions from the current challenge. Do not append agent commands such as Return coordinates. This field is semantically necessary for instruction-dependent tasks.",
                            "rows": "Actual number of rows in the submitted current grid.",
                            "columns": "Actual number of columns in the submitted current grid.",
                            "imgInstructions": "Optional Base64 instruction image, at most 100 kB. Supply comment or imgInstructions; imgType requires the original English comment and original image files.",
                            "imgType": "Optional upstream Computer Vision mode: recaptcha or funcaptcha. Do not label a generic/custom image as one of these types; original English comment and original image files are required.",
                            "previousId": "Optional upstream task ID for the same continuing challenge, only if known. This is not a Nex Captcha platform UUID; omit when no upstream ID is available. Never use a different or expired challenge.",
                            "minClicks": "Optional minClicks bound; cannot exceed rows*columns when dimensions are supplied. minClicks cannot exceed maxClicks.",
                            "maxClicks": "Optional maxClicks bound; cannot exceed rows*columns when dimensions are supplied. minClicks cannot exceed maxClicks.",
                            "canNoAnswer": "0 or 1. Set 1 only when the actual task permits no matching images; do not use it to hide recognition failures."
                          },
                          "resultContract": "DOCUMENTED_FIELDS",
                          "targetAcceptanceVerified": false,
                          "indexBase": 1,
                          "order": "ROW_MAJOR",
                          "resultSchema": {
                            "type": "object",
                            "properties": {
                              "click": {
                                "type": "array",
                                "items": {
                                  "type": "integer"
                                }
                              }
                            },
                            "additionalProperties": true
                          }
                        },
                        "workflowGuide": {
                          "title": "Choose an integration workflow",
                          "rules": [
                            "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
                            "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
                            "GRID is a fallback only when no usable matching native product/integration exists, or diagnosis confirms that the native route cannot be used for this challenge. First inspect parameters, session bindings and expiry. HTTP 403, timeout or invalid input alone is not a fallback decision. GRID still requires a real current grid image, its original instructions and browser interaction capability; if those are unavailable, stop and report the blocker.",
                            "GRID has variable end-to-end latency from image capture, solver queue/recognition, polling and browser clicks; dynamic tiles and further rounds add work. It may exceed a short-lived target challenge deadline, so it is not the default for time-sensitive flows. No fixed solve time or target acceptance is guaranteed. Capture just before solving, check freshness again before applying, and discard answers after challenge expiry or image changes. Do not reuse expired answers or automatically create another paid task.",
                            "Use the challenge and integration parameters issued by the target. A solver does not issue a freely transferable challenge/answer pair. Replacing a widget or image does not replace the server challenge.",
                            "For MCP creation, retry with the same requestId and identical parameters. A changed challenge is a new task with a new requestId and another charge. Follow nextPollAfterSeconds; do not create tasks to poll. The REST creation body does not have a requestId field.",
                            "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields.",
                            "SUCCEEDED means a solver result is available. Separately confirm that the target accepts the challenge and that the requested business operation completes. The solver cannot observe those two outcomes.",
                            "For hCaptcha use enabled native HCAPTCHA, then get its schema. If absent from the current catalogue, report unavailable. Do not substitute RECAPTCHA_V2, IMPERVA, CUSTOM or GRID based on a checkbox or image grid. Check the native contract for the required target context before paying."
                          ],
                          "workflows": [
                            {
                              "id": "HTTP_SUBMIT",
                              "title": "HTTP submission",
                              "precondition": "The target operation and challenge submission can be completed over HTTP with the same required session context. A solver HTTP API alone does not establish this.",
                              "steps": "Obtain the target challenge and parameters; create and poll the matching solver task; submit the result with the target request; inspect target validation and business outcome."
                            },
                            {
                              "id": "BROWSER_RESULT",
                              "title": "Apply a result in the browser",
                              "precondition": "Your browser tool can read the required current integration parameters and apply this product result through the target integration. Browser capability is separate from solver capability.",
                              "steps": "Read current native product parameters; solve; fill the expected token field/callback, or apply matching challenge identifier and proof/answer fields together as required; submit normally; inspect target validation and business outcome. Replacing an image alone is not integration."
                            },
                            {
                              "id": "BROWSER_INTERACTION",
                              "title": "Browser image interaction",
                              "precondition": "The current challenge matches the selected image product. Your browser tool can capture the correct image and execute the required clicks, rotation or drag actions.",
                              "steps": "Capture the current challenge and original instructions; solve; map the answer to the current image; interact; inspect for replacement images or another round; verify the target outcome."
                            }
                          ],
                          "completionStages": [
                            "SOLVER_SUCCEEDED",
                            "CHALLENGE_ACCEPTED",
                            "BUSINESS_COMPLETED"
                          ],
                          "stageNote": "SUCCEEDED means a solver result is available. Separately confirm that the target accepts the challenge and that the requested business operation completes. The solver cannot observe those two outcomes.",
                          "failures": [
                            {
                              "code": "INVALID_INPUT",
                              "nextAction": "READ_PRODUCT_SCHEMA",
                              "description": "Collect missing/correct inputs; do not retry unchanged invalid input or switch to GRID."
                            },
                            {
                              "code": "TRANSPORT_OR_WAF",
                              "nextAction": "INSPECT_REQUEST_CHAIN",
                              "description": "Inspect the HTTP/network/WAF response. A 403 is not a solver result; if delivery is uncertain, retry identical creation with the same requestId."
                            },
                            {
                              "code": "TASK_EXPIRED",
                              "nextAction": "RECAPTURE_CHALLENGE",
                              "description": "Check the current challenge and expiry. Only create a new paid task if still needed."
                            },
                            {
                              "code": "PROVIDER_INPUT_INVALID",
                              "nextAction": "READ_PRODUCT_SCHEMA",
                              "description": "The provider rejected input. Check the product, current parameters and instructions."
                            },
                            {
                              "code": "PROVIDER_UNSOLVABLE",
                              "nextAction": "INSPECT_CHALLENGE",
                              "description": "Inspect image quality/instructions and whether the challenge is current before deciding on another paid attempt."
                            },
                            {
                              "code": "PROVIDER_UNAVAILABLE",
                              "nextAction": "RETRY_LATER",
                              "description": "Service availability issue; do not change the CAPTCHA product solely for this reason."
                            },
                            {
                              "code": "TASK_FAILED",
                              "nextAction": "INSPECT_CHALLENGE",
                              "description": "No specific public cause is known. Report the task ID and inspect context; do not claim target rejection or infer an unsupported product."
                            },
                            {
                              "code": "TARGET_REJECTED",
                              "nextAction": "CHECK_BINDING_AND_EXPIRY",
                              "description": "Observed by the caller, not inferred from solver state. Check target response, challenge binding and expiry."
                            },
                            {
                              "code": "BROWSER_APPLICATION_UNSUPPORTED",
                              "nextAction": "CHANGE_EXECUTION_ENVIRONMENT",
                              "description": "The browser cannot apply the result. Report that capability limit instead of calling the solver product unavailable."
                            }
                          ],
                          "labels": {
                            "result": "Result and application",
                            "requirements": "Requirements",
                            "sources": "Input sources",
                            "workflow": "Conditional workflows",
                            "unknown": "Contract not yet documented",
                            "failure": "Failure handling",
                            "stages": "Solver success → target acceptance → business completion",
                            "field": "Field",
                            "failureCode": "Failure code",
                            "failureObject": "Public diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.",
                            "action": "Next action"
                          }
                        }
                      }
                    }
                  },
                  "invalidProduct": {
                    "value": {
                      "code": -1100,
                      "msg": "Invalid parameters",
                      "data": null
                    }
                  },
                  "missingProduct": {
                    "value": {
                      "code": -1101,
                      "msg": "Required parameters missing",
                      "data": null
                    }
                  },
                  "unavailableProduct": {
                    "value": {
                      "code": -1008,
                      "msg": "Data not found",
                      "data": null
                    }
                  }
                }
              }
            }
          },
          "default": {
            "description": "HTTP/network/WAF failures may not be JSON; handle separately from business code."
          }
        }
      }
    }
  },
  "x-integration-guide": {
    "title": "Choose an integration workflow",
    "rules": [
      "Prefer the product-specific (native) CAPTCHA integration over generic GRID. Identify the actual product/version and read its schema/guide before choosing. Use HTTP_SUBMIT when the target supports it, otherwise BROWSER_RESULT when the browser can apply the native result. Image grids on screen do not by themselves mean the product is GRID. Collect real inputs; missing inputs are a blocker, not permission to guess.",
      "Apply a native result through the matching target integration: fill the expected token response field/callback, or use the returned challenge identifier and proof/answer fields together where that product requires them. Preserve the target session and bindings. Do not mix old and new challenge fields, replace only a picture, or assume the solver issues an unrelated transferable challenge/answer pair.",
      "GRID is a fallback only when no usable matching native product/integration exists, or diagnosis confirms that the native route cannot be used for this challenge. First inspect parameters, session bindings and expiry. HTTP 403, timeout or invalid input alone is not a fallback decision. GRID still requires a real current grid image, its original instructions and browser interaction capability; if those are unavailable, stop and report the blocker.",
      "GRID has variable end-to-end latency from image capture, solver queue/recognition, polling and browser clicks; dynamic tiles and further rounds add work. It may exceed a short-lived target challenge deadline, so it is not the default for time-sensitive flows. No fixed solve time or target acceptance is guaranteed. Capture just before solving, check freshness again before applying, and discard answers after challenge expiry or image changes. Do not reuse expired answers or automatically create another paid task.",
      "Use the challenge and integration parameters issued by the target. A solver does not issue a freely transferable challenge/answer pair. Replacing a widget or image does not replace the server challenge.",
      "For MCP creation, retry with the same requestId and identical parameters. A changed challenge is a new task with a new requestId and another charge. Follow nextPollAfterSeconds; do not create tasks to poll. The REST creation body does not have a requestId field.",
      "Examples are placeholders, not runnable challenges. Documented result fields are not proof of target acceptance or a live availability test. Do not send unsupported fields.",
      "SUCCEEDED means a solver result is available. Separately confirm that the target accepts the challenge and that the requested business operation completes. The solver cannot observe those two outcomes.",
      "For hCaptcha use enabled native HCAPTCHA, then get its schema. If absent from the current catalogue, report unavailable. Do not substitute RECAPTCHA_V2, IMPERVA, CUSTOM or GRID based on a checkbox or image grid. Check the native contract for the required target context before paying."
    ],
    "workflows": [
      {
        "id": "HTTP_SUBMIT",
        "title": "HTTP submission",
        "precondition": "The target operation and challenge submission can be completed over HTTP with the same required session context. A solver HTTP API alone does not establish this.",
        "steps": "Obtain the target challenge and parameters; create and poll the matching solver task; submit the result with the target request; inspect target validation and business outcome."
      },
      {
        "id": "BROWSER_RESULT",
        "title": "Apply a result in the browser",
        "precondition": "Your browser tool can read the required current integration parameters and apply this product result through the target integration. Browser capability is separate from solver capability.",
        "steps": "Read current native product parameters; solve; fill the expected token field/callback, or apply matching challenge identifier and proof/answer fields together as required; submit normally; inspect target validation and business outcome. Replacing an image alone is not integration."
      },
      {
        "id": "BROWSER_INTERACTION",
        "title": "Browser image interaction",
        "precondition": "The current challenge matches the selected image product. Your browser tool can capture the correct image and execute the required clicks, rotation or drag actions.",
        "steps": "Capture the current challenge and original instructions; solve; map the answer to the current image; interact; inspect for replacement images or another round; verify the target outcome."
      }
    ],
    "completionStages": [
      "SOLVER_SUCCEEDED",
      "CHALLENGE_ACCEPTED",
      "BUSINESS_COMPLETED"
    ],
    "stageNote": "SUCCEEDED means a solver result is available. Separately confirm that the target accepts the challenge and that the requested business operation completes. The solver cannot observe those two outcomes.",
    "failures": [
      {
        "code": "INVALID_INPUT",
        "nextAction": "READ_PRODUCT_SCHEMA",
        "description": "Collect missing/correct inputs; do not retry unchanged invalid input or switch to GRID."
      },
      {
        "code": "TRANSPORT_OR_WAF",
        "nextAction": "INSPECT_REQUEST_CHAIN",
        "description": "Inspect the HTTP/network/WAF response. A 403 is not a solver result; if delivery is uncertain, retry identical creation with the same requestId."
      },
      {
        "code": "TASK_EXPIRED",
        "nextAction": "RECAPTURE_CHALLENGE",
        "description": "Check the current challenge and expiry. Only create a new paid task if still needed."
      },
      {
        "code": "PROVIDER_INPUT_INVALID",
        "nextAction": "READ_PRODUCT_SCHEMA",
        "description": "The provider rejected input. Check the product, current parameters and instructions."
      },
      {
        "code": "PROVIDER_UNSOLVABLE",
        "nextAction": "INSPECT_CHALLENGE",
        "description": "Inspect image quality/instructions and whether the challenge is current before deciding on another paid attempt."
      },
      {
        "code": "PROVIDER_UNAVAILABLE",
        "nextAction": "RETRY_LATER",
        "description": "Service availability issue; do not change the CAPTCHA product solely for this reason."
      },
      {
        "code": "TASK_FAILED",
        "nextAction": "INSPECT_CHALLENGE",
        "description": "No specific public cause is known. Report the task ID and inspect context; do not claim target rejection or infer an unsupported product."
      },
      {
        "code": "TARGET_REJECTED",
        "nextAction": "CHECK_BINDING_AND_EXPIRY",
        "description": "Observed by the caller, not inferred from solver state. Check target response, challenge binding and expiry."
      },
      {
        "code": "BROWSER_APPLICATION_UNSUPPORTED",
        "nextAction": "CHANGE_EXECUTION_ENVIRONMENT",
        "description": "The browser cannot apply the result. Report that capability limit instead of calling the solver product unavailable."
      }
    ],
    "labels": {
      "result": "Result and application",
      "requirements": "Requirements",
      "sources": "Input sources",
      "workflow": "Conditional workflows",
      "unknown": "Contract not yet documented",
      "failure": "Failure handling",
      "stages": "Solver success → target acceptance → business completion",
      "field": "Field",
      "failureCode": "Failure code",
      "failureObject": "Public diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.",
      "action": "Next action"
    }
  }
}
