Skip to main content

Migration

Migration compatibility

Xsolve supports the native /task API and compatibility endpoints for common solver formats. For most migrations, keep your existing request body and change only:

  1. API base URL to https://api.xsolve.me
  2. API key to your Xsolve key

Endpoint map

Provider style Old endpoint Xsolve endpoint Auth
Solverify /createTask https://api.xsolve.me/createTask clientKey in JSON
Solverify /getTaskResult https://api.xsolve.me/getTaskResult clientKey in JSON
NSLSolver /solve https://api.xsolve.me/solve X-API-Key header
CapSolver /createTask https://api.xsolve.me/createTask clientKey in JSON
CapSolver /getTaskResult https://api.xsolve.me/getTaskResult clientKey in JSON
Anti-Captcha /createTask https://api.xsolve.me/createTask clientKey in JSON
Anti-Captcha /getTaskResult https://api.xsolve.me/getTaskResult clientKey in JSON
CapMonster /createTask https://api.xsolve.me/createTask clientKey in JSON
CapMonster /getTaskResult https://api.xsolve.me/getTaskResult clientKey in JSON
NextCaptcha /createTask https://api.xsolve.me/createTask clientKey in JSON
NextCaptcha /getTaskResult https://api.xsolve.me/getTaskResult clientKey in JSON
EzCaptcha /createTask https://api.xsolve.me/createTask clientKey in JSON
EzCaptcha /getTaskResult https://api.xsolve.me/getTaskResult clientKey in JSON
2Captcha JSON /createTask https://api.xsolve.me/createTask clientKey in JSON
2Captcha JSON /getTaskResult https://api.xsolve.me/getTaskResult clientKey in JSON
2Captcha / CapMonster classic /in.php https://api.xsolve.me/in.php key query or form field
2Captcha / CapMonster classic /res.php https://api.xsolve.me/res.php key query or form field
NopeCHA /token https://api.xsolve.me/token key in JSON or query
NopeCHA balance /status https://api.xsolve.me/status key in JSON or query
DeathByCaptcha /api/captcha https://api.xsolve.me/api/captcha authtoken or password
DeathByCaptcha balance /api/user https://api.xsolve.me/api/user authtoken or password
Shared JSON balance /getBalance https://api.xsolve.me/getBalance clientKey in JSON

/createTask, /in.php, /token, and /api/captcha return a task id immediately. Poll /getTaskResult, /res.php, GET /token, or GET /api/captcha/{id} until the result is ready.

Supported task types

Type family Accepted provider task types Xsolve mode
Turnstile turnstile, AntiTurnstileTaskProxyLess, AntiTurnstileTask, TurnstileTaskProxyless, TurnstileTaskProxyLess, TurnstileTask with a sitekey, CloudFlareTurnstileTask turnstile
Cloudflare challenge / interstitial interstitial, challenge, cloudflare-challenge, AntiCloudflareTask, CloudFlare5S, TurnstileTask without a sitekey iuam

Solverify-compatible

Use your Xsolve API key as clientKey.

curl -X POST https://api.xsolve.me/createTask \
  -H "Content-Type: application/json" \
  -d '{
    "clientKey": "<xsolve-api-key>",
    "task": {
      "type": "turnstile",
      "websiteURL": "https://example.com",
      "websiteKey": "0x4AAAAAAA...",
      "action": "login",
      "cdata": "optional-cdata"
    }
  }'

/getTaskResult returns Solverify-style status: "completed" for Solverify task names:

{
  "errorId": 0,
  "taskId": "xsolve-task-id",
  "status": "completed",
  "solution": {
    "value": "0.turnstile-token..."
  },
  "errorCode": null,
  "errorDescription": null
}

NSLSolver-compatible

Use the same /solve shape and set X-API-Key to your Xsolve API key.

curl -X POST https://api.xsolve.me/solve \
  -H "Content-Type: application/json" \
  -H "X-API-Key: <xsolve-api-key>" \
  -d '{
    "type": "turnstile",
    "site_key": "0x4AAAAAAA...",
    "url": "https://example.com/login",
    "action": "login",
    "cdata": "optional-cdata",
    "proxy": "http://user:pass@host:8080",
    "user_agent": "Mozilla/5.0 ..."
  }'

Turnstile response:

{
  "success": true,
  "type": "turnstile",
  "token": "0.turnstile-token...",
  "cost": 0
}

Challenge response:

{
  "success": true,
  "type": "challenge",
  "cookies": {
    "cf_clearance": "clearance-cookie..."
  },
  "user_agent": "Mozilla/5.0 ...",
  "token": "clearance-cookie...",
  "cost": 0
}

CapSolver-compatible

Use your Xsolve API key as clientKey.

curl -X POST https://api.xsolve.me/createTask \
  -H "Content-Type: application/json" \
  -d '{
    "clientKey": "<xsolve-api-key>",
    "task": {
      "type": "AntiTurnstileTaskProxyLess",
      "websiteURL": "https://example.com",
      "websiteKey": "0x4AAAAAAA...",
      "metadata": {
        "action": "login",
        "cdata": "optional-cdata"
      }
    }
  }'

CapSolver-style task results return status: "ready":

{
  "errorId": 0,
  "taskId": "xsolve-task-id",
  "status": "ready",
  "solution": {
    "token": "0.turnstile-token...",
    "type": "turnstile"
  },
  "errorCode": null,
  "errorDescription": null
}

Anti-Captcha, CapMonster, NextCaptcha, EzCaptcha, and 2Captcha JSON

These providers share /createTask and /getTaskResult. Use your Xsolve API key as clientKey.

curl -X POST https://api.xsolve.me/createTask \
  -H "Content-Type: application/json" \
  -d '{
    "clientKey": "<xsolve-api-key>",
    "task": {
      "type": "TurnstileTaskProxyless",
      "websiteURL": "https://example.com",
      "websiteKey": "0x4AAAAAAA...",
      "action": "login",
      "data": "optional-cdata"
    }
  }'

Poll /getTaskResult until status is "ready". The first response can be "processing".

2Captcha classic /in.php

Point official 2Captcha libraries at https://api.xsolve.me and use your Xsolve key as key.

curl "https://api.xsolve.me/in.php?key=<xsolve-api-key>&method=turnstile&sitekey=0x4AAAAAAA...&pageurl=https://example.com&json=1"

Text responses use OK|<id>, OK|<token>, and CAPCHA_NOT_READY. JSON responses use { "status": 1, "request": "..." }.

NopeCHA-compatible

Use /token and /status. /v1/token and /v1/status are also accepted.

curl -X POST https://api.xsolve.me/token \
  -H "Content-Type: application/json" \
  -d '{
    "key": "<xsolve-api-key>",
    "type": "turnstile",
    "sitekey": "0x4AAAAAAA...",
    "url": "https://example.com",
    "data": {
      "action": "login",
      "cdata": "optional-cdata"
    }
  }'

Create returns { "data": "<task-id>" }. A ready result returns { "data": "0.turnstile-token..." }. Incomplete jobs return { "error": 14, "message": "Incomplete job" }.

DeathByCaptcha-compatible

Use your Xsolve API key as authtoken, or as password if the client still sends username/password.

curl -X POST https://api.xsolve.me/api/captcha \
  -H "Accept: application/json" \
  -d 'authtoken=<xsolve-api-key>&type=12&turnstile_params={"sitekey":"0x4AAAAAAA...","pageurl":"https://example.com"}'

/api/user returns DeathByCaptcha-style balance in US cents. Poll /api/captcha/<id> until is_correct is 1 and text contains the token.

Native Xsolve API remains supported

Existing Xsolve integrations can continue to use:

curl -X POST https://api.xsolve.me/task \
  -H "X-Api-Key: <xsolve-api-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "mode": "turnstile",
    "url": "https://example.com",
    "sitekey": "0x4AAAAAAA..."
  }'

Use mode: "iuam" for Cloudflare interstitial / challenge pages.

Search documentation

Search tasks, migration guides, and balance documentation.

Type to search ยท Escape to close