From CapSolver
Drop-in replacement for https://api.capsolver.com. Re-point your client at our adapter and keep your existing CapSolver SDK and code unchanged.
Switch in two lines
Change the base URL
https://api.capsolver.com → https://captcha.solvium.io/capsolver
That's the only URL change. Every CapSolver path (/createTask, /getTaskResult, /getBalance) is mounted under /capsolver/… and behaves identically.
Use your Solvium key as clientKey
Issue one via @solvium_crypto_bot and pass it where the SDK already expects clientKey. Same field, same shape, same place.
Request and response shapes match CapSolver's docs field-for-field — including the errorId / errorCode / errorDescription envelope. Both Proxyless and ProxyLess spellings are accepted, so copy-pasted code from competitors works without edits.
Example
The official capsolver package works as-is — only the host changes:
import capsolver
capsolver.api_key = "YOUR_API_KEY"
capsolver.api_base = "https://captcha.solvium.io/capsolver"
solution = capsolver.solve({
"type": "TurnstileTaskProxyLess",
"websiteURL": "https://example.com",
"websiteKey": "0x4AAAAAAA-3X4Nd7hf3mNGx",
})
print(solution["token"])Error codes
The adapter translates Solvium-side errors into CapSolver's vocabulary:
| What happened | errorCode |
|---|---|
| API key missing or unknown | ERROR_KEY_DENIED_ACCESS |
| Account balance below task price | ERROR_ZERO_BALANCE |
type not in the table above | ERROR_TASK_NOT_SUPPORTED |
Body missing websiteURL / websiteKey | ERROR_INVALID_TASK_DATA |
taskId unknown / belongs to another account | ERROR_TASKID_INVALID |
| Solve attempt failed terminally | ERROR_CAPTCHA_UNSOLVABLE |
| Internal error | ERROR_SERVICE_UNAVALIABLE |