canonical: https://jentic.com/apis/anti-captcha.com/anti-captcha

# Anti-Captcha API

Jentic publishes the only available OpenAPI specification for Anti-Captcha API, keeping it validated and agent-ready. Anti-Captcha is a paid CAPTCHA-solving service that exposes seven endpoints for submitting solving tasks (image, reCAPTCHA, hCaptcha, FunCaptcha and friends), polling for the human-or-worker-produced solution, checking account balance, and reading queue statistics. Each task is created with POST /createTask, then polled via POST /getTaskResult until the solution is returned. Authentication uses the clientKey query parameter on every request.

## For AI agents

Submit CAPTCHA-solving tasks (image, reCAPTCHA, hCaptcha, FunCaptcha) to Anti-Captcha and poll for solutions. Suited to scraping or testing agents that need to clear human-verification steps.

## Scope

Does not perform identity verification, bot detection, or browser automation - use for submitting and polling CAPTCHA-solving tasks only.

## Capabilities

- Submit a CAPTCHA-solving task for image, reCAPTCHA, hCaptcha, FunCaptcha, or GeeTest variants
- Poll the task result endpoint to retrieve the solver's response token or text
- Read the current account balance to gate task submission against budget
- Inspect queue statistics to estimate solving latency before submitting a task
- Send funds between Anti-Captcha sub-accounts for shared-billing setups

## Use cases

### Scraping Pipeline Unblock

Resolve CAPTCHA prompts that interrupt a scraping run by calling POST /createTask with the page's site key and target URL, then polling POST /getTaskResult until the solution token is returned. The token is injected back into the form submission and the scrape continues. Works for reCAPTCHA v2/v3, hCaptcha, FunCaptcha, and image CAPTCHAs without the agent needing to render the challenge.

Example prompt: Call POST /createTask with the site key and page URL, then poll POST /getTaskResult every 5 seconds until status is 'ready' and parse the gRecaptchaResponse

### Pre-Run Budget Guard

Before launching a long-running automated job that will hit many CAPTCHAs, check the account balance via POST /getBalance and inspect queue depth via POST /getQueueStats so the agent can decide whether to proceed, top up, or wait. This avoids burning compute on a job that will stall halfway through with insufficient funds.

Example prompt: Call POST /getBalance; if under a configured threshold, halt the run and emit a top-up alert instead of submitting tasks

### AI Agent Form Automation via Jentic

An AI agent automating a multi-step web form (e.g., signup or test-account creation) can use Anti-Captcha through Jentic to clear CAPTCHA gates without managing the clientKey directly. Jentic's intent search routes the agent to POST /createTask with the right task-type schema, and the clientKey is loaded from the vault at execution time so it never enters the agent's tool context.

Example prompt: Search Jentic for 'solve a reCAPTCHA challenge', load POST /createTask with task type RecaptchaV2TaskProxyless, and execute with the page's site key and URL

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | /createTask | Submit a CAPTCHA-solving task |
| POST | /getTaskResult | Poll a task's result by task ID |
| POST | /getBalance | Return the account's current balance |
| POST | /getQueueStats | Return queue length and worker stats per task type |
| POST | /sendFunds | Transfer funds between Anti-Captcha sub-accounts |
| POST | /getAppStats | Return app-level statistics for a software ID |
| POST | /test | Test connectivity to the Anti-Captcha endpoint |

## Key resources

- **Tasks** — Create CAPTCHA-solving tasks and retrieve their solutions
- **Account** — Read balance and send funds between sub-accounts
- **Queue** — Inspect per-task-type queue length and worker availability
- **Debug** — Application stats and connectivity test endpoints

## Why Jentic

- **Setup:** Wiring the Anti-Captcha API by hand means putting the clientKey in each JSON body and polling getTaskResult until a task resolves yourself. Through Jentic you install once, import Anti-Captcha from the API Directory, store the client key once, and your agent calls it.
- **Permission scoping:** Anti-Captcha passes the task specification and clientKey in the request body rather than a resource id in the path, so scope the agent to the operations it needs, such as createTask and getTaskResult. You choose the operations it may call, so sendFunds is not included unless you add it.
- **Credential handling:** Your Anti-Captcha clientKey is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'solve a reCAPTCHA challenge' or 'get a task result', and Jentic returns the matching Anti-Captcha operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **2Captcha API** — 2Captcha is a near-identical CAPTCHA-solving service with the same submit/poll flow.
- **Fingerprint API** — Fingerprint identifies devices before a CAPTCHA gate is reached, reducing how often a solver is needed.
- **Onfido API** — Onfido handles human identity verification, a separate concern from automated CAPTCHA solving.

## FAQ

### Why is there no official OpenAPI spec for Anti-Captcha API?

Anti-Captcha publishes its API documentation at anti-captcha.com/apidoc as HTML reference rather than a downloadable OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call Anti-Captcha via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the Anti-Captcha API use?

Anti-Captcha uses an API key called clientKey that is sent as a query parameter on every request. Through Jentic the clientKey is stored in the encrypted vault and injected at execution time, so the raw key never enters the agent's prompt context.

### Can I solve reCAPTCHA v2 with the Anti-Captcha API?

Yes. POST /createTask with task type RecaptchaV2TaskProxyless and the target page's website URL and site key, then poll POST /getTaskResult until status becomes 'ready' and read the gRecaptchaResponse field for the token to inject into the form.

### What are the rate limits for the Anti-Captcha API?

The OpenAPI spec does not declare explicit rate limits, but Anti-Captcha throttles by available worker pool - submitting more tasks than the queue can absorb increases solving latency rather than returning 429. Use POST /getQueueStats to size your concurrency to the live queue depth.

### How do I check my Anti-Captcha balance through Jentic?

Run pip install jentic, then search Jentic for 'check Anti-Captcha balance'. Jentic returns POST /getBalance with the request schema. Execute with no body parameters; the clientKey is injected from the vault.

### How do I poll for a CAPTCHA solution after creating a task?

After POST /createTask returns a taskId, poll POST /getTaskResult with that taskId every few seconds. The response status is 'processing' until the solver completes, at which point status becomes 'ready' and the solution field contains the token or text.

### Can I limit what my agent is allowed to do with the Anti-Captcha API?

Yes. Because you run Jentic One yourself, your own rules decide which Anti-Captcha operations the agent may call, so you can scope it to just the endpoints it needs, such as POST /createTask and POST /getTaskResult. Anti-Captcha passes the task specification and clientKey in the request body rather than a resource id in the path, so operation-level scoping is how you control what the agent can do. Sensitive operations like POST /sendFunds are left out unless you explicitly add them.
