Nex Captcha

API REFERENCE / V1

API documentation

Create verification tasks with your API key, receive results through WebSocket, or recover results with the query API.

51Products
5Endpoints
JSONData format

Choose an integration workflow

  • 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.
HTTP_SUBMIT

HTTP submission

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.

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.

BROWSER_RESULT

Apply a result in the browser

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.

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.

BROWSER_INTERACTION

Browser image interaction

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.

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.

Solver success → target acceptance → business completion

Failure handling
Failure codeNext action
INVALID_INPUTREAD_PRODUCT_SCHEMA

Collect missing/correct inputs; do not retry unchanged invalid input or switch to GRID.

TRANSPORT_OR_WAFINSPECT_REQUEST_CHAIN

Inspect the HTTP/network/WAF response. A 403 is not a solver result; if delivery is uncertain, retry identical creation with the same requestId.

TASK_EXPIREDRECAPTURE_CHALLENGE

Check the current challenge and expiry. Only create a new paid task if still needed.

PROVIDER_INPUT_INVALIDREAD_PRODUCT_SCHEMA

The provider rejected input. Check the product, current parameters and instructions.

PROVIDER_UNSOLVABLEINSPECT_CHALLENGE

Inspect image quality/instructions and whether the challenge is current before deciding on another paid attempt.

PROVIDER_UNAVAILABLERETRY_LATER

Service availability issue; do not change the CAPTCHA product solely for this reason.

TASK_FAILEDINSPECT_CHALLENGE

No specific public cause is known. Report the task ID and inspect context; do not claim target rejection or infer an unsupported product.

TARGET_REJECTEDCHECK_BINDING_AND_EXPIRY

Observed by the caller, not inferred from solver state. Check target response, challenge binding and expiry.

BROWSER_APPLICATION_UNSUPPORTEDCHANGE_EXECUTION_ENVIRONMENT

The browser cannot apply the result. Report that capability limit instead of calling the solver product unavailable.

01 / AUTHENTICATION

API Key

For task creation and queries, send the API key in the apiKey HTTP header. JSON request bodies contain business parameters only.

Request headersTypeRequiredDescription
apiKeystringYesRequired for task creation and queries; the public product catalogue needs no authentication. Do not place it in JSON bodies or URLs.
Content-TypestringYesapplication/json
Accept-LanguagestringNozh-CN, zh-TW or en-US; q weights are supported. When absent, use the header API key owner's language preference.
HTTP
Content-Type: application/json
apiKey: YOUR_API_KEY
Accept-Language: en-US

Success and error messages use Accept-Language first. When absent or blank, use the header API key owner's configured language. Unknown users or unsupported languages default to en-US. X-Language, URL lang and X-I18n-Cache do not override OpenAPI responses. States, product codes and solution values are unchanged.

PRODUCT SCHEMA / DISCOVERY

Product schema

GET/api/product/schema.cgi?productCode=GRID

Free public endpoint sharing the MCP get_product_schema definition. Discover enabled products, then retrieve their input schema, example, result contract and workflows. This query never creates or charges a task.

Request example

HTTP
GET /api/product/schema.cgi?productCode=GRID
Accept-Language: en-US

Response example

JSON
{
  "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"
      }
    }
  }
}
Complete response example (JSON)

Request parameters

FieldTypeRequiredDescription
productCodestringYesRequired exact, case-sensitive product code from the catalogue. No request body. API keys belong only in headers and are optional here for account language preferences.

Response parameters

FieldTypeDescription
data.productCodestringProduct code matching the adapter parameters.
data.schemaobjectJSON Schema for adapter only, including required fields, conditional branches, types and value bounds.
data.exampleobjectMinimal placeholder parameters; replace with actual values from the current challenge.
data.integrationobjectProduct input sources, conditional workflows, result schema, application guide and limitations.
data.workflowGuideobjectShared integration workflows, completion stages and failure handling.

HTTP business responses contain code, msg and data; code 0 means success. WebSocket uses a separate message structure.

Messages and integration text use Accept-Language, then the header key owner language, then en-US. Parameter names, enums, original schema descriptions and example values remain canonical. Honor full JSON Schema constraints such as required and oneOf, not just required fields.

Check business code: 0 success, -1101 missing code, -1100 invalid code, -1008 missing/disabled product. data is null on errors. DOCUMENTATION_REQUIRED means obtain further documentation before automatically creating paid tasks.

Complete integration manual

02 / CREATE TASK

Create task

POST/api/validator/create.cgi

Choose a product with productCode and provide its product-specific fields in adapter.

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "RECAPTCHA_V2", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "websiteURL": "https://example.com/register", // 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": "YOUR_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": "YOUR_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": "YOUR_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": false, // 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": 0.3, // Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.
    "userAgent": "YOUR_BROWSER_USER_AGENT", // Read the actual User-Agent used to obtain this challenge; preserve it when the product requires matching.
    "isInvisible": false, // 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": "challenge_cookie=CURRENT_VALUE", // 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": "http", // 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": "YOUR_PROXY_HOST", // 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": 8080, // Proxy TCP port, integer 1 to 65535; required only when any proxy parameter is supplied.
    "proxyLogin": "YOUR_PROXYLOGIN", // Optional proxy authentication username from the caller configured proxy; never invent credentials.
    "proxyPassword": "YOUR_PROXYPASSWORD", // Optional proxy authentication password from the same configured proxy.
    "recaptchaDataSValue": "CURRENT_DATA_S_VALUE" // 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.
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/create.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "uuid": null, // Business UUID in the creation response; null if unset.
    "productCode": "RECAPTCHA_V2", // Product code matching the adapter parameters.
    "state": "CREATED" // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
  }
}

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.websiteURLstringYesRead from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.
adapter.websiteKeystringYesRead from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.
adapter.pageActionstringNoActual 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.
adapter.apiDomainstringNoRead from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.
adapter.isEnterprisebooleanNoFor 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.
adapter.minScorenumberNoSet according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.
adapter.userAgentstringNoRead the actual User-Agent used to obtain this challenge; preserve it when the product requires matching.
adapter.isInvisiblebooleanNoRead from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.
adapter.cookiesstringNoOptional 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.
adapter.proxyTypestringNoOptional 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.
adapter.proxyAddressstringNoReachable 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.
adapter.proxyPortintegerNoProxy TCP port, integer 1 to 65535; required only when any proxy parameter is supplied.
adapter.proxyLoginstringNoOptional proxy authentication username from the caller configured proxy; never invent credentials.
adapter.proxyPasswordstringNoOptional proxy authentication password from the same configured proxy.
adapter.recaptchaDataSValuestringNoOptional 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.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.uuidstring | nullBusiness UUID in the creation response; null if unset.

Replace YOUR_API_HOST with your deployed service address.

03 / QUERY RESULT

Query result

POST/api/validator/query.cgi

Query a task with taskId, including after a WebSocket disconnect or a missed update.

Request example

POST /api/validator/query.cgi · JSONC
{
  "taskId": "11111111-1111-4111-8111-111111111111" // Task ID returned by task creation.
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "RECAPTCHA_V2", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "gRecaptchaResponse": "EXAMPLE_GRECAPTCHARESPONSE", // Verification token to submit to the target website.
      "token": "EXAMPLE_TOKEN" // Verification token to submit to the target website.
    }
  }
}

Request parameters

FieldTypeRequiredDescription
taskIdstringYesTask ID returned by task creation.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.gRecaptchaResponsestringVerification token to submit to the target website.
data.solution.tokenstringVerification token to submit to the target website.

Read the provider answer from data.solution when successful.

WebSocket result delivery

WSwss://app.nexcaptcha.net/socket/task.cgi

Prefer WebSocket whenever your client or MCP host supports it: connect first, wait for socket.ready, then create tasks. Consume task.updated immediately; use REST query.cgi or MCP get_task only when WebSocket is unavailable, disconnected, or an update is missing.

Connect to /socket/task.cgi on the same service port. Send heartbeats to receive task updates and final results.

WebSocket API keys belong in handshake HTTP headers, never URL parameters. Standalone clients use the apiKey header; browsers use the login cookie or REST queries with the apiKey header because native WebSocket cannot set custom headers. Updates belong to the authenticated user.

Use WSS on HTTPS. Reconnect with backoff after disconnect; the latest 20 terminal tasks are replayed, not a durable event history. Recover missing taskIds through query.cgi or get_task. Missing, invalid, revoked or expired credentials close with 4003; idle or unreliable connections close with 4500.

All committed state changes are pushed to this authenticated account, including tasks created through API and MCP. SUCCEEDED carries result; failures carry failure.code and nextAction. Send a heartbeat every 20 seconds and expect heartbeat.ack. After 35 seconds without heartbeat, a check running every 10 seconds closes the connection. Reconnect with backoff; never recreate a task merely because its socket disconnected. Process taskId idempotently and do not replace a terminal result with an older or replayed frame.

The container maps each user ID to one current connection per instance. A new connection replaces the previous one with close code 4009. Clients sharing an account should share one subscription through their host. A replaced client should stop reconnecting automatically. Instance capacity is at most 256 connections; 1013 means retry with backoff. Slow clients exceeding 64 queued messages or 256 KiB of queued UTF-8 data are disconnected with 4500 and should recover missing taskIds by query. A single frame is limited to 256 KiB.

apiKey: YOUR_API_KEY
socket.ready → create.cgi → task.updated
task.taskId = create.cgi data.taskId
{"type":"socket.ready","replayLimit":20,"heartbeatSeconds":20}
{"type":"heartbeat"}
{"type":"heartbeat.ack"}
{
  "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"
  }
}

Download examples: browser JavaScript, Python and Java 21

JavaScript · Python · Java 21

04 / RESPONSES

Responses

HTTP business responses contain code, msg and data; code 0 means success. WebSocket uses a separate message structure.

CREATED → SUBMITTING → PROCESSING → SUCCEEDED

Terminal states include SUCCEEDED, FAILED, and EXPIRED.

{"code":-1317,"msg":"API Key invalid","data":null}
-1317 Invalid API key.
-1100 / -1101 Invalid or missing request parameters.
-1005 / -1008 Task state or task operation error.
-1401 Insufficient balance. Add funds before creating a task.
-1400 / -1001 System or task creation error.

05 / PRODUCT REFERENCE

Products

The fields below come from the current product adapter and provider task type.

GET/api/product/list.cgi

NORMAL_CAPTCHA

Normal Captcha

Enabled

Timeout 144 s · Provider task type ImageToTextTask

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "NORMAL_CAPTCHA", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "body": "BASE64_CONTENT", // Base64-encoded image or audio content.
    "phrase": false, // Whether the answer contains multiple words.
    "caseSensitive": false, // Whether the answer is case-sensitive.
    "numeric": false, // Character recognition mode.
    "math": false, // Whether to calculate the expression shown in the image.
    "minLength": 1, // Minimum answer length.
    "maxLength": 1, // Maximum answer length.
    "comment": "YOUR_COMMENT", // Question or instructions for solving the challenge.
    "imgInstructions": "YOUR_IMGINSTRUCTIONS" // Base64-encoded image instructions.
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "NORMAL_CAPTCHA", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "text": "EXAMPLE_ANSWER" // Recognized text or text answer.
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.bodystringYesBase64-encoded image or audio content.
adapter.phrasebooleanNoWhether the answer contains multiple words.
adapter.caseSensitivebooleanNoWhether the answer is case-sensitive.
adapter.numericbooleanNoCharacter recognition mode.
adapter.mathbooleanNoWhether to calculate the expression shown in the image.
adapter.minLengthintegerNoMinimum answer length.
adapter.maxLengthintegerNoMaximum answer length.
adapter.commentstringNoQuestion or instructions for solving the challenge.
adapter.imgInstructionsstringNoBase64-encoded image instructions.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.textstringRecognized text or text answer.

RECAPTCHA_V2

reCAPTCHA v2

Enabled

Timeout 720 s · Provider task type RecaptchaV2TaskProxyless

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "RECAPTCHA_V2", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "websiteURL": "https://example.com/register", // 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": "YOUR_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": "YOUR_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": "YOUR_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": false, // 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": 0.3, // Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.
    "userAgent": "YOUR_BROWSER_USER_AGENT", // Read the actual User-Agent used to obtain this challenge; preserve it when the product requires matching.
    "isInvisible": false, // 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": "challenge_cookie=CURRENT_VALUE", // 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": "http", // 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": "YOUR_PROXY_HOST", // 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": 8080, // Proxy TCP port, integer 1 to 65535; required only when any proxy parameter is supplied.
    "proxyLogin": "YOUR_PROXYLOGIN", // Optional proxy authentication username from the caller configured proxy; never invent credentials.
    "proxyPassword": "YOUR_PROXYPASSWORD", // Optional proxy authentication password from the same configured proxy.
    "recaptchaDataSValue": "CURRENT_DATA_S_VALUE" // 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.
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "RECAPTCHA_V2", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "gRecaptchaResponse": "EXAMPLE_GRECAPTCHARESPONSE", // Verification token to submit to the target website.
      "token": "EXAMPLE_TOKEN" // Verification token to submit to the target website.
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.websiteURLstringYesRead from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.
adapter.websiteKeystringYesRead from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.
adapter.pageActionstringNoActual 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.
adapter.apiDomainstringNoRead from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.
adapter.isEnterprisebooleanNoFor 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.
adapter.minScorenumberNoSet according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.
adapter.userAgentstringNoRead the actual User-Agent used to obtain this challenge; preserve it when the product requires matching.
adapter.isInvisiblebooleanNoRead from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.
adapter.cookiesstringNoOptional 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.
adapter.proxyTypestringNoOptional 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.
adapter.proxyAddressstringNoReachable 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.
adapter.proxyPortintegerNoProxy TCP port, integer 1 to 65535; required only when any proxy parameter is supplied.
adapter.proxyLoginstringNoOptional proxy authentication username from the caller configured proxy; never invent credentials.
adapter.proxyPasswordstringNoOptional proxy authentication password from the same configured proxy.
adapter.recaptchaDataSValuestringNoOptional 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.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.gRecaptchaResponsestringVerification token to submit to the target website.
data.solution.tokenstringVerification token to submit to the target website.

RECAPTCHA_V3

reCAPTCHA v3

Enabled

Timeout 720 s · Provider task type RecaptchaV3TaskProxyless

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "RECAPTCHA_V3", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "websiteURL": "https://example.com/register", // 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": "YOUR_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": "YOUR_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": "YOUR_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": false, // 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": 0.3, // Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.
    "userAgent": "YOUR_BROWSER_USER_AGENT" // Read the actual User-Agent used to obtain this challenge; preserve it when the product requires matching.
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "RECAPTCHA_V3", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "gRecaptchaResponse": "EXAMPLE_GRECAPTCHARESPONSE", // Verification token to submit to the target website.
      "token": "EXAMPLE_TOKEN" // Verification token to submit to the target website.
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.websiteURLstringYesRead from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.
adapter.websiteKeystringYesRead from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.
adapter.pageActionstringNoActual 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.
adapter.apiDomainstringNoRead from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.
adapter.isEnterprisebooleanNoFor 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.
adapter.minScorenumberYesSet according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.
adapter.userAgentstringNoRead the actual User-Agent used to obtain this challenge; preserve it when the product requires matching.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.gRecaptchaResponsestringVerification token to submit to the target website.
data.solution.tokenstringVerification token to submit to the target website.

RECAPTCHA_V2_ENTERPRISE

reCAPTCHA v2 Enterprise

Enabled

Timeout 720 s · Provider task type RecaptchaV2EnterpriseTaskProxyless

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "RECAPTCHA_V2_ENTERPRISE", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "websiteURL": "https://example.com/register", // 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": "YOUR_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": "YOUR_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": "YOUR_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": false, // 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": 0.3, // Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.
    "userAgent": "YOUR_BROWSER_USER_AGENT", // Read the actual User-Agent used to obtain this challenge; preserve it when the product requires matching.
    "isInvisible": false, // 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": "challenge_cookie=CURRENT_VALUE", // 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": "http", // 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": "YOUR_PROXY_HOST", // 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": 8080, // Proxy TCP port, integer 1 to 65535; required only when any proxy parameter is supplied.
    "proxyLogin": "YOUR_PROXYLOGIN", // Optional proxy authentication username from the caller configured proxy; never invent credentials.
    "proxyPassword": "YOUR_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.
      "s": "CURRENT_ENTERPRISE_S_VALUE"
    }
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "RECAPTCHA_V2_ENTERPRISE", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "gRecaptchaResponse": "EXAMPLE_GRECAPTCHARESPONSE", // Verification token to submit to the target website.
      "token": "EXAMPLE_TOKEN" // Verification token to submit to the target website.
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.websiteURLstringYesRead from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.
adapter.websiteKeystringYesRead from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.
adapter.pageActionstringNoActual 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.
adapter.apiDomainstringNoRead from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.
adapter.isEnterprisebooleanNoFor 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.
adapter.minScorenumberNoSet according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.
adapter.userAgentstringNoRead the actual User-Agent used to obtain this challenge; preserve it when the product requires matching.
adapter.isInvisiblebooleanNoRead from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.
adapter.cookiesstringNoOptional 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.
adapter.proxyTypestringNoOptional 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.
adapter.proxyAddressstringNoReachable 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.
adapter.proxyPortintegerNoProxy TCP port, integer 1 to 65535; required only when any proxy parameter is supplied.
adapter.proxyLoginstringNoOptional proxy authentication username from the caller configured proxy; never invent credentials.
adapter.proxyPasswordstringNoOptional proxy authentication password from the same configured proxy.
adapter.enterprisePayloadobjectNoOptional 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.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.gRecaptchaResponsestringVerification token to submit to the target website.
data.solution.tokenstringVerification token to submit to the target website.

RECAPTCHA_V3_ENTERPRISE

reCAPTCHA v3 Enterprise

Enabled

Timeout 720 s · Provider task type RecaptchaV3TaskProxyless

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "RECAPTCHA_V3_ENTERPRISE", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "websiteURL": "https://example.com/register", // 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": "YOUR_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": "YOUR_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": "YOUR_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": true, // 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": 0.3, // Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.
    "userAgent": "YOUR_BROWSER_USER_AGENT" // Read the actual User-Agent used to obtain this challenge; preserve it when the product requires matching.
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "RECAPTCHA_V3_ENTERPRISE", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "gRecaptchaResponse": "EXAMPLE_GRECAPTCHARESPONSE", // Verification token to submit to the target website.
      "token": "EXAMPLE_TOKEN" // Verification token to submit to the target website.
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.websiteURLstringYesRead from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.
adapter.websiteKeystringYesRead from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.
adapter.pageActionstringNoActual 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.
adapter.apiDomainstringNoRead from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.
adapter.isEnterprisebooleanNoFor 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.
adapter.minScorenumberYesSet according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.
adapter.userAgentstringNoRead the actual User-Agent used to obtain this challenge; preserve it when the product requires matching.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.gRecaptchaResponsestringVerification token to submit to the target website.
data.solution.tokenstringVerification token to submit to the target website.

RECAPTCHA_ENTERPRISE

reCAPTCHA Enterprise

Enabled

Timeout 720 s · Provider task type RecaptchaV2EnterpriseTaskProxyless

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "RECAPTCHA_ENTERPRISE", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "websiteURL": "https://example.com/register", // 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": "YOUR_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": "YOUR_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": "YOUR_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": false, // 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": 0.3, // Set according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.
    "userAgent": "YOUR_BROWSER_USER_AGENT", // Read the actual User-Agent used to obtain this challenge; preserve it when the product requires matching.
    "appId": "YOUR_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": false, // 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": "challenge_cookie=CURRENT_VALUE", // 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": "http", // 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": "YOUR_PROXY_HOST", // 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": 8080, // Proxy TCP port, integer 1 to 65535; required only when any proxy parameter is supplied.
    "proxyLogin": "YOUR_PROXYLOGIN", // Optional proxy authentication username from the caller configured proxy; never invent credentials.
    "proxyPassword": "YOUR_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.
      "s": "CURRENT_ENTERPRISE_S_VALUE"
    }
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "RECAPTCHA_ENTERPRISE", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "gRecaptchaResponse": "EXAMPLE_GRECAPTCHARESPONSE", // Verification token to submit to the target website.
      "token": "EXAMPLE_TOKEN" // Verification token to submit to the target website.
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.websiteURLstringYesRead from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.
adapter.websiteKeystringYesRead from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.
adapter.pageActionstringNoActual 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.
adapter.apiDomainstringNoRead from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.
adapter.isEnterprisebooleanNoFor 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.
adapter.minScorenumberNoSet according to the actual challenge and product field meaning. These are solving options, not values to invent to repair a failed request.
adapter.userAgentstringNoRead the actual User-Agent used to obtain this challenge; preserve it when the product requires matching.
adapter.appIdstringNoRead from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.
adapter.isInvisiblebooleanNoRead from the actual target page, widget configuration or documented integration. Identify the precise product/version; placeholders and keys from another site cannot be substituted.
adapter.cookiesstringNoOptional 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.
adapter.proxyTypestringNoOptional 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.
adapter.proxyAddressstringNoReachable 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.
adapter.proxyPortintegerNoProxy TCP port, integer 1 to 65535; required only when any proxy parameter is supplied.
adapter.proxyLoginstringNoOptional proxy authentication username from the caller configured proxy; never invent credentials.
adapter.proxyPasswordstringNoOptional proxy authentication password from the same configured proxy.
adapter.enterprisePayloadobjectNoOptional 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.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.gRecaptchaResponsestringVerification token to submit to the target website.
data.solution.tokenstringVerification token to submit to the target website.

CLOUDFLARE_TURNSTILE

Cloudflare Turnstile

Enabled

Timeout 144 s · Provider task type TurnstileTaskProxyless

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "CLOUDFLARE_TURNSTILE", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "websiteURL": "https://example.com/register", // Full URL of the page hosting this widget, from the same target session.
    "websiteKey": "YOUR_WEBSITEKEY", // Actual sitekey of this Turnstile widget. Do not use a key from another site.
    "action": "YOUR_ACTION", // Actual render action. Required with challenge-page pagedata; standalone widgets may also set action without pagedata.
    "data": "CURRENT_CDATA", // Actual render cData, sent upstream as data. cData is accepted as an alias; conflicting values are rejected before billing.
    "pagedata": "CURRENT_CHL_PAGE_DATA", // 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": "CURRENT_CDATA", // Compatibility alias of data. Prefer data; omit the alias when data is supplied.
    "chlPageData": "CURRENT_CHL_PAGE_DATA", // Compatibility alias of pagedata. Prefer pagedata; omit the alias when pagedata is supplied.
    "userAgent": "YOUR_BROWSER_USER_AGENT", // Actual browser User-Agent, when available. Preserve the returned solution.userAgent; do not assume the upstream will return the supplied value.
    "proxyType": "http", // 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": "YOUR_PROXY_HOST", // Proxy host or IP without scheme, port or credentials. Use the appropriate target-session egress.
    "proxyPort": 8080, // Proxy TCP port: integer from 1 to 65535. Required only when using a proxy.
    "proxyLogin": "YOUR_PROXYLOGIN", // Proxy username only if this proxy requires authentication.
    "proxyPassword": "YOUR_PROXYPASSWORD" // Proxy password only if this proxy requires authentication.
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "CLOUDFLARE_TURNSTILE", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "token": "EXAMPLE_TOKEN", // Verification token to submit to the target website.
      "userAgent": "EXAMPLE_USERAGENT" // Browser User-Agent used to obtain the answer.
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.websiteURLstringYesFull URL of the page hosting this widget, from the same target session.
adapter.websiteKeystringYesActual sitekey of this Turnstile widget. Do not use a key from another site.
adapter.actionstringNoActual render action. Required with challenge-page pagedata; standalone widgets may also set action without pagedata.
adapter.datastringNoActual render cData, sent upstream as data. cData is accepted as an alias; conflicting values are rejected before billing.
adapter.pagedatastringNoFresh 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.
adapter.cDatastringNoCompatibility alias of data. Prefer data; omit the alias when data is supplied.
adapter.chlPageDatastringNoCompatibility alias of pagedata. Prefer pagedata; omit the alias when pagedata is supplied.
adapter.userAgentstringNoActual browser User-Agent, when available. Preserve the returned solution.userAgent; do not assume the upstream will return the supplied value.
adapter.proxyTypestringNoOptional proxy protocol: http, socks4 or socks5. Supplying any proxy field requires proxyType, proxyAddress and proxyPort together. Omit all proxy fields to retain proxyless mode.
adapter.proxyAddressstringNoProxy host or IP without scheme, port or credentials. Use the appropriate target-session egress.
adapter.proxyPortintegerNoProxy TCP port: integer from 1 to 65535. Required only when using a proxy.
adapter.proxyLoginstringNoProxy username only if this proxy requires authentication.
adapter.proxyPasswordstringNoProxy password only if this proxy requires authentication.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.tokenstringVerification token to submit to the target website.
data.solution.userAgentstringBrowser User-Agent used to obtain the answer.

ARKOSE

Arkose Captcha

Enabled

Timeout 144 s · Provider task type FunCaptchaTaskProxyless

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "ARKOSE", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "websiteURL": "https://example.com/register", // Full URL of the page containing the challenge.
    "websitePublicKey": "YOUR_WEBSITEPUBLICKEY", // Public key from the target page.
    "funcaptchaApiJSSubdomain": "YOUR_FUNCAPTCHAAPIJSSUBDOMAIN", // FunCaptcha API hostname used by the target page.
    "data": "YOUR_DATA", // Challenge data from the target integration.
    "userAgent": "YOUR_BROWSER_USER_AGENT" // User-Agent of the browser that obtained the challenge.
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "ARKOSE", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "token": "EXAMPLE_TOKEN" // Verification token to submit to the target website.
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.websiteURLstringYesFull URL of the page containing the challenge.
adapter.websitePublicKeystringYesPublic key from the target page.
adapter.funcaptchaApiJSSubdomainstringNoFunCaptcha API hostname used by the target page.
adapter.datastringNoChallenge data from the target integration.
adapter.userAgentstringNoUser-Agent of the browser that obtained the challenge.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.tokenstringVerification token to submit to the target website.

GEETEST

GeeTest

Enabled

Timeout 144 s · Provider task type GeeTestTaskProxyless

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "GEETEST", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "websiteURL": "https://example.com/register", // Full URL of the page containing the challenge.
    "gt": "YOUR_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": "YOUR_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.
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "GEETEST", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "challenge": "EXAMPLE_CHALLENGE", // Product-specific answer field; use it according to the target website verification protocol.
      "validate": "EXAMPLE_VALIDATE", // Product-specific answer field; use it according to the target website verification protocol.
      "seccode": "EXAMPLE_SECCODE" // Product-specific answer field; use it according to the target website verification protocol.
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.websiteURLstringYesFull URL of the page containing the challenge.
adapter.gtstringYesThe gt issued by the target initGeetest v3 integration; not a v4 captcha_id. Do not substitute a demo or another integration identifier.
adapter.challengestringYesObtain 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.
adapter.apiServerSubdomainstringNoOptional 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.
adapter.userAgentstringNoUser-Agent of the browser that obtained the challenge.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.challengestringProduct-specific answer field; use it according to the target website verification protocol.
data.solution.validatestringProduct-specific answer field; use it according to the target website verification protocol.
data.solution.seccodestringProduct-specific answer field; use it according to the target website verification protocol.

GEETEST_V4

GeeTest v4

Enabled

Timeout 144 s · Provider task type GeeTestTaskProxyless

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "GEETEST_V4", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "websiteURL": "https://example.com/register", // Full URL of the page containing the challenge.
    "captchaId": "YOUR_CAPTCHAID" // Use the captcha_id from the target initGeetest4 configuration. It is not the gt or challenge of a v3 integration.
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "GEETEST_V4", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "captcha_id": "EXAMPLE_CAPTCHA_ID", // Product-specific answer field; use it according to the target website verification protocol.
      "lot_number": "EXAMPLE_LOT_NUMBER", // Product-specific answer field; use it according to the target website verification protocol.
      "pass_token": "EXAMPLE_PASS_TOKEN", // Verification token to submit to the target website.
      "gen_time": "EXAMPLE_GEN_TIME", // Product-specific answer field; use it according to the target website verification protocol.
      "captcha_output": "EXAMPLE_CAPTCHA_OUTPUT" // Product-specific answer field; use it according to the target website verification protocol.
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.websiteURLstringYesFull URL of the page containing the challenge.
adapter.captchaIdstringYesUse the captcha_id from the target initGeetest4 configuration. It is not the gt or challenge of a v3 integration.
adapter.userAgentstringNoUser-Agent of the browser that obtained the challenge.
adapter.riskTypestringNoOptional actual GeeTest v4 risk_type. Sent inside upstream initParameters with captcha_id; it does not change the product version.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.captcha_idstringProduct-specific answer field; use it according to the target website verification protocol.
data.solution.lot_numberstringProduct-specific answer field; use it according to the target website verification protocol.
data.solution.pass_tokenstringVerification token to submit to the target website.
data.solution.gen_timestringProduct-specific answer field; use it according to the target website verification protocol.
data.solution.captcha_outputstringProduct-specific answer field; use it according to the target website verification protocol.

CAPY_PUZZLE

Capy Puzzle

Enabled

Timeout 144 s · Provider task type CapyTask

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "CAPY_PUZZLE", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "websiteURL": "https://example.com/register", // Full URL of the page containing the challenge.
    "websiteKey": "YOUR_WEBSITEKEY", // Public site key from the target page.
    "userAgent": "YOUR_BROWSER_USER_AGENT", // User-Agent of the browser that obtained the challenge.
    "proxyType": "http", // Proxy protocol, for example http.
    "proxyAddress": "YOUR_PROXY_HOST", // Proxy hostname or IP address.
    "proxyPort": 8080, // Proxy port.
    "proxyLogin": "YOUR_PROXYLOGIN", // Proxy username, when authentication is required.
    "proxyPassword": "YOUR_PROXYPASSWORD" // Proxy password, when authentication is required.
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "CAPY_PUZZLE", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "captchakey": "EXAMPLE_CAPTCHAKEY", // Verification token to submit to the target website.
      "challengekey": "EXAMPLE_CHALLENGEKEY", // Product-specific answer field; use it according to the target website verification protocol.
      "answer": "EXAMPLE_ANSWER", // Recognized text or text answer.
      "respKey": "EXAMPLE_RESPKEY" // Verification token to submit to the target website.
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.websiteURLstringYesFull URL of the page containing the challenge.
adapter.websiteKeystringYesPublic site key from the target page.
adapter.userAgentstringNoUser-Agent of the browser that obtained the challenge.
adapter.proxyTypestringNoProxy protocol, for example http.
adapter.proxyAddressstringNoProxy hostname or IP address.
adapter.proxyPortintegerNoProxy port.
adapter.proxyLoginstringNoProxy username, when authentication is required.
adapter.proxyPasswordstringNoProxy password, when authentication is required.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.captchakeystringVerification token to submit to the target website.
data.solution.challengekeystringProduct-specific answer field; use it according to the target website verification protocol.
data.solution.answerstringRecognized text or text answer.
data.solution.respKeystringVerification token to submit to the target website.

KEYCAPTCHA

KeyCAPTCHA

Enabled

Timeout 144 s · Provider task type KeyCaptchaTaskProxyless

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "KEYCAPTCHA", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "websiteURL": "https://example.com/register", // Full URL of the page containing the challenge.
    "s_s_c_user_id": 184015, // KeyCaptcha user identifier from the page.
    "s_s_c_session_id": "YOUR_S_S_C_SESSION_ID", // KeyCaptcha session identifier.
    "s_s_c_web_server_sign": "YOUR_S_S_C_WEB_SERVER_SIGN", // KeyCaptcha server signature.
    "s_s_c_web_server_sign2": "YOUR_S_S_C_WEB_SERVER_SIGN2" // Second KeyCaptcha server signature.
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "KEYCAPTCHA", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "token": "EXAMPLE_TOKEN" // Verification token to submit to the target website.
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.websiteURLstringYesFull URL of the page containing the challenge.
adapter.s_s_c_user_idintegerYesKeyCaptcha user identifier from the page.
adapter.s_s_c_session_idstringYesKeyCaptcha session identifier.
adapter.s_s_c_web_server_signstringYesKeyCaptcha server signature.
adapter.s_s_c_web_server_sign2stringYesSecond KeyCaptcha server signature.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.tokenstringVerification token to submit to the target website.

LEMIN

Lemin Captcha

Enabled

Timeout 144 s · Provider task type LeminTaskProxyless

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "LEMIN", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "websiteURL": "https://example.com/register", // Full URL of the page containing the challenge.
    "captchaId": "YOUR_CAPTCHAID", // Captcha integration identifier.
    "divId": "lemin-cropped-captcha", // ID of the Lemin widget container.
    "leminApiServerSubdomain": "api.leminnow.com" // Lemin API hostname used by the target page.
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "LEMIN", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "answer": "EXAMPLE_ANSWER", // Recognized text or text answer.
      "challenge_id": "EXAMPLE_CHALLENGE_ID" // Product-specific answer field; use it according to the target website verification protocol.
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.websiteURLstringYesFull URL of the page containing the challenge.
adapter.captchaIdstringYesCaptcha integration identifier.
adapter.divIdstringYesID of the Lemin widget container.
adapter.leminApiServerSubdomainstringNoLemin API hostname used by the target page.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.answerstringRecognized text or text answer.
data.solution.challenge_idstringProduct-specific answer field; use it according to the target website verification protocol.

AMAZON

Amazon Captcha

Enabled

Timeout 144 s · Provider task type AmazonTaskProxyless

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "AMAZON", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "websiteURL": "https://example.com/register", // Full URL of the page containing the challenge.
    "websiteKey": "YOUR_WEBSITEKEY", // Public site key from the target page.
    "iv": "YOUR_IV", // Fresh AWS challenge initialization vector.
    "context": "YOUR_CONTEXT", // Fresh AWS challenge context.
    "challengeScript": "https://aws-waf.example.com/challengeScript.js", // Actual challengeScript URL from the current AWS WAF challenge, not an example URL.
    "captchaScript": "https://aws-waf.example.com/captchaScript.js", // Actual captchaScript URL from the current AWS WAF challenge, not an example URL.
    "userAgent": "YOUR_BROWSER_USER_AGENT", // Actual browser User-Agent from the matching target session.
    "proxyType": "http", // Proxy protocol: http, socks4 or socks5; use the same actual egress as the target session when bound.
    "proxyAddress": "YOUR_PROXY_HOST", // Reachable proxy hostname or IP without scheme, credentials or port.
    "proxyLogin": "YOUR_PROXYLOGIN", // Optional proxy authentication username. Provide username and password together.
    "proxyPassword": "YOUR_PROXYPASSWORD", // Optional password for that same proxy, paired with proxyLogin.
    "proxyPort": 8080 // Proxy TCP port, integer 1 to 65535.
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "AMAZON", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "captcha_voucher": "EXAMPLE_CAPTCHA_VOUCHER", // Product-specific answer field; use it according to the target website verification protocol.
      "existing_token": "EXAMPLE_EXISTING_TOKEN" // Product-specific answer field; use it according to the target website verification protocol.
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.websiteURLstringYesFull URL of the page containing the challenge.
adapter.websiteKeystringConditionalPublic site key from the target page.
adapter.ivstringConditionalFresh AWS challenge initialization vector.
adapter.contextstringConditionalFresh AWS challenge context.
adapter.challengeScriptstringNoActual challengeScript URL from the current AWS WAF challenge, not an example URL.
adapter.captchaScriptstringNoActual captchaScript URL from the current AWS WAF challenge, not an example URL.
adapter.jsapiScriptstringConditionalActual jsapiScript URL from the current AWS WAF challenge, not an example URL.
adapter.userAgentstringNoActual browser User-Agent from the matching target session.
adapter.proxyTypestringNoProxy protocol: http, socks4 or socks5; use the same actual egress as the target session when bound.
adapter.proxyAddressstringNoReachable proxy hostname or IP without scheme, credentials or port.
adapter.proxyLoginstringNoOptional proxy authentication username. Provide username and password together.
adapter.proxyPasswordstringNoOptional password for that same proxy, paired with proxyLogin.
adapter.proxyPortintegerNoProxy TCP port, integer 1 to 65535.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.captcha_voucherstringProduct-specific answer field; use it according to the target website verification protocol.
data.solution.existing_tokenstringProduct-specific answer field; use it according to the target website verification protocol.

IMAGE_CAPTCHA

Image Captcha

Enabled

Timeout 144 s · Provider task type ImageToTextTask

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "IMAGE_CAPTCHA", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "body": "BASE64_CONTENT", // Base64-encoded image or audio content.
    "phrase": false, // Whether the answer contains multiple words.
    "caseSensitive": false, // Whether the answer is case-sensitive.
    "numeric": false, // Character recognition mode.
    "math": false, // Whether to calculate the expression shown in the image.
    "minLength": 1, // Minimum answer length.
    "maxLength": 1, // Maximum answer length.
    "comment": "YOUR_COMMENT", // Question or instructions for solving the challenge.
    "imgInstructions": "YOUR_IMGINSTRUCTIONS" // Base64-encoded image instructions.
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "IMAGE_CAPTCHA", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "text": "EXAMPLE_ANSWER" // Recognized text or text answer.
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.bodystringYesBase64-encoded image or audio content.
adapter.phrasebooleanNoWhether the answer contains multiple words.
adapter.caseSensitivebooleanNoWhether the answer is case-sensitive.
adapter.numericbooleanNoCharacter recognition mode.
adapter.mathbooleanNoWhether to calculate the expression shown in the image.
adapter.minLengthintegerNoMinimum answer length.
adapter.maxLengthintegerNoMaximum answer length.
adapter.commentstringNoQuestion or instructions for solving the challenge.
adapter.imgInstructionsstringNoBase64-encoded image instructions.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.textstringRecognized text or text answer.

TEXT

Text Captcha

Enabled

Timeout 144 s · Provider task type TextCaptchaTask

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "TEXT", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "comment": "YOUR_COMMENT" // Question or instructions for solving the challenge.
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "TEXT", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "text": "EXAMPLE_ANSWER" // Recognized text or text answer.
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.commentstringYesQuestion or instructions for solving the challenge.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.textstringRecognized text or text answer.

AUDIO

Audio Captcha

Enabled

Timeout 144 s · Provider task type AudioTask

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "AUDIO", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "body": "BASE64_CONTENT", // Base64-encoded image or audio content.
    "lang": "en" // 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.
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "AUDIO", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "token": "EXAMPLE_TRANSCRIPT" // Verification token to submit to the target website.
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.bodystringYesBase64-encoded image or audio content.
adapter.langstringNoSpeech 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.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.tokenstringVerification token to submit to the target website.

ROTATE

Rotate Captcha

Enabled

Timeout 144 s · Provider task type RotateTask

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "ROTATE", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "body": "BASE64_CONTENT", // Base64-encoded image or audio content.
    "comment": "YOUR_COMMENT" // Question or instructions for solving the challenge.
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "ROTATE", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "rotate": 180 // Rotation angle.
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.bodystringYesBase64-encoded image or audio content.
adapter.commentstringNoQuestion or instructions for solving the challenge.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.rotateintegerRotation angle.

GRID

Grid Captcha

Enabled

Timeout 144 s · Provider task type GridTask

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "GRID", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "body": "BASE64_CONTENT", // Base64-encoded image or audio content.
    "comment": "Select all images containing stairs.", // Question or instructions for solving the challenge.
    "rows": 3, // Actual number of rows in the submitted current grid.
    "columns": 3, // Actual number of columns in the submitted current grid.
    "imgType": "recaptcha", // 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": "123456789", // 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": 1, // Optional minClicks bound; cannot exceed rows*columns when dimensions are supplied. minClicks cannot exceed maxClicks.
    "maxClicks": 9, // Optional maxClicks bound; cannot exceed rows*columns when dimensions are supplied. minClicks cannot exceed maxClicks.
    "canNoAnswer": 0 // 0 or 1. Set 1 only when the actual task permits no matching images; do not use it to hide recognition failures.
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "GRID", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "click": [ // Grid cell numbers to click.
        1, // Product-specific answer field; use it according to the target website verification protocol.
        5, // Product-specific answer field; use it according to the target website verification protocol.
        9 // Product-specific answer field; use it according to the target website verification protocol.
      ]
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.bodystringYesBase64-encoded image or audio content.
adapter.commentstringConditionalQuestion or instructions for solving the challenge.
adapter.rowsintegerNoActual number of rows in the submitted current grid.
adapter.columnsintegerNoActual number of columns in the submitted current grid.
adapter.imgInstructionsstringConditionalOptional Base64 instruction image, at most 100 kB. Supply comment or imgInstructions; imgType requires the original English comment and original image files.
adapter.imgTypestringNoOptional 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.
adapter.previousIdstringNoOptional 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.
adapter.minClicksintegerNoOptional minClicks bound; cannot exceed rows*columns when dimensions are supplied. minClicks cannot exceed maxClicks.
adapter.maxClicksintegerNoOptional maxClicks bound; cannot exceed rows*columns when dimensions are supplied. minClicks cannot exceed maxClicks.
adapter.canNoAnswerintegerNo0 or 1. Set 1 only when the actual task permits no matching images; do not use it to hide recognition failures.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.clickarrayGrid cell numbers to click.
data.solution.click[]integerProduct-specific answer field; use it according to the target website verification protocol.

CLICK

Click Captcha

Enabled

Timeout 144 s · Provider task type CoordinatesTask

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "CLICK", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "body": "BASE64_CONTENT", // Base64-encoded image or audio content.
    "comment": "YOUR_COMMENT" // Question or instructions for solving the challenge.
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "CLICK", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "coordinates": [ // Click coordinates, with the origin at the top left of the image.
        { // Product-specific answer field; use it according to the target website verification protocol.
          "x": 358, // Horizontal coordinate in pixels.
          "y": 268 // Vertical coordinate in pixels.
        }
      ]
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.bodystringYesBase64-encoded image or audio content.
adapter.commentstringNoQuestion or instructions for solving the challenge.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.coordinatesarrayClick coordinates, with the origin at the top left of the image.
data.solution.coordinates[]objectProduct-specific answer field; use it according to the target website verification protocol.
data.solution.coordinates[].xintegerHorizontal coordinate in pixels.
data.solution.coordinates[].yintegerVertical coordinate in pixels.

COORDINATES

Coordinates Captcha

Enabled

Timeout 144 s · Provider task type CoordinatesTask

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "COORDINATES", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "body": "BASE64_CONTENT", // Base64-encoded image or audio content.
    "comment": "YOUR_COMMENT" // Question or instructions for solving the challenge.
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "COORDINATES", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "coordinates": [ // Click coordinates, with the origin at the top left of the image.
        { // Product-specific answer field; use it according to the target website verification protocol.
          "x": 358, // Horizontal coordinate in pixels.
          "y": 268 // Vertical coordinate in pixels.
        }
      ]
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.bodystringYesBase64-encoded image or audio content.
adapter.commentstringNoQuestion or instructions for solving the challenge.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.coordinatesarrayClick coordinates, with the origin at the top left of the image.
data.solution.coordinates[]objectProduct-specific answer field; use it according to the target website verification protocol.
data.solution.coordinates[].xintegerHorizontal coordinate in pixels.
data.solution.coordinates[].yintegerVertical coordinate in pixels.

DRAW_AROUND

Draw Around Captcha

Enabled

Timeout 144 s · Provider task type DrawAroundTask

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "DRAW_AROUND", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "body": "BASE64_CONTENT", // Base64-encoded image or audio content.
    "comment": "YOUR_COMMENT" // Question or instructions for solving the challenge.
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "DRAW_AROUND", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "canvas": [ // Drawing path coordinates.
        [ // Product-specific answer field; use it according to the target website verification protocol.
          { // Product-specific answer field; use it according to the target website verification protocol.
            "x": 20, // Horizontal coordinate in pixels.
            "y": 30 // Vertical coordinate in pixels.
          },
          { // Product-specific answer field; use it according to the target website verification protocol.
            "x": 40, // Horizontal coordinate in pixels.
            "y": 60 // Vertical coordinate in pixels.
          }
        ]
      ]
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.bodystringYesBase64-encoded image or audio content.
adapter.commentstringNoQuestion or instructions for solving the challenge.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.canvasarrayDrawing path coordinates.
data.solution.canvas[]arrayProduct-specific answer field; use it according to the target website verification protocol.
data.solution.canvas[][]objectProduct-specific answer field; use it according to the target website verification protocol.
data.solution.canvas[][].xintegerHorizontal coordinate in pixels.
data.solution.canvas[][].yintegerVertical coordinate in pixels.

DRAG_AND_DROP

Drag and Drop Captcha

Enabled

Timeout 144 s · Provider task type DragAndDropTask

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "DRAG_AND_DROP", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "comment": "YOUR_COMMENT", // Question or instructions for solving the challenge.
    "background": "BASE64_IMAGE", // Base64-encoded background image.
    "images": [ // Array of Base64-encoded draggable images in the original order.
      "BASE64_IMAGE"
    ]
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "DRAG_AND_DROP", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "coordinates": [ // Click coordinates, with the origin at the top left of the image.
        { // Product-specific answer field; use it according to the target website verification protocol.
          "x": 100, // Horizontal coordinate in pixels.
          "y": 80 // Vertical coordinate in pixels.
        }
      ]
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.commentstringNoQuestion or instructions for solving the challenge.
adapter.backgroundstringYesBase64-encoded background image.
adapter.imagesarrayYesArray of Base64-encoded draggable images in the original order.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.coordinatesarrayClick coordinates, with the origin at the top left of the image.
data.solution.coordinates[]objectProduct-specific answer field; use it according to the target website verification protocol.
data.solution.coordinates[].xintegerHorizontal coordinate in pixels.
data.solution.coordinates[].yintegerVertical coordinate in pixels.

BOUNDING_BOX

Bounding Box Captcha

Enabled

Timeout 144 s · Provider task type BoundingBoxTask

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "BOUNDING_BOX", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "body": "BASE64_CONTENT", // Base64-encoded image or audio content.
    "comment": "YOUR_COMMENT" // Question or instructions for solving the challenge.
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "BOUNDING_BOX", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "bounding_boxes": [ // Bounding boxes of target objects.
        { // Product-specific answer field; use it according to the target website verification protocol.
          "xMin": 310, // Horizontal coordinate in pixels.
          "xMax": 385, // Horizontal coordinate in pixels.
          "yMin": 231, // Vertical coordinate in pixels.
          "yMax": 308 // Vertical coordinate in pixels.
        }
      ]
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.bodystringYesBase64-encoded image or audio content.
adapter.commentstringNoQuestion or instructions for solving the challenge.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.bounding_boxesarrayBounding boxes of target objects.
data.solution.bounding_boxes[]objectProduct-specific answer field; use it according to the target website verification protocol.
data.solution.bounding_boxes[].xMinintegerHorizontal coordinate in pixels.
data.solution.bounding_boxes[].xMaxintegerHorizontal coordinate in pixels.
data.solution.bounding_boxes[].yMinintegerVertical coordinate in pixels.
data.solution.bounding_boxes[].yMaxintegerVertical coordinate in pixels.

SLIDER_CAPTCHA

Slider Captcha

Enabled

Timeout 144 s · Provider task type CoordinatesTask

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "SLIDER_CAPTCHA", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "body": "BASE64_CONTENT", // 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": "YOUR_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.
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "SLIDER_CAPTCHA", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "coordinates": [ // Click coordinates, with the origin at the top left of the image.
        { // Product-specific answer field; use it according to the target website verification protocol.
          "x": 240, // Horizontal coordinate in pixels.
          "y": 100 // Vertical coordinate in pixels.
        }
      ]
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Solution fields are not documented yet. This example shows the response envelope only.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.bodystringYesBase64 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.
adapter.commentstringNoOptional 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.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.coordinatesarrayClick coordinates, with the origin at the top left of the image.
data.solution.coordinates[]objectProduct-specific answer field; use it according to the target website verification protocol.
data.solution.coordinates[].xintegerHorizontal coordinate in pixels.
data.solution.coordinates[].yintegerVertical coordinate in pixels.

CYBERSIARA

CyberSiARA

Enabled

Timeout 144 s · Provider task type CyberSiAraTask

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "CYBERSIARA", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "websiteURL": "https://example.com/register", // Full URL of the page containing the challenge.
    "userAgent": "YOUR_BROWSER_USER_AGENT", // User-Agent of the browser that obtained the challenge.
    "SlideMasterUrlId": "YOUR_SLIDEMASTERURLID" // CyberSiARA integration identifier from the page.
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "CYBERSIARA", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "token": "EXAMPLE_TOKEN" // Verification token to submit to the target website.
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.websiteURLstringYesFull URL of the page containing the challenge.
adapter.userAgentstringYesUser-Agent of the browser that obtained the challenge.
adapter.SlideMasterUrlIdstringYesCyberSiARA integration identifier from the page.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.tokenstringVerification token to submit to the target website.

MTCAPTCHA

MTCaptcha

Enabled

Timeout 144 s · Provider task type MtCaptchaTaskProxyless

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "MTCAPTCHA", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "websiteURL": "https://example.com/register", // Full URL of the page containing the challenge.
    "websiteKey": "YOUR_WEBSITEKEY" // Public site key from the target page.
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "MTCAPTCHA", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "token": "EXAMPLE_TOKEN" // Verification token to submit to the target website.
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.websiteURLstringYesFull URL of the page containing the challenge.
adapter.websiteKeystringYesPublic site key from the target page.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.tokenstringVerification token to submit to the target website.

DATADOME

DataDome

Enabled

Timeout 144 s · Provider task type DataDomeSliderTask

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "DATADOME", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "websiteURL": "https://example.com/register", // Full URL of the page containing the challenge.
    "captchaUrl": "https://example.com/captcha", // Fresh challenge URL from the current session.
    "userAgent": "YOUR_BROWSER_USER_AGENT", // User-Agent of the browser that obtained the challenge.
    "proxyType": "http", // Proxy protocol, for example http.
    "proxyAddress": "YOUR_PROXY_HOST", // Proxy hostname or IP address.
    "proxyPort": 8080, // Proxy port.
    "proxyLogin": "YOUR_PROXYLOGIN", // Proxy username, when authentication is required.
    "proxyPassword": "YOUR_PROXYPASSWORD" // Proxy password, when authentication is required.
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "DATADOME", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "cookie": "EXAMPLE_COOKIE" // Verification cookies for the target domain.
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.websiteURLstringYesFull URL of the page containing the challenge.
adapter.captchaUrlstringYesFresh challenge URL from the current session.
adapter.userAgentstringYesUser-Agent of the browser that obtained the challenge.
adapter.proxyTypestringYesProxy protocol, for example http.
adapter.proxyAddressstringYesProxy hostname or IP address.
adapter.proxyPortintegerYesProxy port.
adapter.proxyLoginstringNoProxy username, when authentication is required.
adapter.proxyPasswordstringNoProxy password, when authentication is required.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.cookiestringVerification cookies for the target domain.

FRIENDLY_CAPTCHA

Friendly Captcha

Enabled

Timeout 144 s · Provider task type FriendlyCaptchaTaskProxyless

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "FRIENDLY_CAPTCHA", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "websiteURL": "https://example.com/register", // Full URL of the page containing the challenge.
    "websiteKey": "YOUR_WEBSITEKEY", // Public site key from the target page.
    "version": "YOUR_VERSION", // Captcha protocol version used by the page.
    "moduleScript": "YOUR_MODULESCRIPT", // Module script from the challenge page.
    "nomoduleScript": "YOUR_NOMODULESCRIPT" // Non-module script from the challenge page.
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "FRIENDLY_CAPTCHA", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "token": "EXAMPLE_TOKEN" // Verification token to submit to the target website.
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.websiteURLstringYesFull URL of the page containing the challenge.
adapter.websiteKeystringYesPublic site key from the target page.
adapter.versionstringNoCaptcha protocol version used by the page.
adapter.moduleScriptstringNoModule script from the challenge page.
adapter.nomoduleScriptstringNoNon-module script from the challenge page.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.tokenstringVerification token to submit to the target website.

CUTCAPTCHA

Cutcaptcha

Enabled

Timeout 144 s · Provider task type CutCaptchaTaskProxyless

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "CUTCAPTCHA", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "websiteURL": "https://example.com/register", // Full URL of the page containing the challenge.
    "websiteKey": "YOUR_WEBSITEKEY", // Legacy field retained for request compatibility; ignored upstream. It cannot replace the newly documented required product parameters.
    "userAgent": "YOUR_BROWSER_USER_AGENT", // Actual browser User-Agent from the matching target session.
    "miseryKey": "CURRENT_MISERY_KEY", // Value of CUTCAPTCHA_MISERY_KEY from the current target page.
    "siteApiKey": "CURRENT_PUBLIC_SITE_API_KEY", // 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": "http", // Proxy protocol: http, socks4 or socks5; use the same actual egress as the target session when bound.
    "proxyAddress": "YOUR_PROXY_HOST", // Reachable proxy hostname or IP without scheme, credentials or port.
    "proxyLogin": "YOUR_PROXYLOGIN", // Optional proxy authentication username. Provide username and password together.
    "proxyPassword": "YOUR_PROXYPASSWORD", // Optional password for that same proxy, paired with proxyLogin.
    "proxyPort": 8080 // Proxy TCP port, integer 1 to 65535.
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "CUTCAPTCHA", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "token": "EXAMPLE_TOKEN" // Verification token to submit to the target website.
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.websiteURLstringYesFull URL of the page containing the challenge.
adapter.websiteKeystringNoLegacy field retained for request compatibility; ignored upstream. It cannot replace the newly documented required product parameters.
adapter.userAgentstringNoActual browser User-Agent from the matching target session.
adapter.miseryKeystringYesValue of CUTCAPTCHA_MISERY_KEY from the current target page.
adapter.siteApiKeystringYesPublic 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.
adapter.proxyTypestringNoProxy protocol: http, socks4 or socks5; use the same actual egress as the target session when bound.
adapter.proxyAddressstringNoReachable proxy hostname or IP without scheme, credentials or port.
adapter.proxyLoginstringNoOptional proxy authentication username. Provide username and password together.
adapter.proxyPasswordstringNoOptional password for that same proxy, paired with proxyLogin.
adapter.proxyPortintegerNoProxy TCP port, integer 1 to 65535.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.tokenstringVerification token to submit to the target website.

ATBCAPTCHA

atbCAPTCHA

Enabled

Timeout 144 s · Provider task type AtbCaptchaTaskProxyless

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "ATBCAPTCHA", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "websiteURL": "https://example.com/register", // Full URL of the page containing the challenge.
    "websiteKey": "YOUR_WEBSITEKEY", // Legacy field retained for request compatibility; ignored upstream. It cannot replace the newly documented required product parameters.
    "userAgent": "YOUR_BROWSER_USER_AGENT", // Actual browser User-Agent from the matching target session.
    "appId": "CURRENT_APP_ID", // Actual appId from the target atbCAPTCHA initialization.
    "apiServer": "https://captcha-api.example.com", // Actual apiServer from the same target widget configuration; supply it explicitly for API v2.
    "proxyType": "http", // Proxy protocol: http, socks4 or socks5; use the same actual egress as the target session when bound.
    "proxyAddress": "YOUR_PROXY_HOST", // Reachable proxy hostname or IP without scheme, credentials or port.
    "proxyLogin": "YOUR_PROXYLOGIN", // Optional proxy authentication username. Provide username and password together.
    "proxyPassword": "YOUR_PROXYPASSWORD", // Optional password for that same proxy, paired with proxyLogin.
    "proxyPort": 8080 // Proxy TCP port, integer 1 to 65535.
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "ATBCAPTCHA", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "token": "EXAMPLE_TOKEN" // Verification token to submit to the target website.
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.websiteURLstringYesFull URL of the page containing the challenge.
adapter.websiteKeystringNoLegacy field retained for request compatibility; ignored upstream. It cannot replace the newly documented required product parameters.
adapter.userAgentstringNoActual browser User-Agent from the matching target session.
adapter.appIdstringYesActual appId from the target atbCAPTCHA initialization.
adapter.apiServerstringYesActual apiServer from the same target widget configuration; supply it explicitly for API v2.
adapter.proxyTypestringNoProxy protocol: http, socks4 or socks5; use the same actual egress as the target session when bound.
adapter.proxyAddressstringNoReachable proxy hostname or IP without scheme, credentials or port.
adapter.proxyLoginstringNoOptional proxy authentication username. Provide username and password together.
adapter.proxyPasswordstringNoOptional password for that same proxy, paired with proxyLogin.
adapter.proxyPortintegerNoProxy TCP port, integer 1 to 65535.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.tokenstringVerification token to submit to the target website.

TENCENT

Tencent Captcha

Enabled

Timeout 144 s · Provider task type TencentTaskProxyless

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "TENCENT", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "websiteURL": "https://example.com/register", // Full URL of the page containing the challenge.
    "appId": "YOUR_APPID", // Application identifier from the target integration.
    "captchaScript": "YOUR_CAPTCHASCRIPT", // Challenge script from the current page.
    "proxyType": "http", // Proxy protocol, for example http.
    "proxyAddress": "YOUR_PROXY_HOST", // Proxy hostname or IP address.
    "proxyPort": 8080, // Proxy port.
    "proxyLogin": "YOUR_PROXYLOGIN", // Proxy username, when authentication is required.
    "proxyPassword": "YOUR_PROXYPASSWORD" // Proxy password, when authentication is required.
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "TENCENT", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "appid": "EXAMPLE_APPID", // Product-specific answer field; use it according to the target website verification protocol.
      "ret": 0, // Product-specific answer field; use it according to the target website verification protocol.
      "ticket": "EXAMPLE_TICKET", // Verification token to submit to the target website.
      "randstr": "EXAMPLE_RANDSTR" // Product-specific answer field; use it according to the target website verification protocol.
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.websiteURLstringYesFull URL of the page containing the challenge.
adapter.appIdstringYesApplication identifier from the target integration.
adapter.captchaScriptstringNoChallenge script from the current page.
adapter.proxyTypestringNoProxy protocol, for example http.
adapter.proxyAddressstringNoProxy hostname or IP address.
adapter.proxyPortintegerNoProxy port.
adapter.proxyLoginstringNoProxy username, when authentication is required.
adapter.proxyPasswordstringNoProxy password, when authentication is required.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.appidstringProduct-specific answer field; use it according to the target website verification protocol.
data.solution.retintegerProduct-specific answer field; use it according to the target website verification protocol.
data.solution.ticketstringVerification token to submit to the target website.
data.solution.randstrstringProduct-specific answer field; use it according to the target website verification protocol.

PROSOPO

Prosopo Captcha

Enabled

Timeout 144 s · Provider task type ProsopoTaskProxyless

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "PROSOPO", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "websiteURL": "https://example.com/register", // Full URL of the page containing the challenge.
    "websiteKey": "YOUR_WEBSITEKEY", // Public site key from the target page.
    "userAgent": "YOUR_BROWSER_USER_AGENT" // User-Agent of the browser that obtained the challenge.
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "PROSOPO", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "token": "EXAMPLE_TOKEN" // Verification token to submit to the target website.
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.websiteURLstringYesFull URL of the page containing the challenge.
adapter.websiteKeystringYesPublic site key from the target page.
adapter.userAgentstringNoUser-Agent of the browser that obtained the challenge.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.tokenstringVerification token to submit to the target website.

CAPTCHAFOX

CaptchaFox

Enabled

Timeout 144 s · Provider task type CaptchaFoxTask

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "CAPTCHAFOX", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "websiteURL": "https://example.com/register", // Full URL of the page containing the challenge.
    "websiteKey": "YOUR_WEBSITEKEY", // Public site key from the target page.
    "userAgent": "YOUR_BROWSER_USER_AGENT", // Actual browser User-Agent from the matching target session.
    "proxyType": "http", // Proxy protocol: http, socks4 or socks5; use the same actual egress as the target session when bound.
    "proxyAddress": "YOUR_PROXY_HOST", // Reachable proxy hostname or IP without scheme, credentials or port.
    "proxyLogin": "YOUR_PROXYLOGIN", // Optional proxy authentication username. Provide username and password together.
    "proxyPassword": "YOUR_PROXYPASSWORD", // Optional password for that same proxy, paired with proxyLogin.
    "proxyPort": 8080, // Proxy TCP port, integer 1 to 65535.
    "apiServer": "https://cdn.captchafox.com/" // 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.
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "CAPTCHAFOX", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "token": "EXAMPLE_TOKEN" // Verification token to submit to the target website.
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.websiteURLstringYesFull URL of the page containing the challenge.
adapter.websiteKeystringYesPublic site key from the target page.
adapter.userAgentstringYesActual browser User-Agent from the matching target session.
adapter.proxyTypestringYesProxy protocol: http, socks4 or socks5; use the same actual egress as the target session when bound.
adapter.proxyAddressstringYesReachable proxy hostname or IP without scheme, credentials or port.
adapter.proxyLoginstringNoOptional proxy authentication username. Provide username and password together.
adapter.proxyPasswordstringNoOptional password for that same proxy, paired with proxyLogin.
adapter.proxyPortintegerYesProxy TCP port, integer 1 to 65535.
adapter.apiServerstringNoOptional 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.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.tokenstringVerification token to submit to the target website.

VK_CAPTCHA

VK Captcha

Enabled

Timeout 144 s · Provider task type VKCaptchaTask

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "VK_CAPTCHA", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "image": "BASE64_IMAGE", // Base64-encoded challenge image.
    "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.
      5,
      19,
      14,
      0
    ],
    "proxyLogin": "YOUR_PROXYLOGIN", // Proxy username, when authentication is required.
    "proxyPassword": "YOUR_PROXYPASSWORD" // Proxy password, when authentication is required.
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "VK_CAPTCHA", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "best_step": 2, // Steps or actions required to complete the verification.
      "solution": [ // Steps or actions required to complete the verification.
        5, // Product-specific answer field; use it according to the target website verification protocol.
        19 // Product-specific answer field; use it according to the target website verification protocol.
      ],
      "answer": "EXAMPLE_VK_FORMATTED_ANSWER", // Recognized text or text answer.
      "preview": "BASE64_PREVIEW" // Product-specific answer field; use it according to the target website verification protocol.
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Solution fields are not documented yet. This example shows the response envelope only.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.imagestringConditionalBase64-encoded challenge image.
adapter.stepsstringConditionalOrdered 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.
adapter.redirectUristringConditionalFresh VK token challenge redirect URL; use instead of image/steps.
adapter.userAgentstringConditionalUser-Agent of the browser that obtained the challenge.
adapter.proxyTypestringConditionalProxy protocol, for example http.
adapter.proxyAddressstringConditionalProxy hostname or IP address.
adapter.proxyPortintegerConditionalProxy port.
adapter.proxyLoginstringNoProxy username, when authentication is required.
adapter.proxyPasswordstringNoProxy password, when authentication is required.

Choose one field group below and supply every field in that group: image + steps / redirectUri + userAgent + proxyType + proxyAddress + proxyPort

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.best_stepintegerSteps or actions required to complete the verification.
data.solution.solutionarraySteps or actions required to complete the verification.
data.solution.solution[]integerProduct-specific answer field; use it according to the target website verification protocol.
data.solution.answerstringRecognized text or text answer.
data.solution.previewstringProduct-specific answer field; use it according to the target website verification protocol.

TEMU

Temu Captcha

Enabled

Timeout 144 s · Provider task type TemuImageTask

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "TEMU", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "image": "BASE64_IMAGE", // Base64-encoded challenge image.
    "parts": [ // Array of Base64-encoded movable pieces, in response coordinate order.
      "BASE64_IMAGE"
    ]
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "TEMU", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "coordinates": [ // Click coordinates, with the origin at the top left of the image.
        { // Product-specific answer field; use it according to the target website verification protocol.
          "x": 20, // Horizontal coordinate in pixels.
          "y": 30 // Vertical coordinate in pixels.
        },
        { // Product-specific answer field; use it according to the target website verification protocol.
          "x": 50, // Horizontal coordinate in pixels.
          "y": 60 // Vertical coordinate in pixels.
        },
        { // Product-specific answer field; use it according to the target website verification protocol.
          "x": 80, // Horizontal coordinate in pixels.
          "y": 90 // Vertical coordinate in pixels.
        }
      ]
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.imagestringYesBase64-encoded challenge image.
adapter.partsarrayYesArray of Base64-encoded movable pieces, in response coordinate order.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.coordinatesarrayClick coordinates, with the origin at the top left of the image.
data.solution.coordinates[]objectProduct-specific answer field; use it according to the target website verification protocol.
data.solution.coordinates[].xintegerHorizontal coordinate in pixels.
data.solution.coordinates[].yintegerVertical coordinate in pixels.

ALTCHA

Altcha Captcha

Enabled

Timeout 144 s · Provider task type AltchaTask

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "ALTCHA", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "websiteURL": "https://example.com/register", // Full URL of the page containing the challenge.
    "challengeURL": "https://example.com/altcha/challenge", // URL returning the current ALTCHA challenge.
    "proxyType": "http", // Proxy protocol, for example http.
    "proxyAddress": "YOUR_PROXY_HOST", // Proxy hostname or IP address.
    "proxyPort": 8080, // Proxy port.
    "proxyLogin": "YOUR_PROXYLOGIN", // Proxy username, when authentication is required.
    "proxyPassword": "YOUR_PROXYPASSWORD" // Proxy password, when authentication is required.
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "ALTCHA", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "token": "EXAMPLE_TOKEN" // Verification token to submit to the target website.
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.websiteURLstringYesFull URL of the page containing the challenge.
adapter.challengeURLstringConditionalURL returning the current ALTCHA challenge.
adapter.challengeJSONstringConditionalSerialized ALTCHA challenge JSON; use instead of challengeURL.
adapter.proxyTypestringNoProxy protocol, for example http.
adapter.proxyAddressstringNoProxy hostname or IP address.
adapter.proxyPortintegerNoProxy port.
adapter.proxyLoginstringNoProxy username, when authentication is required.
adapter.proxyPasswordstringNoProxy password, when authentication is required.

Choose one field group below and supply every field in that group: challengeURL / challengeJSON

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.tokenstringVerification token to submit to the target website.

YIDUN_NE_CAPTCHA

Yidun Captcha

Enabled

Timeout 144 s · Provider task type YidunTaskProxyless

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "YIDUN_NE_CAPTCHA", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "websiteURL": "https://example.com/register", // Full URL of the page containing the challenge.
    "websiteKey": "YOUR_WEBSITEKEY", // Public site key from the target page.
    "userAgent": "YOUR_BROWSER_USER_AGENT", // Actual browser User-Agent from the matching target session.
    "yidunGetLib": "YOUR_YIDUNGETLIB", // Actual yidunGetLib from the matching current Yidun initialization/network context; omit when unused by that target.
    "yidunApiServerSubdomain": "YOUR_YIDUNAPISERVERSUBDOMAIN", // Actual yidunApiServerSubdomain from the matching current Yidun initialization/network context; omit when unused by that target.
    "challenge": "YOUR_CHALLENGE", // Actual challenge from the matching current Yidun initialization/network context; omit when unused by that target.
    "hcg": "YOUR_HCG", // Actual hcg from the matching current Yidun initialization/network context; omit when unused by that target.
    "hct": 1779358333191, // Numeric Enterprise timestamp identifier from the same target request; not a string or your local clock.
    "proxyType": "http", // Proxy protocol: http, socks4 or socks5; use the same actual egress as the target session when bound.
    "proxyAddress": "YOUR_PROXY_HOST", // Reachable proxy hostname or IP without scheme, credentials or port.
    "proxyLogin": "YOUR_PROXYLOGIN", // Optional proxy authentication username. Provide username and password together.
    "proxyPassword": "YOUR_PROXYPASSWORD", // Optional password for that same proxy, paired with proxyLogin.
    "proxyPort": 8080 // Proxy TCP port, integer 1 to 65535.
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "YIDUN_NE_CAPTCHA", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "token": "EXAMPLE_TOKEN" // Verification token to submit to the target website.
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.websiteURLstringYesFull URL of the page containing the challenge.
adapter.websiteKeystringYesPublic site key from the target page.
adapter.userAgentstringNoActual browser User-Agent from the matching target session.
adapter.yidunGetLibstringNoActual yidunGetLib from the matching current Yidun initialization/network context; omit when unused by that target.
adapter.yidunApiServerSubdomainstringNoActual yidunApiServerSubdomain from the matching current Yidun initialization/network context; omit when unused by that target.
adapter.challengestringNoActual challenge from the matching current Yidun initialization/network context; omit when unused by that target.
adapter.hcgstringNoActual hcg from the matching current Yidun initialization/network context; omit when unused by that target.
adapter.hctintegerNoNumeric Enterprise timestamp identifier from the same target request; not a string or your local clock.
adapter.proxyTypestringNoProxy protocol: http, socks4 or socks5; use the same actual egress as the target session when bound.
adapter.proxyAddressstringNoReachable proxy hostname or IP without scheme, credentials or port.
adapter.proxyLoginstringNoOptional proxy authentication username. Provide username and password together.
adapter.proxyPasswordstringNoOptional password for that same proxy, paired with proxyLogin.
adapter.proxyPortintegerNoProxy TCP port, integer 1 to 65535.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.tokenstringVerification token to submit to the target website.

BINANCE

Binance Captcha

Enabled

Timeout 144 s · Provider task type BinanceTaskProxyless

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "BINANCE", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "websiteURL": "https://example.com/register", // Full URL of the page containing the challenge.
    "websiteKey": "login", // 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": "YOUR_BROWSER_USER_AGENT", // Actual browser User-Agent from the matching target session.
    "validateId": "CURRENT_VALIDATE_ID", // Fresh validateId/securityId/securityCheckResponseValidateId from the same current target precheck or captcha response. Do not reuse another session or a stale value.
    "proxyType": "http", // Proxy protocol: http, socks4 or socks5; use the same actual egress as the target session when bound.
    "proxyAddress": "YOUR_PROXY_HOST", // Reachable proxy hostname or IP without scheme, credentials or port.
    "proxyLogin": "YOUR_PROXYLOGIN", // Optional proxy authentication username. Provide username and password together.
    "proxyPassword": "YOUR_PROXYPASSWORD", // Optional password for that same proxy, paired with proxyLogin.
    "proxyPort": 8080 // Proxy TCP port, integer 1 to 65535.
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "BINANCE", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "token": "EXAMPLE_TOKEN", // Verification token to submit to the target website.
      "userAgent": "EXAMPLE_USERAGENT" // Browser User-Agent used to obtain the answer.
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.websiteURLstringYesFull URL of the page containing the challenge.
adapter.websiteKeystringYesThe 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.
adapter.userAgentstringNoActual browser User-Agent from the matching target session.
adapter.validateIdstringYesFresh validateId/securityId/securityCheckResponseValidateId from the same current target precheck or captcha response. Do not reuse another session or a stale value.
adapter.proxyTypestringNoProxy protocol: http, socks4 or socks5; use the same actual egress as the target session when bound.
adapter.proxyAddressstringNoReachable proxy hostname or IP without scheme, credentials or port.
adapter.proxyLoginstringNoOptional proxy authentication username. Provide username and password together.
adapter.proxyPasswordstringNoOptional password for that same proxy, paired with proxyLogin.
adapter.proxyPortintegerNoProxy TCP port, integer 1 to 65535.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.tokenstringVerification token to submit to the target website.
data.solution.userAgentstringBrowser User-Agent used to obtain the answer.

HUNT

Hunt Captcha

Enabled

Timeout 144 s · Provider task type HuntTask

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "HUNT", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "websiteURL": "https://example.com/register", // Full URL of the page containing the challenge.
    "websiteKey": "YOUR_WEBSITEKEY", // Legacy field retained for request compatibility; ignored upstream. It cannot replace the newly documented required product parameters.
    "userAgent": "YOUR_BROWSER_USER_AGENT", // Actual browser User-Agent from the matching target session.
    "apiGetLib": "https://example.com/hd-api/external/apps/APP_ID/api.js", // Full fresh URL of the Hunt api.js loaded by the current target page.
    "data": "CURRENT_META_TOKEN", // Second-stage meta.token returned by the target after the request with X-HD; omit for the first-stage fingerprint task.
    "proxyType": "http", // Proxy protocol: http, socks4 or socks5; use the same actual egress as the target session when bound.
    "proxyAddress": "YOUR_PROXY_HOST", // Reachable proxy hostname or IP without scheme, credentials or port.
    "proxyLogin": "YOUR_PROXYLOGIN", // Optional proxy authentication username. Provide username and password together.
    "proxyPassword": "YOUR_PROXYPASSWORD", // Optional password for that same proxy, paired with proxyLogin.
    "proxyPort": 8080 // Proxy TCP port, integer 1 to 65535.
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "HUNT", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "token": "EXAMPLE_TOKEN" // Verification token to submit to the target website.
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.websiteURLstringYesFull URL of the page containing the challenge.
adapter.websiteKeystringNoLegacy field retained for request compatibility; ignored upstream. It cannot replace the newly documented required product parameters.
adapter.userAgentstringNoActual browser User-Agent from the matching target session.
adapter.apiGetLibstringYesFull fresh URL of the Hunt api.js loaded by the current target page.
adapter.datastringNoSecond-stage meta.token returned by the target after the request with X-HD; omit for the first-stage fingerprint task.
adapter.proxyTypestringYesProxy protocol: http, socks4 or socks5; use the same actual egress as the target session when bound.
adapter.proxyAddressstringYesReachable proxy hostname or IP without scheme, credentials or port.
adapter.proxyLoginstringNoOptional proxy authentication username. Provide username and password together.
adapter.proxyPasswordstringNoOptional password for that same proxy, paired with proxyLogin.
adapter.proxyPortintegerYesProxy TCP port, integer 1 to 65535.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.tokenstringVerification token to submit to the target website.

TSPD

TSPD Captcha

Enabled

Timeout 144 s · Provider task type TspdTask

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "TSPD", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "websiteURL": "https://example.com/register", // Full URL of the page containing the challenge.
    "userAgent": "YOUR_BROWSER_USER_AGENT", // User-Agent of the browser that obtained the challenge.
    "tspdCookie": "YOUR_FRESH_TSPD_COOKIE", // TSPD cookie from the challenge session.
    "htmlPageBase64": "YOUR_FRESH_CHALLENGE_HTML_BASE64", // Base64-encoded full HTML of the current challenge page.
    "proxyType": "http", // Proxy protocol, for example http.
    "proxyAddress": "YOUR_PROXY_HOST", // Proxy hostname or IP address.
    "proxyPort": 8080, // Proxy port.
    "proxyLogin": "YOUR_PROXY_LOGIN", // Proxy username, when authentication is required.
    "proxyPassword": "YOUR_PROXY_PASSWORD" // Proxy password, when authentication is required.
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "TSPD", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "Domains": { // Verification results grouped by target domain.
        "example.com": { // Product-specific answer field; use it according to the target website verification protocol.
          "Cookies": { // Verification cookies for the target domain.
            "TS386a400d029": "EXAMPLE_TS386A400D029", // Product-specific answer field; use it according to the target website verification protocol.
            "TS386a400d078": "EXAMPLE_TS386A400D078", // Product-specific answer field; use it according to the target website verification protocol.
            "tspd_101_DID": "EXAMPLE_TSPD_101_DID" // Product-specific answer field; use it according to the target website verification protocol.
          }
        }
      }
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.websiteURLstringYesFull URL of the page containing the challenge.
adapter.userAgentstringNoUser-Agent of the browser that obtained the challenge.
adapter.tspdCookiestringYesTSPD cookie from the challenge session.
adapter.htmlPageBase64stringYesBase64-encoded full HTML of the current challenge page.
adapter.proxyTypestringYesProxy protocol, for example http.
adapter.proxyAddressstringYesProxy hostname or IP address.
adapter.proxyPortintegerYesProxy port.
adapter.proxyLoginstringNoProxy username, when authentication is required.
adapter.proxyPasswordstringNoProxy password, when authentication is required.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.DomainsobjectVerification results grouped by target domain.
data.solution.Domains.example.comobjectProduct-specific answer field; use it according to the target website verification protocol.
data.solution.Domains.example.com.CookiesobjectVerification cookies for the target domain.
data.solution.Domains.example.com.Cookies.TS386a400d029stringProduct-specific answer field; use it according to the target website verification protocol.
data.solution.Domains.example.com.Cookies.TS386a400d078stringProduct-specific answer field; use it according to the target website verification protocol.
data.solution.Domains.example.com.Cookies.tspd_101_DIDstringProduct-specific answer field; use it according to the target website verification protocol.

BASILISK

Basilisk Captcha

Enabled

Timeout 144 s · Provider task type BasiliskTaskProxyless

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "BASILISK", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "websiteURL": "https://example.com/register", // Full URL of the page containing the challenge.
    "websiteKey": "YOUR_WEBSITEKEY", // Public site key from the target page.
    "userAgent": "YOUR_BROWSER_USER_AGENT" // User-Agent of the browser that obtained the challenge.
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "BASILISK", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "data": { // Product-specific answer field; use it according to the target website verification protocol.
        "captcha_response": "EXAMPLE_CAPTCHA_RESPONSE" // Verification token to submit to the target website.
      },
      "headers": { // HTTP headers used with the verification result.
        "User-Agent": "EXAMPLE_USER_AGENT" // Browser User-Agent used to obtain the answer.
      }
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.websiteURLstringYesFull URL of the page containing the challenge.
adapter.websiteKeystringYesPublic site key from the target page.
adapter.userAgentstringNoUser-Agent of the browser that obtained the challenge.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.dataobjectProduct-specific answer field; use it according to the target website verification protocol.
data.solution.data.captcha_responsestringVerification token to submit to the target website.
data.solution.headersobjectHTTP headers used with the verification result.
data.solution.headers.User-AgentstringBrowser User-Agent used to obtain the answer.

IMPERVA

Imperva Captcha

Enabled

Timeout 144 s · Provider task type ImpervaTask

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "IMPERVA", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "websiteURL": "https://example.com/register", // Full URL of the actual Imperva-protected page. Collect the script and cookies from this same target session.
    "websiteKey": "YOUR_WEBSITEKEY", // Deprecated compatibility field, ignored for Imperva. A site key cannot replace the required script, cookies or proxy.
    "incapsulaScriptUrl": "/_Incapsula_Resource?SWJIYLWA=YOUR_CURRENT_SCRIPT_ID", // 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": "incap_ses_YOUR_ID=YOUR_SESSION_VALUE; visid_incap_YOUR_ID=YOUR_VISITOR_VALUE", // 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": "YOUR_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": "YOUR_BROWSER_USER_AGENT", // 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": "http", // Required upstream proxy protocol: http, socks4 or socks5. This Imperva integration has no documented proxyless mode.
    "proxyAddress": "YOUR_PROXY_HOST", // 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": 8080, // Proxy TCP port, an integer from 1 to 65535; not a URL or a host:port string.
    "proxyLogin": "YOUR_PROXYLOGIN", // Username for the supplied proxy when authentication is required; not your Nex Captcha API key.
    "proxyPassword": "YOUR_PROXYPASSWORD" // Password for the supplied proxy when authentication is required. Preserve the original credential.
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "IMPERVA", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "domains": { // Verification results grouped by target domain.
        "https://site-example.com": { // Product-specific answer field; use it according to the target website verification protocol.
          "cookies": { // Verification cookies for the target domain.
            "___utmvc": "EXAMPLE____UTMVC" // Product-specific answer field; use it according to the target website verification protocol.
          }
        }
      }
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.websiteURLstringYesFull URL of the actual Imperva-protected page. Collect the script and cookies from this same target session.
adapter.websiteKeystringNoDeprecated compatibility field, ignored for Imperva. A site key cannot replace the required script, cookies or proxy.
adapter.incapsulaScriptUrlstringYesFresh 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.
adapter.incapsulaCookiesstringYesCookie-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.
adapter.reese84UrlEndpointstringNoOptional actual Reese84 endpoint observed in target network requests, commonly ending in ?d=the-target-host. Omit when not present; do not invent it.
adapter.userAgentstringNoActual User-Agent used to collect this session. Keep it consistent when applying the returned cookies, or use the returned User-Agent when supplied.
adapter.proxyTypestringYesRequired upstream proxy protocol: http, socks4 or socks5. This Imperva integration has no documented proxyless mode.
adapter.proxyAddressstringYesReachable proxy hostname or IP, separate from its port and credentials. Use the same proxy egress for challenge collection, solving and subsequent target requests.
adapter.proxyPortintegerYesProxy TCP port, an integer from 1 to 65535; not a URL or a host:port string.
adapter.proxyLoginstringNoUsername for the supplied proxy when authentication is required; not your Nex Captcha API key.
adapter.proxyPasswordstringNoPassword for the supplied proxy when authentication is required. Preserve the original credential.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.domainsobjectVerification results grouped by target domain.
data.solution.domains.https://site-example.comobjectProduct-specific answer field; use it according to the target website verification protocol.
data.solution.domains.https://site-example.com.cookiesobjectVerification cookies for the target domain.
data.solution.domains.https://site-example.com.cookies.___utmvcstringProduct-specific answer field; use it according to the target website verification protocol.

ALIBABA

Alibaba Captcha

Enabled

Timeout 144 s · Provider task type AlibabaTask

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "ALIBABA", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "websiteURL": "https://example.com/register", // Full URL of the page containing the challenge.
    "sceneId": "YOUR_SCENEID", // Alibaba scene identifier.
    "prefix": "YOUR_PREFIX", // Alibaba challenge prefix.
    "userId": "YOUR_USERID", // User identifier supplied by the target integration.
    "userUserId": "YOUR_USERUSERID", // User identifier supplied by the target integration.
    "verifyType": "YOUR_VERIFYTYPE", // Target verification mode.
    "region": "YOUR_REGION", // Target verification region.
    "userCertifyId": "YOUR_USERCERTIFYID", // Target verification identifier.
    "apiGetLib": "YOUR_APIGETLIB", // Target API library URL.
    "userAgent": "YOUR_BROWSER_USER_AGENT" // User-Agent of the browser that obtained the challenge.
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "ALIBABA", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "data": { // Product-specific answer field; use it according to the target website verification protocol.
        "tokens": "{\"sceneId\":\"EXAMPLE_SCENE_ID\",\"certifyId\":\"EXAMPLE_CERTIFY_ID\",\"deviceToken\":\"EXAMPLE_DEVICE_TOKEN\",\"data\":\"EXAMPLE_DATA\"}" // Verification token to submit to the target website.
      }
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.websiteURLstringYesFull URL of the page containing the challenge.
adapter.sceneIdstringYesAlibaba scene identifier.
adapter.prefixstringYesAlibaba challenge prefix.
adapter.userIdstringNoUser identifier supplied by the target integration.
adapter.userUserIdstringNoUser identifier supplied by the target integration.
adapter.verifyTypestringNoTarget verification mode.
adapter.regionstringNoTarget verification region.
adapter.userCertifyIdstringNoTarget verification identifier.
adapter.apiGetLibstringNoTarget API library URL.
adapter.userAgentstringNoUser-Agent of the browser that obtained the challenge.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.dataobjectProduct-specific answer field; use it according to the target website verification protocol.
data.solution.data.tokensstringVerification token to submit to the target website.

YANDEX_SMARTCAPTCHA

Yandex SmartCaptcha

Enabled

Timeout 144 s · Provider task type YandexSmartCaptchaTaskProxyless

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "YANDEX_SMARTCAPTCHA", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "websiteURL": "https://example.com/register", // Full URL of the page containing the challenge.
    "websiteKey": "YOUR_WEBSITEKEY", // Public site key from the target page.
    "userAgent": "YOUR_BROWSER_USER_AGENT", // User-Agent of the browser that obtained the challenge.
    "cookies": "YOUR_COOKIES", // Cookies from the browser session that obtained the challenge.
    "proxyType": "http", // Proxy protocol, for example http.
    "proxyAddress": "YOUR_PROXY_HOST", // Proxy hostname or IP address.
    "proxyPort": 8080, // Proxy port.
    "proxyLogin": "YOUR_PROXYLOGIN", // Proxy username, when authentication is required.
    "proxyPassword": "YOUR_PROXYPASSWORD" // Proxy password, when authentication is required.
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "YANDEX_SMARTCAPTCHA", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "token": "EXAMPLE_TOKEN" // Verification token to submit to the target website.
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.websiteURLstringYesFull URL of the page containing the challenge.
adapter.websiteKeystringYesPublic site key from the target page.
adapter.userAgentstringNoUser-Agent of the browser that obtained the challenge.
adapter.cookiesstringNoCookies from the browser session that obtained the challenge.
adapter.proxyTypestringNoProxy protocol, for example http.
adapter.proxyAddressstringNoProxy hostname or IP address.
adapter.proxyPortintegerNoProxy port.
adapter.proxyLoginstringNoProxy username, when authentication is required.
adapter.proxyPasswordstringNoProxy password, when authentication is required.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.tokenstringVerification token to submit to the target website.

RUSSIAN_CAPTCHA

Russian Captcha

Enabled

Timeout 144 s · Provider task type ImageToTextTask

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "RUSSIAN_CAPTCHA", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "body": "BASE64_CONTENT", // Base64-encoded image or audio content.
    "phrase": false, // Whether the answer contains multiple words.
    "caseSensitive": false, // Whether the answer is case-sensitive.
    "numeric": false, // Character recognition mode.
    "math": false, // Whether to calculate the expression shown in the image.
    "minLength": 1, // Minimum answer length.
    "maxLength": 1, // Maximum answer length.
    "comment": "YOUR_COMMENT", // Question or instructions for solving the challenge.
    "imgInstructions": "YOUR_IMGINSTRUCTIONS" // Base64-encoded image instructions.
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "RUSSIAN_CAPTCHA", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "text": "EXAMPLE_ANSWER" // Recognized text or text answer.
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.bodystringYesBase64-encoded image or audio content.
adapter.phrasebooleanNoWhether the answer contains multiple words.
adapter.caseSensitivebooleanNoWhether the answer is case-sensitive.
adapter.numericbooleanNoCharacter recognition mode.
adapter.mathbooleanNoWhether to calculate the expression shown in the image.
adapter.minLengthintegerNoMinimum answer length.
adapter.maxLengthintegerNoMaximum answer length.
adapter.commentstringNoQuestion or instructions for solving the challenge.
adapter.imgInstructionsstringNoBase64-encoded image instructions.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.textstringRecognized text or text answer.

CHINESE_CAPTCHA

Chinese Captcha

Enabled

Timeout 144 s · Provider task type ImageToTextTask

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "CHINESE_CAPTCHA", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "body": "BASE64_CONTENT", // Base64-encoded image or audio content.
    "phrase": false, // Whether the answer contains multiple words.
    "caseSensitive": false, // Whether the answer is case-sensitive.
    "numeric": false, // Character recognition mode.
    "math": false, // Whether to calculate the expression shown in the image.
    "minLength": 1, // Minimum answer length.
    "maxLength": 1, // Maximum answer length.
    "comment": "YOUR_COMMENT", // Question or instructions for solving the challenge.
    "imgInstructions": "YOUR_IMGINSTRUCTIONS" // Base64-encoded image instructions.
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "CHINESE_CAPTCHA", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "text": "EXAMPLE_ANSWER" // Recognized text or text answer.
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.bodystringYesBase64-encoded image or audio content.
adapter.phrasebooleanNoWhether the answer contains multiple words.
adapter.caseSensitivebooleanNoWhether the answer is case-sensitive.
adapter.numericbooleanNoCharacter recognition mode.
adapter.mathbooleanNoWhether to calculate the expression shown in the image.
adapter.minLengthintegerNoMinimum answer length.
adapter.maxLengthintegerNoMaximum answer length.
adapter.commentstringNoQuestion or instructions for solving the challenge.
adapter.imgInstructionsstringNoBase64-encoded image instructions.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.textstringRecognized text or text answer.

NUMBER_CAPTCHA

Number Captcha

Enabled

Timeout 144 s · Provider task type ImageToTextTask

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "NUMBER_CAPTCHA", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "body": "BASE64_CONTENT", // Base64-encoded image or audio content.
    "phrase": false, // Whether the answer contains multiple words.
    "caseSensitive": false, // Whether the answer is case-sensitive.
    "numeric": false, // Character recognition mode.
    "math": false, // Whether to calculate the expression shown in the image.
    "minLength": 1, // Minimum answer length.
    "maxLength": 1, // Maximum answer length.
    "comment": "YOUR_COMMENT", // Question or instructions for solving the challenge.
    "imgInstructions": "YOUR_IMGINSTRUCTIONS" // Base64-encoded image instructions.
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "NUMBER_CAPTCHA", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "text": "EXAMPLE_ANSWER" // Recognized text or text answer.
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.bodystringYesBase64-encoded image or audio content.
adapter.phrasebooleanNoWhether the answer contains multiple words.
adapter.caseSensitivebooleanNoWhether the answer is case-sensitive.
adapter.numericbooleanNoCharacter recognition mode.
adapter.mathbooleanNoWhether to calculate the expression shown in the image.
adapter.minLengthintegerNoMinimum answer length.
adapter.maxLengthintegerNoMaximum answer length.
adapter.commentstringNoQuestion or instructions for solving the challenge.
adapter.imgInstructionsstringNoBase64-encoded image instructions.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.textstringRecognized text or text answer.

MATH_CAPTCHA

Math Captcha

Enabled

Timeout 144 s · Provider task type ImageToTextTask

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "MATH_CAPTCHA", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "body": "BASE64_CONTENT", // Base64-encoded image or audio content.
    "phrase": false, // Whether the answer contains multiple words.
    "caseSensitive": false, // Whether the answer is case-sensitive.
    "numeric": false, // Character recognition mode.
    "math": false, // Whether to calculate the expression shown in the image.
    "minLength": 1, // Minimum answer length.
    "maxLength": 1, // Maximum answer length.
    "comment": "YOUR_COMMENT", // Question or instructions for solving the challenge.
    "imgInstructions": "YOUR_IMGINSTRUCTIONS" // Base64-encoded image instructions.
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "MATH_CAPTCHA", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "text": "EXAMPLE_ANSWER" // Recognized text or text answer.
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.bodystringYesBase64-encoded image or audio content.
adapter.phrasebooleanNoWhether the answer contains multiple words.
adapter.caseSensitivebooleanNoWhether the answer is case-sensitive.
adapter.numericbooleanNoCharacter recognition mode.
adapter.mathbooleanNoWhether to calculate the expression shown in the image.
adapter.minLengthintegerNoMinimum answer length.
adapter.maxLengthintegerNoMaximum answer length.
adapter.commentstringNoQuestion or instructions for solving the challenge.
adapter.imgInstructionsstringNoBase64-encoded image instructions.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.textstringRecognized text or text answer.

CUSTOM

Custom Captcha

Enabled

Timeout 144 s

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "CUSTOM", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "body": "BASE64_CONTENT", // Base64-encoded image or audio content.
    "comment": "YOUR_COMMENT" // Question or instructions for solving the challenge.
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "CUSTOM", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": {} // Product answer when SUCCEEDED; empty while processing or on failure.
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Solution fields are not documented yet. This example shows the response envelope only.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.bodystringNoBase64-encoded image or audio content.
adapter.commentstringNoQuestion or instructions for solving the challenge.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action

HCAPTCHA

hCaptcha

Enabled

Timeout 600 s · Provider task type HCaptchaTaskProxyless

Request example

POST /api/validator/create.cgi · JSONC
{
  "productCode": "HCAPTCHA", // Product code matching the adapter parameters.
  "adapter": { // Product-specific parameter object.
    "websiteURL": "https://example.com/register", // Full URL of the target page containing the current hCaptcha widget; not the hcaptcha.com iframe URL.
    "websiteKey": "YOUR_WEBSITEKEY" // Public hCaptcha sitekey from the current target widget data-sitekey or hcaptcha.render configuration. Never use a reCAPTCHA key or the account secret.
  }
}

Request headers: apiKey: YOUR_API_KEY

Comments explain the fields. Copy produces valid JSON without comments.

Response example

POST /api/validator/query.cgi · JSONC
{
  "code": 0, // Business result code: 0 means success; other values indicate an error.
  "msg": "Success", // Result message; may be empty on success.
  "data": { // Response data; may be null on an error.
    "taskId": "11111111-1111-4111-8111-111111111111", // Task ID returned by task creation.
    "productCode": "HCAPTCHA", // Product code matching the adapter parameters.
    "state": "SUCCEEDED", // Task state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
    "solution": { // Product answer when SUCCEEDED; empty while processing or on failure.
      "gRecaptchaResponse": "EXAMPLE_HCAPTCHA_TOKEN" // Verification token to submit to the target website.
    }
  }
}

Creating a task returns its ID and initial state. Query the result or use WebSocket to receive the completed answer shown below.

Solution fields are not documented yet. This example shows the response envelope only.

Request parameters

FieldTypeRequiredDescription
productCodestringYesProduct code matching the adapter parameters.
adapterobjectYesProduct-specific parameter object.
adapter.websiteURLstringYesFull URL of the target page containing the current hCaptcha widget; not the hcaptcha.com iframe URL.
adapter.websiteKeystringYesPublic hCaptcha sitekey from the current target widget data-sitekey or hcaptcha.render configuration. Never use a reCAPTCHA key or the account secret.

Response parameters

FieldTypeDescription
codeintegerBusiness result code: 0 means success; other values indicate an error.
msgstringResult message; may be empty on success.
dataobject | nullResponse data; may be null on an error.
data.taskIdstringTask ID returned by task creation.
data.productCodestringProduct code matching the adapter parameters.
data.statestringTask state: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED or EXPIRED.
data.solutionobjectProduct answer when SUCCEEDED; empty while processing or on failure.
data.failureobject | omittedPublic diagnosis for FAILED/EXPIRED only; no raw provider messages. Follow the failure handling guide.
data.failure.codestringFailure code
data.failure.nextActionstringNext action
data.solution.gRecaptchaResponsestringVerification token to submit to the target website.