Core Solver

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 /health to detect worker disconnections early

Typical Performance

WorkersAvg Solve TimeThroughput
110–12s~5 CPM
410–12s~20 CPM
810–12s~40 CPM

CPM = captchas per minute. Actual throughput depends on captcha complexity and recognition accuracy.