SolveHub

Getting started

CAPTCHA Solving API Pricing: Pay Per Solved Task

SolveHub pricing per CAPTCHA type: Cloudflare Turnstile, DataDome, Akamai, PerimeterX, Imperva, AWS WAF, FunCaptcha and OCR. Pay only for completed tasks in USD; failed tasks are refunded. Live price table.

For authorized QA automation and browser integration. Use only on websites and workflows you have permission to test.

Live prices

Loaded from the public endpoint GET /v1/prices. Amounts are USD per successful task; the timestamp is this fetch, not the last price change.

TypeStatusPer task (USD)Per 1,000
Image CAPTCHA OCRAvailable$0.0002$0.20
Cloudflare TurnstileAvailable$0.0002$0.20
Cloudflare InterstitialAvailable$0.0004$0.40
PerimeterX / HUMANAvailable$0.001$1.00
DataDomeAvailable$0.0012$1.20
Akamai Bot ManagerAvailable$0.0008$0.80
Alibaba Cloud CAPTCHA 2.0Available$0.0004$0.40
Imperva / IncapsulaAvailable$0.0016$1.60
AWS WAFAvailable$0.001$1.00
Arkose FunCaptchaAvailable$0.002$2.00

Price snapshot taken 2026-11-04 07:18 (UTC) from GET /v1/prices; the page script replaces it with live values when JavaScript runs.

Showing the 2026-11-04 07:18 (UTC) price snapshot

The price table below reads directly from the public endpoint GET /v1/prices and shows whether each CAPTCHA type is currently enabled, along with its public per-task list price. No login is required to view it; the refresh button re-requests the server and never uses the static example prices from the documentation.

New email/password accounts can bind and verify one Telegram account on the console's Security page to receive 0.10 USD of trial credit once: no top-up needed, it never expires, and it covers one concurrent task. Binding cannot be undone, and each Telegram account can claim the trial credit only once, so registering again does not grant another credit. See free trial credit for the steps, scope and FAQ, or estimate spend by volume with the price calculator.

Response field Type Meaning
available Boolean Whether the type is enabled in the price catalog; does not guarantee current queue capacity.
priceMicros Integer The public per-task price when enabled, in micro-USD (micros). 1 USD = 1,000,000 micros.
currency String Currently USD.
reason String Generic reason when disabled, such as TYPE_DISABLED or PRICE_NOT_CONFIGURED.
version Integer Price configuration version; incremented on every change.
updatedAt RFC 3339 time Time of the most recent price configuration update.

The priceMicros returned when creating a task is the actual price frozen for that task. Customers with negotiated pricing may see a price different from the public list price; call GET /v1/me/prices with an API Key or a console session to query your own effective unit prices (negotiated:true means a negotiated price is in effect). The charge is applied when the task completes; on an explicit failure or a cancellation before dispatch, the hold is refunded. Do not derive per-task amounts from the per-thousand display price; use the integer priceMicros for accounting. Stop creating tasks of a disabled type, and refresh the price table later to check whether it has been restored.

Endpoint example:

GET /v1/prices HTTP/1.1
Host: www.tiam.codes

The response is keyed by task type, for example:

{"turnstile":{"available":true,"priceMicros":200,"currency":"USD","version":1,"updatedAt":"2026-10-05T00:00:00Z"},"alix5sec":{"available":false,"reason":"TYPE_DISABLED","version":1,"updatedAt":"2026-10-05T00:00:00Z"}}

The example above is only meant to explain the fields. The table below and the API response are authoritative for live status and prices; click a type name to view its request fields and result description.

Billing rules and how to read prices

  • The price is frozen when a task is created: priceMicros in the response is the actual price for that task, charged on completion.
  • Tasks that fail explicitly, or are cancelled before dispatch, release the reservation and are not billed; uncertain means the result is still being verified — keep polling the same task.
  • Failures and refunds do not release a key's safety-window quota, which prevents create-refund probing.
  • Prices change over time. The numbers in the table above are read from GET /v1/prices by a page script; you can also call that endpoint directly for JSON, or call GET /v1/me/prices with an API key to see negotiated rates.
  • Orderability follows available: disabled types (for example when an upstream price is unconfirmed) are not orderable.

New accounts can use the free trial credit for a first integration without topping up.

Related documentation

Start with cURLCreate account

Last updated: