Skip to main content

CAPTCHA Solving

Read NexCaptcha products and prices and each product's parameter model, submit solving tasks, list task records, and query results. Submitting a task takes only the product code and adapter; the server pre-charges the current price. Failed or expired tasks are refunded automatically by the server.

Recommended flow: pick a product with /captcha/products → read its parameters with /captcha/schema → submit with /captcha/buy → poll /captcha/query until a terminal state. For CAPTCHAs on a page, the captchaInspect and captchaApply automation actions collect the parameters and fill in the answer. For the conventions shared by all service endpoints, see Service and authentication.

For page CAPTCHAs through MCP, call nex_browser_captcha_prepare for free, then call nex_browser_captcha_submit with only prepareId to charge directly, and call nex_browser_captcha_complete with the same ID. Later grid rounds return nextPrepareId and nextPreparation; submit the new preparation as needed, without quotation or fee confirmation.

Normal Grid continuation is not a solving failure; follow the returned continuation instructions without duplicate submissions. A confirmed failed/expired task or site-rejected answer may reconcile the original task and billing, acquire a fresh challenge and retry automatically. Interactive recovery defaults to at most 3 attempts including the first; a new paid submission counts toward that limit. Unknown payment/task outcomes permit querying the original record, not duplicate purchases. Insufficient balance stops further spending.

Showing 5 of 5 endpoints

GET/captcha/products

List solving products

Lists the currently enabled CAPTCHA solving products and their per-request prices; productCode is used to read the parameter model and submit tasks.

AuthBearer API Key

Request parameters

None

Notes

  • price does not need further multiplication or rounding.
  • Before submitting a task, call /captcha/schema to read the product's parameter requirements.

Response fields

FieldTypeDescription
contextIdstringSign-in and team context identifier for this request, usable as X-Nex-Service-Context in subsequent requests
dataobject[]Product list
data[].productCodestringProduct code, case-sensitive
data[].namestringProduct name
data[].descriptionstringProduct description
data[].pricenumberPer-request price, USDT, already rounded up to 3 decimal places by the server; the server calculates the actual charge
data[].iconBase64stringProduct icon, may be null
data[].sortOrdernumberSort value

Response example

{
"code": 0,
"msg": "成功",
"data": [
{
"productCode": "RECAPTCHA_V2",
"name": "reCAPTCHA v2",
"description": "产品描述",
"price": 0.005,
"iconBase64": null,
"sortOrder": 2
}
],
"contextId": "a3f5c2e1b7d94c0e8f6a1b2c3d4e5f60a3f5c2e1b7d94c0e8f6a1b2c3d4e5f6"
}
POST/captcha/schema

Get product parameter model

Reads the product's current adapter parameter schema, examples, result contract, and integration flow notes; free, and no task is created.

AuthBearer API Key

Request parameters

FieldTypeRequiredDescription
productCodestringRequiredProduct code, must exactly match /captcha/products, with case and spaces preserved

Notes

  • An empty or whitespace-only productCode returns -1100; products not recognized upstream return a server error code with the original msg preserved.
  • Notes are returned according to Accept-Language; parameter names and raw schema descriptions are not guaranteed to be translated.

Response fields

FieldTypeDescription
contextIdstringSign-in and team context identifier for this request, usable as X-Nex-Service-Context in subsequent requests
data.productCodestringProduct code
data.schemaobjectJSON Schema of adapter, including constraints such as required, oneOf, allowed values, and extra fields
data.exampleobjectMinimal placeholder example; must be replaced with real parameters from the target page
data.integrationobjectApplicable flows, input sources, result type resultSchema, and limitations
data.integration.readinessstringIntegration status; DOCUMENTATION_REQUIRED means the documentation is incomplete and paid tasks must not be created based on it
data.integration.workflowsstring[]Allowed flows, e.g. HTTP_SUBMIT, BROWSER_RESULT, BROWSER_INTERACTION
data.workflowGuideobjectGeneral flow, completion stages, and failure handling guidance

Response example

{
"code": 0,
"msg": "成功",
"data": {
"productCode": "RECAPTCHA_V2",
"schema": {
"type": "object",
"required": [
"websiteURL",
"websiteKey"
],
"properties": {
"websiteURL": {
"type": "string"
},
"websiteKey": {
"type": "string"
}
}
},
"example": {
"websiteURL": "https://example.com/register",
"websiteKey": "<site-key>"
},
"integration": {
"readiness": "READY",
"workflows": [
"HTTP_SUBMIT",
"BROWSER_RESULT"
],
"resultKind": "TOKEN",
"resultSchema": {
"type": "object"
}
},
"workflowGuide": {}
},
"contextId": "a3f5c2e1b7d94c0e8f6a1b2c3d4e5f60a3f5c2e1b7d94c0e8f6a1b2c3d4e5f6"
}
POST/captcha/buy

Submit solving task

Creates an asynchronous solving task from the product and adapter parameters and pre-charges one fee; successful creation does not mean the CAPTCHA has been solved.

AuthBearer API Key

Request parameters

FieldTypeRequiredDescription
productCodestringRequiredProduct code, from /captcha/products
adapterobjectRequiredProduct parameter object; fill in the real challenge parameters according to the schema from /captcha/schema. Some products allow {}, but it cannot be omitted or null

Notes

  • After business parameter validation, the request is submitted once and the server calculates and charges the current price. The client does not pre-check prices, stock, or plans; the server validates permission and balance.
  • Not retried automatically after submission; on timeout or an unclear result, check /captcha/records and /billing/trades first instead of purchasing again.
  • Returns -1100 if an identical purchase under the same sign-in and team is still processing; also returns -1100 if no team is selected.
  • The server calculates the fee at the current price; adapter is not stored in the task record and is not echoed.
  • This endpoint only creates the solving task; it does not submit the answer to the target website for you.

Response fields

FieldTypeDescription
contextIdstringSign-in and team context identifier for this request, usable as X-Nex-Service-Context in subsequent requests
dataobjectNewly created task record, state is initially CREATED
data.idnumberLocal task ID, used for queries
data.userIdnumberSubmitting user ID
data.teamIdnumberTeam ID at submission time
data.taskIdstringUpstream task ID, not used as a query parameter
data.productCodestringProduct code
data.pricenumberActual pre-charged amount, unchanged after a refund
data.productstringJSON text of the product snapshot at submission time
data.statestringState: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED, EXPIRED
data.solutionstringJSON text of the answer object, may contain text, token, or product-specific fields
data.createdAtstringCreation time
data.updatedAtstringUpdate time

Response example

{
"code": 0,
"msg": "成功",
"data": {
"id": 101,
"userId": 1001,
"teamId": 2001,
"taskId": "upstream-task-7f3a",
"productCode": "RECAPTCHA_V2",
"price": 0.005,
"product": "{\"productCode\":\"RECAPTCHA_V2\",\"name\":\"reCAPTCHA v2\",\"price\":0.005}",
"state": "CREATED",
"solution": "{}",
"createdAt": "2026-10-23 10:00:00",
"updatedAt": "2026-10-23 10:00:00"
},
"contextId": "a3f5c2e1b7d94c0e8f6a1b2c3d4e5f60a3f5c2e1b7d94c0e8f6a1b2c3d4e5f6"
}
GET/captcha/records

Solving task records

Pages through the current user's solving tasks in the current team, in all states.

AuthBearer API Key

Request parameters

FieldTypeRequiredDescription
pagenumberOptionalPage number, default 1
sizenumberOptionalPage size, default 20, max 1000
keywordstringOptionalKeyword, fuzzy-matches productCode

Notes

  • Returned in descending order of local ID; after a refund, price is still the original pre-charged amount. See /billing/trades for the refund transaction.

Response fields

FieldTypeDescription
contextIdstringSign-in and team context identifier for this request, usable as X-Nex-Service-Context in subsequent requests
data.countnumberTotal number of matching records
data.sizenumberPage size, echoes the request value
data.pagenumberCurrent page number, echoes the request value
data.totalnumberTotal number of pages
data.dataobject[]Records on the current page
data.data[].idnumberLocal task ID, used for queries
data.data[].userIdnumberSubmitting user ID
data.data[].teamIdnumberTeam ID at submission time
data.data[].taskIdstringUpstream task ID, not used as a query parameter
data.data[].productCodestringProduct code
data.data[].pricenumberActual pre-charged amount, unchanged after a refund
data.data[].productstringJSON text of the product snapshot at submission time
data.data[].statestringState: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED, EXPIRED
data.data[].solutionstringJSON text of the answer object, may contain text, token, or product-specific fields
data.data[].createdAtstringCreation time
data.data[].updatedAtstringUpdate time

Response example

{
"code": 0,
"msg": "成功",
"data": {
"count": 1,
"size": 20,
"page": 1,
"total": 1,
"data": [
{
"id": 101,
"userId": 1001,
"teamId": 2001,
"taskId": "upstream-task-7f3a",
"productCode": "RECAPTCHA_V2",
"price": 0.005,
"product": "{\"productCode\":\"RECAPTCHA_V2\",\"name\":\"reCAPTCHA v2\",\"price\":0.005}",
"state": "SUCCEEDED",
"solution": "{\"token\":\"03AFcWeA...\"}",
"createdAt": "2026-10-23 10:00:00",
"updatedAt": "2026-10-23 10:00:00"
}
]
},
"contextId": "a3f5c2e1b7d94c0e8f6a1b2c3d4e5f60a3f5c2e1b7d94c0e8f6a1b2c3d4e5f6"
}
POST/captcha/query

Get solving result

Queries the progress and answer of a single local task; for non-terminal states, the server refreshes it from upstream.

AuthBearer API Key

Request parameters

FieldTypeRequiredDescription
idnumberRequiredLocal task ID, not the upstream taskId

Notes

  • Query every 3 to 5 seconds; SUCCEEDED, FAILED, and EXPIRED are terminal, so stop polling once one is reached. At most 5 requests per 3 seconds per user.
  • FAILED and EXPIRED tasks are automatically refunded at the original price by the server; network errors or unknown states do not count as failures and are not refunded. There is no cancel or manual refund endpoint.
  • Tasks that do not exist, belong to another user, or are not in the current team return -1005.

Response fields

FieldTypeDescription
contextIdstringSign-in and team context identifier for this request, usable as X-Nex-Service-Context in subsequent requests
dataobjectUpdated task record
data.idnumberLocal task ID, used for queries
data.userIdnumberSubmitting user ID
data.teamIdnumberTeam ID at submission time
data.taskIdstringUpstream task ID, not used as a query parameter
data.productCodestringProduct code
data.pricenumberActual pre-charged amount, unchanged after a refund
data.productstringJSON text of the product snapshot at submission time
data.statestringState: CREATED, SUBMITTING, PROCESSING, SUCCEEDED, FAILED, EXPIRED
data.solutionstringJSON text of the answer object, may contain text, token, or product-specific fields
data.createdAtstringCreation time
data.updatedAtstringUpdate time

Response example

{
"code": 0,
"msg": "成功",
"data": {
"id": 101,
"userId": 1001,
"teamId": 2001,
"taskId": "upstream-task-7f3a",
"productCode": "RECAPTCHA_V2",
"price": 0.005,
"product": "{\"productCode\":\"RECAPTCHA_V2\",\"name\":\"reCAPTCHA v2\",\"price\":0.005}",
"state": "SUCCEEDED",
"solution": "{\"token\":\"03AFcWeA...\"}",
"createdAt": "2026-10-23 10:00:00",
"updatedAt": "2026-10-23 10:00:12"
},
"contextId": "a3f5c2e1b7d94c0e8f6a1b2c3d4e5f60a3f5c2e1b7d94c0e8f6a1b2c3d4e5f6"
}