Configure Captcha Providers
December 23, 2025 (February 18, 2026)
Table of contents
Configure captcha provider API keys for image and video generation. Google Flow requires reCAPTCHA v3 Enterprise tokens for API calls - these third-party services solve the captcha automatically.
Supported Providers:
| Provider | Cost per 1K | Avg Solve Time | Reports Back | Website |
|---|---|---|---|---|
| CapSolver | ~$3.00 | ~8-12s | Yes | capsolver.com — use promo code useapi for 8% discount |
| AntiCaptcha | ~$2.00 | ~8-12s | Yes | anti-captcha.com |
| YesCaptcha | varies | ~8-12s | No | yescaptcha.com |
| SolveCaptcha | ~$0.80 | ~30-60s ⚠️ | Yes | solvecaptcha.com |
| 2Captcha | ~$2.99 | ~30-60s ⚠️ | Yes | 2captcha.com |
| EzCaptcha | ~$2.50 | ~2-5s | No | ez-captcha.com |
⚠️ SolveCaptcha and 2Captcha typically take 30-60 seconds per solve versus ~2-12 seconds for the others. They work well as low-cost fallbacks but can increase request latency as primary providers.
If you have an EzCaptcha key, put it first in your order with captchaOrder, for example "EzCaptcha,CapSolver,AntiCaptcha". EzCaptcha solves in real time, in about 2–5 seconds, so a token Google rejects costs little time before the next provider takes over.
Reports Back — providers that support solve-result reporting receive correct/incorrect feedback after each use, which improves token quality over time.
Use GET /accounts/captcha-stats?anonymized=true to compare success rates across providers. Configure multiple providers for redundancy - the API will automatically retry with different providers if one fails or returns a rejected token.
Captcha Parameters
These parameters are available on all endpoints that require captcha: POST /images, POST /images/upscale, POST /videos, POST /videos/upscale, POST /videos/extend, POST /voices.
captchaToken— a user-provided reCAPTCHA v3 Enterprise token. When provided, the API uses this token directly instead of solving captcha through a provider. Single attempt, no retry. Must be a valid token string (minimum 20 characters).captchaRetry— number of captcha retry attempts (1-10, default: 5). Cycles through configured providers in priority order (see below). Each attempt uses the next provider in the sequence, wrapping around if needed.captchaOrder— explicit captcha provider sequence as comma-separated string (e.g.,"AntiCaptcha,AntiCaptcha,CapSolver"). Maximum 10 entries. Each provider must have an API key configured. Overrides the default provider order.
Note: captchaToken, captchaRetry, and captchaOrder are mutually exclusive - only one can be specified per request.
Provider order
When you configure two or more providers and don’t send captchaOrder, the API picks the order for you based on how Google has treated each provider’s tokens over the last few minutes. The provider whose tokens Google accepts most often goes first. If a provider starts failing, requests move to the next best one within minutes, with no change needed on your side. The ranking only changes when the difference is clear (more than 10 percentage points), and a small share of requests (about 10%) start with another of your providers so a recovering provider is noticed. All your attempts still use only the providers you configured.
With no recent data, or with a single provider configured, the order is CapSolver → AntiCaptcha → YesCaptcha → CapMonster → SolveCaptcha → 2Captcha → EzCaptcha. To fix the order yourself, send captchaOrder — it is never changed. Each response lists the provider used for every attempt in captcha.attempts.
https://api.useapi.net/v1/google-flow/accounts/captcha-providers
Request Headers
Authorization: Bearer {API token}
Content-Type: application/json
# Alternatively you can use multipart/form-data
# Content-Type: multipart/form-data
API tokenis required, see Setup useapi.net for details.
Request Body
{
"CapSolver": "<your CapSolver API key>",
"AntiCaptcha": "<your AntiCaptcha API key>",
"YesCaptcha": "<your YesCaptcha API key>",
"SolveCaptcha": "<your SolveCaptcha API key>",
"2Captcha": "<your 2Captcha API key>",
"EzCaptcha": "<your EzCaptcha API key>"
}
CapSolveris optional. API key from capsolver.com.AntiCaptchais optional. API key from anti-captcha.com.YesCaptchais optional. API key from yescaptcha.com.SolveCaptchais optional. API key from solvecaptcha.com.2Captchais optional. API key from 2captcha.com.EzCaptchais optional. API key from ez-captcha.com.
Notes:
- All fields are optional - only include providers you want to configure
- Set a field to empty string
""to remove that provider - Users receive 300 free captcha credits (powered by CapSolver) when adding their first Google Flow account. These credits are used automatically when no provider API keys are configured.
- Once free credits are exhausted, at least one provider must be configured to use POST /images, POST /images/upscale, or POST /videos
Responses
-
Captcha providers configured successfully. Returns masked keys for all configured providers.
With providers configured:
{ "CapSolver": "abc...***...xyz", "AntiCaptcha": "def...***...uvw" }All providers removed (shows free credits if available):
{ "freeCaptchaCredits": 300 } -
Invalid provider name specified.
{ "error": "Invalid captcha provider(s): InvalidProvider. Valid providers: CapSolver, AntiCaptcha, YesCaptcha, CapMonster, SolveCaptcha, 2Captcha, EzCaptcha" } -
Invalid API token.
{ "error": "Unauthorized" }
Model
{ // TypeScript, all fields are optional
CapSolver?: string // Masked API key or omitted if not configured
AntiCaptcha?: string // Masked API key or omitted if not configured
YesCaptcha?: string // Masked API key or omitted if not configured
CapMonster?: string // Masked API key or omitted if not configured
SolveCaptcha?: string // Masked API key or omitted if not configured
'2Captcha'?: string // Masked API key or omitted if not configured
EzCaptcha?: string // Masked API key or omitted if not configured
freeCaptchaCredits?: number // Remaining free credits (only shown when no providers configured)
}
Note: freeCaptchaCredits is only included in the response when:
- No captcha providers are configured (all removed), AND
- The user has remaining free credits (> 0)
Examples
-
curl -H "Accept: application/json" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_API_TOKEN" \ -X POST "https://api.useapi.net/v1/google-flow/accounts/captcha-providers" \ -d '{ "AntiCaptcha": "<your AntiCaptcha API key>", "CapSolver": "<your CapSolver API key>" }' -
const apiUrl = 'https://api.useapi.net/v1/google-flow/accounts/captcha-providers'; const token = 'YOUR_API_TOKEN'; const response = await fetch(apiUrl, { method: 'POST', headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ AntiCaptcha: '<your AntiCaptcha API key>', CapSolver: '<your CapSolver API key>' }) }); const result = await response.json(); console.log('Captcha providers configured:', result); -
import requests apiUrl = 'https://api.useapi.net/v1/google-flow/accounts/captcha-providers' token = 'YOUR_API_TOKEN' headers = { 'Content-Type': 'application/json', 'Authorization': f'Bearer {token}' } body = { 'AntiCaptcha': '<your AntiCaptcha API key>', 'CapSolver': '<your CapSolver API key>' } response = requests.post(apiUrl, headers=headers, json=body) print(response.status_code, response.json())