Xsolve supports the native /task API and compatibility endpoints for common solver formats.
For most migrations, keep your existing request body and change only:
- API base URL to
https://api.xsolve.me - 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"
}
}' curl -X POST https://api.xsolve.me/createTask \
-H "Content-Type: application/json" \
-d '{
"clientKey": "<xsolve-api-key>",
"task": {
"type": "interstitial",
"websiteURL": "https://example.com/protected",
"useragent": "Mozilla/5.0 ...",
"proxyType": "http",
"proxyAddress": "1.1.1.1",
"proxyPort": "8080",
"proxyLogin": "username",
"proxyPassword": "password"
}
}' curl -X POST https://api.xsolve.me/getTaskResult \
-H "Content-Type: application/json" \
-d '{
"clientKey": "<xsolve-api-key>",
"taskId": "xsolve-task-id"
}' /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 ..."
}' curl -X POST https://api.xsolve.me/solve \
-H "Content-Type: application/json" \
-H "X-API-Key: <xsolve-api-key>" \
-d '{
"type": "challenge",
"url": "https://example.com/protected",
"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"
}
}
}' curl -X POST https://api.xsolve.me/createTask \
-H "Content-Type: application/json" \
-d '{
"clientKey": "<xsolve-api-key>",
"task": {
"type": "AntiCloudflareTask",
"websiteURL": "https://example.com/protected",
"proxy": "http://user:pass@host:8080",
"userAgent": "Mozilla/5.0 ...",
"html": "<html>optional challenge html</html>"
}
}' 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"
}
}' curl -X POST https://api.xsolve.me/createTask \
-H "Content-Type: application/json" \
-d '{
"clientKey": "<xsolve-api-key>",
"task": {
"type": "TurnstileTask",
"websiteURL": "https://example.com/protected",
"proxy": "http://user:pass@host:8080",
"userAgent": "Mozilla/5.0 ..."
}
}' curl -X POST https://api.xsolve.me/createTask \
-H "Content-Type: application/json" \
-d '{
"clientKey": "<xsolve-api-key>",
"task": {
"type": "CloudFlareTurnstileTask",
"websiteURL": "https://example.com",
"websiteKey": "0x4AAAAAAA..."
}
}' 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" curl "https://api.xsolve.me/res.php?key=<xsolve-api-key>&action=get&id=<task-id>&json=1" curl "https://api.xsolve.me/res.php?key=<xsolve-api-key>&action=getbalance&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"
}
}' curl "https://api.xsolve.me/token?key=<xsolve-api-key>&id=<task-id>" curl "https://api.xsolve.me/status?key=<xsolve-api-key>" 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"}' curl -H "Accept: application/json" https://api.xsolve.me/api/captcha/<task-id> curl -X POST https://api.xsolve.me/api/user \
-H "Accept: application/json" \
-d 'authtoken=<xsolve-api-key>' /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.