funsolver

Documentation

API reference and integration guide

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.com

Request lifecycle

1createTask

Submit a task, get back a taskId.

2getTaskResult

Poll every 1–2 seconds until status becomes ready (or an error comes back).

3solution

A 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 task
POST/getTaskResultFetch the result by taskId
POST/getBalanceRead balance
GET/healthLiveness probe

getTaskResult

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