Task Types & Pricing
Billing model
- Pricing is pay-per-solve — you're charged once a task's result is delivered (via Get Task Result with
status: "ready", or a hit via Result Task Pool). There's no subscription and no per-request fee for polling. - A task that's created but never solved (expires, fails, or you simply never poll for it) doesn't charge you.
- Live, up-to-date prices for every service are on the Pricing page — check there before estimating cost at scale, since prices can change over time. The table below maps API
typevalues to the pricing table's service names.
type → pricing
type |
Billed as | Notes |
|---|---|---|
TurnstileTask |
Cloudflare Turnstile | Setting cloudflareTaskType to solve the Challenge variant is billed at the same price as plain Turnstile |
TurnstileTaskPool |
Cloudflare Turnstile Pool | Same price whether served instantly from the pool or solved on demand |
RecaptchaV3Task / RecaptchaV3TaskProxyless |
reCAPTCHA v3 | The proxyless variant is billed the same — the field name just signals whether you supplied your own proxy |
RecaptchaV3EnterpriseTask / RecaptchaV3EnterpriseTaskProxyless |
reCAPTCHA v3 Enterprise | Same as above |
Estimating cost for a batch
Balance is deducted in the currency unit shown by Get Balance — before running a large batch, multiply your expected task count by the per-task price from the Pricing page, and compare it against your current balance to avoid stopping mid-run. Top up from Dashboard → Deposit (PayPal or crypto).
Insufficient balance
If your balance is below a task's price at the time it would be billed, createTask (or resultTaskPool) returns:
JSON
{
"errorId": 1,
"errorCode": "ERROR_CAPTCHA_UNSOLVABLE",
"errorDescription": "balance not enough"
}
See Errors for the full list of error responses.