Getting started
Your first solve, in about a minute.
Three steps: create an account, take your key, send one request. The API is plain JSON over HTTPS, and Python and Node.js have official clients.
1. Get a key#
Create an account and a live key is issued immediately. The key is shown once — copy it then, because only a hash is stored. Live solves are billed against your balance, so top up before the first one.
Tip
2. Send a task#
Python and Node.js have official clients. They are optional: any other language posts the same JSON with the HTTP library it already has.
pip install voidcaptchanpm install voidcaptchaThis example solves a reCAPTCHA v3 challenge. With a client, each type has its own method; without one, swap type for any other value from the task-type list and adjust the fields — everything else stays the same.
# pip install voidcaptcha
from voidcaptcha import VoidCaptcha
client = VoidCaptcha("void_a1b2c3d4e5f60718293a4b5c6d7e8f90")
result = client.recaptcha_v3(
url="https://example.com/login",
site_key="6LdyC2cUAAAAACGuDKpXeDorzUDWXmdqeg-xy696",
action="login",
proxy="proxy.example.com:9090:user:pass",
)
print(result.value){
"errorId": 0,
"status": "ready",
"solution": {
"token": "03AGdBq25V6…",
"userAgent": "Mozilla/5.0 …"
},
"cost": "$0.0008",
"balance": "$411.24",
"elapsedMs": 4820
}Language choice is remembered across the whole site, so if you switch to Go here the reference pages follow.
3. Use the token#
Take solution.token and submit it the way the page would — for reCAPTCHA that means posting it as g-recaptcha-response alongside your form fields. Send the returned userAgent on that request too, so the token is presented under the same identity it was earned with.
Tokens are short-lived. Treat roughly two minutes as the usable window and request one at the point you need it rather than warming a pool in advance.
Handling failures#
A failure returns a non-zero errorId and a string errorCode, and does not charge your balance. The error reference states for every code whether retrying is worthwhile — some are transient and worth an immediate retry, others mean the request itself is wrong and retrying will never help.
Warning
ERROR_IP_BLOCKED and ERROR_CAPTCHA_UNSOLVABLE. Do not retry on ERROR_SITEKEY_INVALID or ERROR_REQUIRED_FIELD — the request is malformed and a second identical attempt fails identically.Where to go next#
Last updated on 31 July 2026