Documentation
API reference and integration guide
OverviewFunCaptchaFunCaptcha ProxylessFunCaptcha BDACastlereCAPTCHA v2reCAPTCHA v2 EnterprisereCAPTCHA v3reCAPTCHA v3 EnterpriseTurnstilehCaptchaCloudflareImage→TextMath ImageFC ClassificationDataDome
Overview
funsolver API
v2.0 · 2captcha-compatible
One createTask + getTaskResult flow for every supported captcha — pick it via task.type. Auth is a single clientKey, billing only on success.
Base URL
https://api.funsolver.comRequest lifecycle
1
createTaskSubmit a task, get back a taskId.
2
getTaskResultPoll every 1–2 seconds until status becomes ready (or an error comes back).
3
solutionA ready task returns the token + metadata. Balance is debited only on success.
Authentication
Every request must carry clientKey. Create one in the API Keys tab.
Never share your key — revoke it in the dashboard if it leaks.
Endpoints
POST
/createTaskCreate a taskPOST
/getTaskResultFetch the result by taskIdPOST
/getBalanceRead balanceGET
/healthLiveness probegetTaskResult
Same shape for every task type.
HTTP
POST https://api.funsolver.com/getTaskResult
Content-Type: application/json
{
"clientKey": "fsk_abc...",
"taskId": "11111111-2222-3333-4444-555555555555"
}Still working
JSON
{
"errorId": 0,
"status": "processing"
}Ready
JSON
{
"errorId": 0,
"status": "ready",
"solution": {
"token": "...",
"userAgent": "Mozilla/5.0 ..."
},
"processingTime": 4.21
}getBalance
HTTP
POST https://api.funsolver.com/getBalance
Content-Type: application/json
{ "clientKey": "fsk_abc..." }JSON
{ "errorId": 0, "balance": 1240 }Common error codes
ERROR_KEY_DOES_NOT_EXISTMissing, invalid or revoked API key.ERROR_TASK_TYPE_REQUIREDtask.type field is required.ERROR_UNKNOWN_TASK_TYPEServer does not recognise this task.type.ERROR_WEBSITE_URL_REQUIREDwebsiteURL is required.ERROR_WEBSITE_PUBLIC_KEY_REQUIREDwebsitePublicKey is required.ERROR_PROXY_REQUIREDThis captcha type (CloudflareTask / FunCaptchaTask / CastleTask / DataDomeInterstitialTask / DataDomePreflightTask / RecaptchaV2Task / RecaptchaV2EnterpriseTask) requires a proxy: proxy="http://user:pass@host:port".ERROR_PROXY_FORMATProxy could not be parsed: scheme must be http/https/socks5, port required and within 1..65535. Fix the URL and resend.ERROR_PROXY_UNREACHABLEProxy did not answer on TCP connect (2s timeout). Verify host:port and that the proxy is alive — the task was NOT dispatched and no charge was taken.ERROR_NO_BALANCEInsufficient balance for one solve of this captcha.ERROR_RATE_LIMITPer-user RPM limit exceeded.ERROR_NO_SOLVER_AVAILABLENo worker instance is currently subscribed to this captcha type. Retry later or contact support — we will expand capacity.ERROR_SOLVER_OVERLOADEDAll workers for this type are busy and the queue is saturated (>500 pending). Retry in a few seconds.ERROR_TIMEOUTThe task did not complete within 90 seconds — the gateway abandoned it. No charge is taken.ERROR_TASK_ID_REQUIREDtaskId is required.ERROR_NO_SUCH_TASKtaskId not found (or expired).ERROR_SERVICE_BUSYTransient infra issue. Retry shortly.ERROR_CAPTCHA_UNSOLVABLESolver could not produce a token — retry.Rate Limits
Rate limits are per user (shared across all keys): 1200 createTask/min and 70 concurrent tasks by default. getTaskResult is not rate-limited.
Spotted an error? Tell support.
For AI agents: machine-readable reference — /llms.txt