
RBXSolver
verification, decoded
High-performance verification solver. Send a task, poll for the token, pay per solve — failures refund automatically.
Sign up, grab an API key, top up with crypto. First solve in under two minutes.
per 1k solve
Full solve
per 1k PoW-only
Light tasks
avg solve time
Best case
on failure
Auto-credited
Integration
Quick Start
Four steps from zero to a logged-in session. Everything below works exactly as shown — copy, paste, run.
Sign up in the dashboard to get your sk_live_... key, then top up automatically with crypto — no waiting, no DMs. Email is optional; username and password is all it takes.
curl -X POST https://rbxsolver.site/createTask \
-H "Content-Type: application/json" \
-d '{
"clientKey": "sk_live_abc123...",
"task": {
"type": "ChallengeTask",
"websiteURL": "https://roblox.com",
"websitePublicKey": "476068BF-9607-4799-B53D-966BE98E2B81",
"proxyType": "http",
"proxyAddress": "1.2.3.4",
"proxyPort": 8080
}
}'curl -X POST https://rbxsolver.site/getTaskResult \
-H "Content-Type: application/json" \
-d '{"clientKey": "sk_live_...", "taskId": "cx7f3a9b..."}'
# poll every ~500ms until "status": "ready"
# { "errorId": 0, "status": "ready",
# "solution": { "token": "..." }, "cost": "0.000600" }Poll every ~500ms. Stop on "status": "ready" (token inside solution) or "status": "failed" (refunded — retry). Give up after ~2 minutes.
A token alone logs nobody in — authorize it on your challenge, then retry the login carrying it. This is the step most integrations miss.
import requests, json, base64
token = "..." # from step 3
cid = "us-central-..." # YOUR challengeId from the login 403
# 1. authorize the token on your challenge
ch = requests.post(
"https://apis.roblox.com/challenge/v1/continue",
json={"challengeId": cid, "challengeType": "captcha",
"challengeMetadata": json.dumps(
{"captchaToken": token, "unifiedCaptchaId": cid})}
).json()
# 2. retry login carrying the fresh challenge
login = requests.post(
"https://auth.roblox.com/v2/login",
headers={"rblx-challenge-id": ch["challengeId"],
"rblx-challenge-type": ch["challengeType"],
"rblx-challenge-metadata": base64.b64encode(
ch["challengeMetadata"].encode()).decode()},
json={"ctype": "Username", "cvalue": USER, "password": PW})
# 200 + .ROBLOSECURITY cookie = logged in.
# Tokens are single-use with a ~2 min life — submit immediately.ERROR_KEY_INVALIDKey is wrong, truncated, or revoked. Copy the full key from your dashboard.ERROR_INSUFFICIENT_BALANCETop up with crypto — balance is checked before every task.ERROR_TASK_NOT_FOUNDWrong taskId, or the task expired. Create a fresh one.ERROR_INVALID_REQUESTMalformed JSON or task shape. Compare against the samples above field by field.status: failedNo token — already refunded. Retry, or rotate proxy and retry.Sanity check: createTask charges upfront, so your balance must move on every call. If the balance never moves, the request never reached us — check the URL, the key, and your HTTP client before anything else.
API
Endpoint reference
The full public surface. Four endpoints — that is everything you need.
/createTaskSubmit a task. Returns a taskId with status processing. Cost is held upfront and refunded automatically on failure.
/getTaskResultPoll with clientKey + taskId every ~500ms. On status ready the solution contains the token.
/getBalanceReturns the current balance for a key. Try it live below.
/validateKeyCheck whether a key is valid and inspect its balance and usage totals.
Solve Outcomes
Every task ends in one of three states. Failures auto-refund — you only pay for tokens.
Token returned, ready to submit. Most solves land here in seconds.
Still working. Keep polling getTaskResult until it resolves.
No token. Balance is refunded automatically — retry or rotate proxy.
PoW-Only Task
Billed at $0.30/1k. Lighter task type — solved server-side, no proxy needed.
{
"clientKey": "sk_live_...",
"task": {
"type": "PoWTask",
"powData": { "N": "308-digit modulus...", "A": 861240949267, "T": 800000 }
}
}Login Task
Full login flow in one call, billed at the standard $0.60/1k rate.
{
"clientKey": "sk_live_...",
"task": {
"type": "LoginTask",
"username": "account_name",
"password": "account_password",
"proxy": "http://user:[email protected]:8080"
}
}
# solution: { "verified": true, "user_id": 123456, ... }Pass credentials plus a proxy (proxy URL string or split proxyAddress fields). The solution reports verified and user_id.
Check Balance
Inspect any key live — right here, no terminal needed.
curl -X POST https://rbxsolver.site/getBalance \
-H "Content-Type: application/json" \
-d '{"clientKey": "sk_live_..."}'Migrating from another provider?
Legacy task names keep working: FunCaptchaTask maps to ChallengeTask, and FunCaptchaPoWTask maps to PoWTask. Point your existing client at this API and go.
Proxies decide your pass rate
Sticky residential or static ISP — datacenter gets challenged on sight. Full provider guide →
Site Keys
476068BF-9607-4799-B53D-966BE98E2B81