Before you submit — these must be correct
If any of these are wrong, your token may be accepted by our solver but rejected or scored poorly by the target site. We can’t detect these mismatches for you.
- Submit the returned validate/seccode promptly — GeeTest tokens are short-lived.
What is Binance bCAPTCHA?
Binance shows a slide-puzzle captcha (GeeTest v4-family) during login, withdrawal and high-risk account actions. Passing the widget's captchaId, we solve it and return the validation token your request submits.
How it works
Send Task
POST your BinanceCaptchaTask with the target URL and sitekey to our API. We'll queue it instantly.
We Solve
Send the widget's captchaId and page URL. We drive the GeeTest v4 flow, solve the slide puzzle, and return the validate token / seccode. Native API — no browser.
Get Token
Poll getTaskResult — when status is 'ready', the solution contains the token to inject into the target page.
Quick integration
import requests, time
API = "https://api.capzy.ai"
KEY = "capzy_your_key_here"
# Step 1: Create task
task = requests.post(f"{API}/createTask", json={
"clientKey": KEY,
"task": {
"type": "BinanceCaptchaTask",
"type": "BinanceCaptchaTask",
"captchaId": "<geetest captchaId>",
"websiteURL": "https://accounts.binance.com/en/login"
}
}).json()
task_id = task["taskId"]
print(f"Task created: {task_id}")
# Step 2: Poll for result
while True:
result = requests.post(f"{API}/getTaskResult", json={
"clientKey": KEY,
"taskId": task_id
}).json()
if result["status"] == "ready":
print("Solved!", result["solution"])
break
elif result["status"] == "failed":
print("Failed:", result.get("errorDescription"))
break
time.sleep(1)
Using the result
# Step 3 — GeeTest v4-family: submit these to your site's verify endpoint
sol = result["solution"]
requests.post("https://target.example.com/verify", data={
"lot_number": sol["lot_number"],
"pass_token": sol["pass_token"],
"gen_time": sol["gen_time"],
"captcha_output": sol["captcha_output"],
})Task parameters
typetypestringreqyesBinanceCaptchaTaskcaptchaIdtypestringreqyesThe GeeTest captchaId from the Binance widget.websiteURLtypestringreqyesThe page hosting the captcha.Solution response
tokentypestringThe GeeTest validation payload to submit.validatetypestringThe GeeTest `validate` value.seccodetypeobjectThe full encrypted validation object.Example response
Full getTaskResult response shape. The fields in the table above describe what's inside solution — the outer envelope (errorId, status) is identical for every captcha type.
{
"errorId": 0,
"status": "ready",
"solution": {
"seccode": {
"gen_time": "…",
"lot_number": "…",
"pass_token": "…",
"captcha_output": "…"
},
"validate": "<validate token>"
}
}Error response
Failures use the same envelope with errorId: 1 plus errorCode + errorDescription. See the error-code reference for the full list.
{
"errorId": 1,
"errorCode": "ERROR_CAPTCHA_UNSOLVABLE",
"errorDescription": "Solver gave up — automatically refunded."
}Pending response
While the solver is still working, getTaskResult returns status: "processing". Poll every 1–2 seconds until ready or failed.
{
"errorId": 0,
"status": "processing"
}Features
task types
proxyless: BinanceCaptchaTask