Skip to content
voidcaptcha

CAPTCHA solving API·16 types·15 live

CAPTCHAs go in. Tokens come out.

reCAPTCHA v2 and v3, Cloudflare Turnstile and Clearance, Arkose FunCaptcha, GeeTest, DataDome and Imperva — through a single JSON endpoint. Built for web scraping, QA automation and accessibility testing.

Success rate · 24h
99.9%
across all live types
Median latency
10s
published per type, as measured
Solves · 24h
1,516,387
successes and failures — you pay only for successes
Uptime · 30d
—
external probe not yet running
What you get

Built to be checked, not just claimed.

Every number on this page comes from the same catalogue the API reads, so a median cannot be flattering here and honest in the docs. 6 things this service does that you can verify on your first day.

01
$0.0000
what a failed solve costs

You are charged for tokens, not attempts

A provisional hold is placed when a solve starts and released the moment it fails. A blocked IP, an unsolvable challenge, a timeout — none of them are billed, and the response says so in its own cost field. Nothing to reconcile at the end of the month.

errorId != 0 → cost "$0.0000"
02
1
endpoint across 16 types

One envelope, whatever you are solving

The request shape never changes. Going from reCAPTCHA to FunCaptcha is a different task.type and the fields that type takes — same route, same auth, same response. The call is synchronous by default, so there is no job id to store and no polling loop to write unless your workers actually want one.

POST /v1/getResult · task.type
03

The slow numbers are published too

Medians are measured and shown as measured. reCAPTCHA Mobile sits at 173ms and Cloudflare Clearance at 17s, both on the same table. A latency figure that only ever shows the best case is not a figure.

173ms … 17s median
04

Success rates, or a dash

12 of the 15 live types carry a measured 30-day success rate; the other 4 public types print a dash instead of borrowing a neighbour's number. A type with no window behind it yet has no single figure that would be honest, and an invented one is worse than none.

12/15 live rates published
05

A key that never spends anything

Every account gets a test key alongside the live one. It solves a synthetic challenge, returns a well-formed response in about two seconds and never touches your balance — the real code path, safe to run in CI on every commit.

same endpoint · zero cost
06

No card. 13 currencies, 25 networks.

Top up in USDT, USDC, BTC, ETH, BNB, SOL and 7 more, across 25 asset and network combinations — stablecoins on TRC20, ERC20, BEP20, Base, Polygon, TON, plus a privacy chain. No card on file, no invoice, no minimum, and no subscription you have to cancel — you pay for solves and nothing else.

25 networks · no minimum
Integration

One call in. One token back.

POST /v1/getResult holds open for the length of the solve and returns the finished result — no polling loop, no job id to track. Set a client timeout that covers the slowest type you use. Workers that cannot wait post to /v1/createTask and collect from /v1/checkTask.

Request · POST /v1/getResult
# 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)
Response
{
  "errorId": 0,
  "status": "ready",
  "solution": {
    "token": "03AGdBq27X4…",
    "userAgent": "Mozilla/5.0 …"
  },
  "cost": "$0.0008",
  "balance": "$411.24",
  "elapsedMs": 4820
}
Two ways to buy

Meter it, or buy the concurrency.

Start metered — it is the default and needs no decision. Once a type is carrying steady volume, a subscription buys unlimited solves of it per thread instead, at a price derived from the metered one.

Metered · the default

Pay per 1,000 solves

from $0.20
per 1,000 successful solves

Top up a balance and it draws down one solve at a time. Nothing to commit to and nothing to cancel — every account starts here.

  • Charged on return, never on send. A failure releases its hold immediately and costs nothing.
  • Credit does not expire, and there is no monthly fee or minimum spend.
  • Ten concurrent solves by default; going over returns ERROR_THREAD_LIMIT rather than a silent queue.
  • Every public type is available this way, including the ones a subscription cannot cover.
Subscription · per thread

Buy threads, not solves

from $2.16
per thread · per day

Name the types you want covered and buy concurrency for a period. Solves of those types stop touching the balance entirely — they are unlimited for as long as the period runs.

  • Priced 40% under the metered equivalent, at 8,000 solves per thread per day.
  • 1 to 500 threads, in its own pool — subscription traffic does not spend the metered thread limit.
  • Weekly, monthly, or a custom 3–365 days. Auto-renew is off unless you turn it on.
  • Account-wide or scoped to a single key. Where both apply, the key-scoped one pays.
  • Cancelling stops the next renewal and runs to the end of the period you already bought.
Worked examplereCAPTCHA v3 · 4 threads · weekly
Metered, at the same capacity
224,000 solves × $0.80 / 1k
$179.20
Subscription for the same 7 days
$3.84 per thread per day × 4 × 7 days
$107.52

The subscription price is derived from the metered one, so the two can never drift apart. Beyond 224,000 solves the subscription simply keeps going — coverage is unlimited for the types it names, and anything outside them falls back to metered on the same call. No solve is ever billed twice.

13 of the 16 public types can be put on a subscription today, and PerimeterX · HUMAN joins them on release. Kasada and Akamai Bot Manager are metered only. Subscriptions are set up from billing in the dashboard.

Pricing

Per type, per thousand.

The metered rate for every public type, with the measured median and success rate beside it. Failures are refunded automatically. Priced in USD, settled across nine networks.

USD / 1k is metered: charged per successful solve, drawn from your balance, failures refunded. Thread-day is the subscription rate — unlimited solves of that type per concurrent thread, priced 40% under the metered equivalent at 8,000 solves a thread-day. A dash means the type is metered only.

USDT TRC20
USDT ERC20
USDT BEP20
USDC Base
USDC BEP20
BTC native
ETH mainnet
BNB BEP20
SOL native
TRX TRC20
POL Polygon
LTC native
DOGE native
DAI ERC20
DOGS TON
XMR privacy

…and 9 more at checkout — 13 currencies across 25 asset and network combinations.

no card · no invoice · no minimum

Questions

The ones worth asking before you integrate.

Answered from how the service actually behaves, including where the answer is a limitation.

Which CAPTCHA types does VoidCaptcha support?

16 types through a single JSON endpoint: reCAPTCHA v2, reCAPTCHA v3, reCAPTCHA Mobile, Arkose FunCaptcha, DataDome, Imperva Incapsula, Cloudflare Turnstile, GeeTest, Hunt Captcha, CaptchaFox, Image to Text, Kasada, Cloudflare Clearance, Akamai Bot Manager, Amazon AWS WAF, PerimeterX · HUMAN. 15 are live and carrying traffic; the rest are marked beta or soon on the coverage table, with their real status rather than a launch date.

See the coverage table →
What happens when a solve fails?

Nothing leaves your balance. A failure is a well-formed response carrying a non-zero errorId, a stable errorCode such as ERROR_IP_BLOCKED, and cost "$0.0000" — the provisional hold placed when the solve started is released the moment it fails. The error reference states for every code whether retrying is worth attempting, which is the part most integrations get wrong.

Error reference →
Do I need to supply my own proxy?

For every public type except reCAPTCHA Mobile, Cloudflare Turnstile and Image to Text, yes. A token or cookie is issued to a session and a session is identified partly by its exit IP, so a solve run from our network and presented from yours is rejected however good it was. Use a sticky session — an exit that rotates mid-solve looks exactly like a hijacked one.

Proxy formats and pools →
How fast is a solve?

It varies by type, and the measured median for each is published on its own page as soon as there is one to publish — a dash until then, rather than an estimate. POST to /v1/getResult and the response arrives when the solve does, so set a generous client timeout rather than leaving your HTTP library on its default: a browser-challenge type can take an order of magnitude longer than a score-based one. Workers that cannot hold a connection open that long can post the same task to /v1/createTask and collect it from /v1/checkTask instead.

Is there a free trial?

Yes: 100 free solves once you confirm your email, on any type — real tokens from the live solvers, one trial per person. Your first top-up also gets a bonus of +50% up to $25, added automatically. Every account also gets a test key that returns a well-formed response without touching your balance, so you can build and run the integration in CI for free. Paid solves start at $0.20 per 1,000.

Create an account →
What is a thread?

One solve in flight. Accounts are limited by concurrency rather than by requests per second, which suits a synchronous API better: ten concurrent solves is the metered default, and exceeding it returns ERROR_THREAD_LIMIT with HTTP 429 — worth retrying with backoff rather than treating as an outage. A subscription buys its own pool of 1 to 500 threads, and solves it covers draw on that pool instead of the metered limit.

How does a subscription differ from paying per 1,000?

Metered draws a balance down per successful solve. A subscription buys unlimited solves of the types you name for a fixed period, billed per concurrent thread and priced 40% below the metered equivalent at 8,000 solves per thread per day. Buy it weekly, monthly, or for a custom 3 to 365 days, account-wide or scoped to one key. Anything the subscription does not name still falls back to metered on the same call, a covered type never touches your balance, and no solve is ever charged twice.

Which types can I put on a subscription?

14 of the 16 public types today: TLS API, reCAPTCHA v2, reCAPTCHA v3, reCAPTCHA Mobile, Arkose FunCaptcha, DataDome, Imperva Incapsula, Cloudflare Turnstile, GeeTest, Hunt Captcha, CaptchaFox, Image to Text, Cloudflare Clearance, Amazon AWS WAF. PerimeterX · HUMAN is eligible too, and can be covered once open to traffic. Kasada and Akamai Bot Manager stay metered only.

Do you store the URLs I send?

No. A solve record keeps the host of the target and never the full URL or its query string, alongside the type, the outcome, the elapsed time and what it cost. Your API key is stored only as a SHA-256 hash, which is also why a key can be shown to you exactly once and never recovered afterwards.

How do I rotate a key?

From the keys page in your dashboard. Rotating issues a new key and revokes the previous one immediately — there is no grace period, so deploy the new key first if you cannot tolerate failed calls, or create a second key, migrate to it, then revoke the old one. Calls made with a revoked key return ERROR_KEY_INVALID.

Authentication docs →
How do I get help if something breaks?

Telegram, at @VoidCaptchaSupport — it is the fastest way to reach us and someone is usually there within minutes, at any hour. It is the right route for a type that is failing or a site that will not solve. For anything tied to your account — billing, a refund, a specific solve you want looked at — open a ticket from your dashboard instead, so there is a record attached to the account. [email protected] also works. We never message you first, and we never ask for your API key.

Message us on Telegram →

Anything else — message us on Telegram for the quickest answer, or [email protected]. The documentation answers most of it first.

Send the first one into the void.

A live key the moment you verify, and a test key that costs nothing. No card, no sales call. Your first token lands in about a minute.