pow solving api. before the captcha.
gateway: UP | solves/sec: - (60s) | now - (10s) | max t: - █
roblox locks logins behind a math problem. before you even see a captcha, their server answers your login request with a challenge: compute a^(2^t) mod n. n is a 309 digit number. t can go up to 160,000,000.
your client has to grind that out and attach the answer, or the login dies right there. doing it on one cpu core takes seconds per solve. if you are checking accounts, that speed is the whole game.
we solve everything up to our difficulty cap, shown live in the status line above. the normal login challenge sits far below it. the occasional giant (t in the hundreds of millions) is rejected instantly and free, because one of those would pin a core for the better part of a minute -- your client falls back to solving those locally, and pays nothing for them here.
we run the math on our own machines. you send us the challenge, you get the answer back in under half a second, your client never notices.
POST /login
<- 403 pow challenge: a=..., n=...(309 digits), t=160000000
solve a^(2^t) mod n <- this is the part we do
POST /login (answer attached)
<- 200
[ captcha comes after this, if it even triggers ]
no sdk, no wrapper, no client install. one https call from whatever you already run.
buy a top up, redeem the code for a key, put the key in a header, post the challenge fields. you get the answer and your remaining balance in the same response. 1 credit per successful solve. nothing charged on failure or reject.
python:
import requests
r = requests.post(
"https://powstepowita.com/v1/solve",
headers={"X-Api-Key": "pow_xxxxxxxxxxxxxxxxxxxxxxxx"},
json={
"a": "<the a from the 403 challenge>",
"n": "<the 309 digit n from the challenge>",
"t": 400000,
},
timeout=30,
)
print(r.json()) # {"result": "1234...", "balance": 999999}
luau (from a wrapper with a request function):
local HttpService = game:GetService("HttpService")
local body = HttpService:JSONEncode({
a = challenge.a,
n = challenge.n,
t = challenge.t,
})
local req = request({
Url = "https://powstepowita.com/v1/solve",
Method = "POST",
Headers = { ["X-Api-Key"] = KEY, ["Content-Type"] = "application/json" },
Body = body,
})
local res = HttpService:JSONDecode(req.Body)
print(res.result, res.balance)
| plan | price | what you get |
|---|---|---|
| pay as you go | $1 per 100,000 solves | no expiry. 1 credit per successful solve, failed and rejected solves never charge. buy as many as you want, $10 is still 1,000,000. |
| unlimited day | $15 per day | unlimited solves for 24 hours. 1 ip only. the same $15 buys 1,500,000 credits that never expire, so this only wins if you burn more than that inside the day. |
buy: dm kasow22 or ask in discord. you get a code, redeem it at /redeem for a new key or to top up the one you have. self serve checkout is being moved, codes and keys work exactly the same meanwhile.
quantity stacks onto one code: 2 day passes is one code worth 2 days, 10 credit packs is one code worth 1,000,000 solves.
questions first: discord.gg/C6Pnp7FHZm or dm kasow22
POST https://powstepowita.com/v1/solve
X-Api-Key: pow_xxxxxxxxxxxxxxxxxxxxxxxx
Content-Type: application/json
{"a": "<digit string>", "n": "<digit string>", "t": 400000}
<- 200
{"result": "<the answer>", "balance": 999999}
| code | meaning | what to do |
|---|---|---|
| 400 | bad body, or challenge over the difficulty cap | check the fields, do not retry the same one |
| 401 | bad key | check the key |
| 402 | no credits left, or a day key that expired | buy a top up, redeem it onto the same key at /redeem |
| 503 | servers busy | retry, this is normal under load |
| 504 | worker timeout | retry with backoff |
full docs with more examples (python, javascript, luau): /API.md · ready made python client, drop it straight in: /client.py
ask in discord or dm kasow22 and you get a code. take it to /redeem and either leave the key box empty to get a brand new key, or paste your existing key to add the top up onto it. the key is shown once, so write it down. codes you already hold still work, nothing changed about them.
no. codes are delivered instantly and a code is worth exactly what it says, so once it is issued it is yours whether you redeem it or not. the one thing we do fix is a failed delivery: if you paid and no code came back, bring the order id to discord and you get the code you paid for.
there is a difficulty cap. challenges over it get rejected instantly and never charge. if your workload actually needs the big ones, ask in discord, the cap can be raised per key.
no. a credit is taken only when a solve succeeds and the answer is returned to you. rejects and errors are free.
the math itself finishes in a few ms on our hardware. the 150 to 500ms you see end to end is almost all network, mostly the cloudflare hop in front of the api. customers running on our rdps hit the gateway over lan, skip cloudflare entirely, and get much lower.
no cap on solves per second. a day key is one ip at a time, so run it from one box. beyond that it is fair usage: sustained abuse that pins the fleet for everyone gets throttled, normal checker traffic never comes close.
yes. it is a plain https api with one endpoint. there are copy paste examples in the docs and a ready made python client you can drop in.
no. everything is open source: the docs and the python client are a few readable lines that do one thing, post the challenge and hand back the answer. no request hooking, no reading your accounts, no middleman between you and roblox. open devtools or wireshark and watch every request it sends, there is nothing hidden.
customers running on our rdps can hit the gateway directly over lan and skip cloudflare entirely. ask in discord.