Rate Limits
Concurrency limits and best practices for throughput.
Concurrency
The service processes up to max_concurrent solves in parallel (default: 8). Tasks submitted beyond this limit are queued and processed as slots free up. There is no hard rejection for queueing — tasks simply wait.
Worker Saturation
Each connected browser worker handles one solve at a time. If all workers are busy, new tasks queue until a worker is available. Check /health for workers_connected and tasks_active to gauge load.
Task Expiry
Completed tasks (ready or error) are retained for 5 minutes, then pruned. Polling a pruned task returns ERROR_NO_SUCH_CAPCHA_ID.
Best Practices
- Poll every 3–5 seconds, not faster
- Set a client-side timeout of 120 seconds per task
- On
ERROR_CAPTCHA_UNSOLVABLE, retry once before alerting - Batch tasks if you need high throughput — the queue handles ordering
- Monitor
/healthto detect worker disconnections early
Typical Performance
| Workers | Avg Solve Time | Throughput |
|---|---|---|
| 1 | 10–12s | ~5 CPM |
| 4 | 10–12s | ~20 CPM |
| 8 | 10–12s | ~40 CPM |
CPM = captchas per minute. Actual throughput depends on captcha complexity and recognition accuracy.