Help center
Frequently asked questions
Straight answers about billing, task types, integration and your account. Search below or browse by topic.
Popular:Failed tasksVolume bonusGetting a keyWrong answersData handling
34 questions
Billing
Balance, prices, bonuses and refunds.
You top up a prepaid balance in US dollars and pay per solved task. There is no subscription, no monthly fee and no minimum commitment.
Each task type has its own price per 1,000 solved tasks, listed on the pricing page.
No. When you create a task, its price is held on your balance. It is charged only when the answer is ready.
If a task fails or cannot be completed, the hold is released back to your balance automatically. There is nothing to claim and no ticket to open.
Prices are per 1,000 successfully solved tasks and are the same whatever your volume, before any top-up bonus.
Bonus credit from larger top-ups lowers the effective price further. Compare options on the pricing page.
Yes. Larger single top-ups receive bonus credit on top of the amount you pay, which lowers your effective price per task.
No. The bonus is set by the size of each single top-up, so one larger top-up earns more bonus than several small ones adding up to the same amount.
You can start with a small top-up and add more whenever you need. Bonus credit begins at the first volume tier on the pricing page.
Top-ups are arranged with our team for now. Choose API keys & top-ups on the contact page, tell us the amount and the email address of your account, and the credit, including any bonus, is added to your key.
Your new balance shows up in the dashboard and in
GET /balanceas soon as it is applied.Prepaid balance is not refundable as cash. Tasks that fail, and answers you report as wrong, are returned to your balance automatically, so you only ever spend credit on answers you received.
The details are in section 5 of the terms of service.
Task types
What each captcha type needs and returns.
Five types are live today, all through the same two calls: math captcha, image to text, audio captcha, reCAPTCHA v2 and Cloudflare Turnstile. reCAPTCHA v3 and hCaptcha are coming soon.
Need a type that is not listed? Tell us what you are working with. See every type in detail on the captcha types page.
Both are coming soon. Until they launch,
POST /createTaskreturnsERROR_TASK_NOT_SUPPORTEDfor these types and nothing is charged.Want to know the moment they go live? Ask to be notified and tell us your expected volume.
Recognition tasks such as math, image and audio usually come back in about a second. Token tasks take a few seconds.
Typical times from creating a task to the answer being ready.
Every task is a
POST /createTaskwith yourclientKey, atypeand a few fields for that type:Full request and response examples for each type are in the API reference.
Two values from the page you are working on:
websiteURL, the full address of the page that shows the captcha, andwebsiteKey, the public site key of the widget.When reCAPTCHA v3 launches it will also take an
actionname, which should match the action the site uses for that form. hCaptcha will use the same two fields.Open the page with the captcha and inspect the widget element. The key is usually in a
data-sitekeyattribute, or in thek=orsitekey=parameter of the widget's frame address.reCAPTCHA keys typically start with
6Land Turnstile keys with0x. hCaptcha keys look like a UUID.When a task is ready,
GET /getTaskResult/{taskId}returnsstatus: "ready"and asolutionobject. The field you read depends on the type:reCAPTCHA results carry the same value in both
gRecaptchaResponseandtoken, so either field works.The site's captcha provider sets the expiry, not us. Most tokens are valid for only a few minutes and can be used once, so submit each token right after you receive it rather than collecting them in advance.
Integration
Endpoints, polling, errors and tooling.
You do not need one. The API is plain JSON over HTTPS, so it works from any language with an HTTP client.
Copy-ready examples are in the Python and Node.js guides, plus Selenium, Puppeteer and Playwright guides on the integrations page.
All endpoints live on the same origin as this site. Paths such as
/createTaskare appended to it.Send JSON bodies with
Content-Type: application/jsonover HTTPS only.After
POST /createTaskreturns ataskId, callGET /getTaskResult/{taskId}every 1 to 3 seconds untilstatusisreadyorfailed.Fast recognition tasks are often ready in the create response itself, so check
statusthere before you start polling.Errors share one JSON shape:
{"errorId":1,"errorCode":"...","errorDescription":"..."}. Successful responses haveerrorId: 0.ERROR_KEY_INVALIDthe key is missing, wrong or revoked.ERROR_INSUFFICIENT_CREDITSyour balance cannot cover the task.ERROR_TASK_NOT_SUPPORTEDthetypeis unknown or not live yet.ERROR_CAPTCHA_UNSOLVABLEthis task could not be answered and was not charged.
The full list is in the error reference.
Put the token into the page's hidden response field,
g-recaptcha-response,h-captcha-responseorcf-turnstile-response, then submit the form. Some sites expect the token in a JavaScript callback instead.Step-by-step examples are in the Selenium, Puppeteer and Playwright guide pages, all linked from integrations.
Account & keys
Sign-up, API keys and the dashboard.
Create an account with your email address. An API key is issued with the account and shown in your dashboard.
New keys start with a zero balance. Add funds and send your first task with
POST /createTask.Call
GET /balancewith the headerAuthorization: Bearer <key>. The response includesbalanceUsdalong with your usage.The same figure is shown at the top of your dashboard.
Rotate it from the dashboard. The old key stops working immediately, and your balance, usage and task history move to the new key.
Update every integration that used the old key, since its requests will be rejected from then on.
On your server, in an environment variable or a secrets manager. Never put it in front-end code, mobile apps or public repositories, because anyone holding it can spend your balance.
Your current balance, daily usage by task type, a list of recent tasks with their outcome and cost, and your API key with a copy and rotate option.
Reliability
Status, throughput and failed answers.
Call
GET /health. It returns{"status":"ok","version":"..."}when the API is accepting tasks.Checking current status
You can send tasks one at a time or many in parallel, and throughput is not tied to a plan. Your balance is the only thing that needs to keep up.
Keep result polling to one request every 1 to 3 seconds per task. If you expect sustained high volume, let us know ahead of time.
Report it with
POST /reportBad?task_id=<taskId>and your Bearer key. The price of that task is returned to your balance, once per task.Reporting closes the task. To try again, create a new task.
The result comes back with
status: "failed"andERROR_CAPTCHA_UNSOLVABLE. The held amount is released to your balance, so you are not charged.Create a new task to try again, ideally with a fresh captcha from the page.
New tasks are rejected with
ERROR_INSUFFICIENT_CREDITS. Tasks already created are unaffected, because their price was held when they were created.Watch
balanceUsdfromGET /balanceand top up before it reaches zero.
Policies
Data handling and permitted use.
Task content such as images, audio and page addresses is processed only to answer your task and is not kept as a dataset. We keep limited records, such as task id, type, timing, outcome and cost, for billing, support and abuse prevention.
We do not sell your data. Read the privacy policy for details.
Use it on sites and services you own, or that you are authorized to test or automate, for example QA, monitoring, accessibility and your own workflows.
Fraud, spam, credential stuffing, fake account creation and any attempt to break the law or a site's terms are not allowed. See the acceptable use policy.
Use the abuse reports option on the contact page. Include the affected site, approximate times with time zone, and any task ids or request details you have. Every report is reviewed.
Still need help?
If your question is not answered here, we are happy to help directly.