Routing Strategies
How AnySolver picks a provider for each task and how to configure it per API key.
AnySolver picks a provider per task based on the routing mode set on your API key. Set it once in the dashboard, override it per request when needed.
One balance, every provider
Routing across providers does not need separate accounts. Your AnySolver balance covers them all.
Strategies
Strategy details
Auto Cheapest
Picks the provider with the lowest published price for the requested task type.
- Source: static pricing metadata. No database lookup, no warm-up needed.
- Best for: high-volume, cost-sensitive workloads.
- Tie-break: deterministic order when prices match.
Auto Fastest
Picks the provider with the lowest P90 solve time (90th percentile: 9 in 10 solves finish at or below it) based on recent performance.
- Source: aggregated stats, refreshed hourly.
- Sample windows: 12 hours, then 48 hours, then 30 days.
- Minimum data: 10 completed tasks in the window.
- Fallback: if no provider clears the minimum, falls back to Auto Cheapest.
Auto Most Reliable
Picks the provider with the highest success rate based on recent performance.
- Source: aggregated stats, refreshed hourly.
- Sample windows: 48 hours, then 30 days.
- Minimum data: 10 completed tasks in the window.
- Fallback: if no provider clears the minimum, falls back to Auto Cheapest.
Priority
Uses the provider order you set on the API key. The first provider in the list that supports the task type gets it.

- Source: the API key's saved order.
- Cap: up to 18 providers per key.
- No fallback: if none of your providers support the task, the request fails with
TASK_NOT_SUPPORTED.
Priority mode does not auto-fall-back
Priority mode only routes to the providers you list. Add a supporting provider for every task type you plan to send.
Configure routing on an API key
Open Dashboard / API Keys and click Edit on a key.
Pick a routing mode.

For Priority, drag providers into your preferred order. Use + Add provider to extend the list (up to 18).
Save. New tasks on that key follow the new mode immediately.
Override per request
Override the API key's default by sending selectionMode on createTask. Valid values: autoCheapest, autoFastest, autoMostReliable, priority.
{ "clientKey": "your-api-key-from-dashboard", "task": { "type": "ReCaptchaV2TokenProxyLess", "websiteURL": "https://www.google.com/recaptcha/api2/demo", "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-", "pageTitle": "reCAPTCHA demo", "isInvisible": false, "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36", "cookies": "NID=511=example; 1P_JAR=2026-03-01-12;", "pageAction": "verify", "apiDomain": "www.recaptcha.net", "isSession": false, "recaptchaDataSValue": "data-s_example_value" }, "provider": "CapSolver", "selectionMode": "autoCheapest", "keyPoolMode": "all"}curl -X POST https://api.anysolver.com/createTask \ -H 'Content-Type: application/json' \ -d '{"clientKey":"your-api-key-from-dashboard","task":{"type":"ReCaptchaV2TokenProxyLess","websiteURL":"https://www.google.com/recaptcha/api2/demo","websiteKey":"6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-","pageTitle":"reCAPTCHA demo","isInvisible":false,"userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36","cookies":"NID=511=example; 1P_JAR=2026-03-01-12;","pageAction":"verify","apiDomain":"www.recaptcha.net","isSession":false,"recaptchaDataSValue":"data-s_example_value"},"provider":"CapSolver","selectionMode":"autoCheapest","keyPoolMode":"all"}'const res = await fetch('https://api.anysolver.com/createTask', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ "clientKey": "your-api-key-from-dashboard", "task": { "type": "ReCaptchaV2TokenProxyLess", "websiteURL": "https://www.google.com/recaptcha/api2/demo", "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-", "pageTitle": "reCAPTCHA demo", "isInvisible": false, "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36", "cookies": "NID=511=example; 1P_JAR=2026-03-01-12;", "pageAction": "verify", "apiDomain": "www.recaptcha.net", "isSession": false, "recaptchaDataSValue": "data-s_example_value" }, "provider": "CapSolver", "selectionMode": "autoCheapest", "keyPoolMode": "all"}),});const data = await res.json();import requestsres = requests.post( 'https://api.anysolver.com/createTask', json={ "clientKey": "your-api-key-from-dashboard", "task": { "type": "ReCaptchaV2TokenProxyLess", "websiteURL": "https://www.google.com/recaptcha/api2/demo", "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-", "pageTitle": "reCAPTCHA demo", "isInvisible": False, "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36", "cookies": "NID=511=example; 1P_JAR=2026-03-01-12;", "pageAction": "verify", "apiDomain": "www.recaptcha.net", "isSession": False, "recaptchaDataSValue": "data-s_example_value" }, "provider": "CapSolver", "selectionMode": "autoCheapest", "keyPoolMode": "all"},).json()Useful when one workload needs a different optimization. For example a bulk job that should run cheap while interactive traffic stays on Auto Most Reliable.
Key Pool Mode
keyPoolMode controls which provider keys your tasks can draw from.
| Mode | Description |
|---|---|
all (default) | Every available key, including community-contributed keys from Provider Exchange. |
platformOnly | Platform-managed keys only. Use for privacy-sensitive workloads. |
Default to `all`
all gives you a larger pool, fewer rate limits, and faster solves. Switch to platformOnly only when every task
must go through platform-owned keys.
Set the default per API key in the dashboard, or override per request with keyPoolMode on createTask. See the Privacy section on Provider Exchange for the full mechanics.
What routing ignores
Routing decisions look at the task type name and aggregated provider stats only. They do not look at:
- Website domain or URL.
- Sitekey characteristics.
- Per-website success history.
- Provider-specific flags like "most unflagged for site X".
Same task type, same routing
All tasks of the same type route identically, regardless of their parameters. If you need site-aware selection, use Priority and curate the order per API key.
Where the stats come from
Auto Fastest and Auto Most Reliable rely on the provider_stats aggregator:
- Runs hourly.
- Tracks P90 solve time and success/failure counts per provider per task type.
- Maintains 12 h / 48 h / 30 d windows.
Providers without enough recent traffic fall through to the cheapest option for that task type.