Skip to content

Capability Matrix

Single source of truth β€” every CaptchaSonic captcha type mapped to its Python SDK method, Node.js SDK method, REST taskType, and return field.

The Capability Matrix is the canonical answer to "what does CaptchaSonic solve, and how do I call it?". Every row pins a captcha to its Python method, Node.js method, REST task.type, and the exact field that holds the answer. It is the single source of truth that the docs, the SDKs, and external AI agents / MCP clients all read from.

TIP

Download the matrix as JSON for use in agents, automations, or your own dashboards: capabilities.json. The JSON mirrors src/data/capabilities.ts field-for-field.


How to read this

  • Family β€” token returns a string token (drop it into a hidden form field); image returns coordinates or text from an image you supplied; interactive returns a structured action (click indices, drag deltas, etc.).
  • Python SDK / Node.js SDK β€” the method name and the dotted path under the response object where the answer lives. not in SDK means the captcha is reachable today only via the REST API.
  • REST taskType β€” the exact string you pass as task.type to POST /createTask. A separate proxyless variant is shown when the API exposes one (e.g. TurnstileTaskProxyless).
  • Notes β€” pinned caveats (required arguments, proxy requirements, subtype semantics).

Matrix

13 capabilities
5 token4 image4 interactive
capabilities.json
token

Token solvers5

Submit website_url + website_key. The SDK polls our infrastructure and returns a ready-to-submit token (~6–12s typical).

CaptchaPythonNode.jsREST task type
reCAPTCHA v2 (token)
Solve a reCAPTCHA v2 token challenge via browser automation (async β€” polls until ready).
solve_recaptcha_v2_token
solution.token
solveRecaptchaV2Token
solution.token
RecaptchaV2Task
+ RecaptchaV2TaskProxyless
reCAPTCHA v3 (token)
Solve a reCAPTCHA v3 token challenge via browser automation (async β€” polls until ready).
solve_recaptcha_v3_token
solution.token
solveRecaptchaV3Token
solution.token
RecaptchaV3Task
+ RecaptchaV3TaskProxyless
Cloudflare Turnstile
Solve a Cloudflare Turnstile token challenge (async β€” polls until ready).
solve_turnstile
solution.token
solveTurnstile
solution.token
AntiTurnstileTask
Cloudflare Challenge
Solve a Cloudflare challenge via browser automation (async β€” polls until ready).
solve_cloudflare
solution.token
proxy
solveCloudflare
solution.token
proxy
AntiCloudflareTask
PopularCaptcha (token)
Solve a popular CAPTCHA token challenge via browser automation (async β€” polls until ready).
solve_popular_captcha_token
solution.token
solvePopularCaptchaToken
solution.token
PopularTask
+ PopularTaskProxyless
image

Image solvers4

You supply the challenge images; the SDK returns a typed_solution payload describing what to do (tile indices, text, slide offset).

CaptchaPythonNode.jsREST task type
reCAPTCHA v2 (image grid)
Solve a reCAPTCHA v2 image classification challenge.
solve_recaptcha_v2
typed_solution.grid.objects
solveRecaptchaV2
typedSolution.grid.objects
RecaptchaV2Classification
AWS WAF
Solve an AWS WAF image challenge.
solve_aws_waf
typed_solution.grid.objects
solveAwsWaf
typedSolution.grid.objects
AwsWafClassification
Image-to-text (OCR)
Solve an OCR / image-to-text task.
solve_ocr
typed_solution.text.texts[0]
solveOcr
typedSolution.text.texts[0]
ImageToTextTask
Slide puzzle
Solve a slide CAPTCHA using local alpha/contour detection (no AI).
solve_slide_image
typed_solution.slide.x
solveSlideImage
typedSolution.slide.x
SlideImage
interactive

Interactive solvers4

Images plus extra metadata for slide / click / whirl variants. Return shape varies by sub-type.

CaptchaPythonNode.jsREST task type
PopularCaptcha
Solve a popular CAPTCHA image classification challenge (grid/bbox/drag).
solve_popular_captcha
typed_solution.grid.objects
solvePopularCaptcha
typedSolution.grid.objects
PopularCaptchaImage
GeeTest
Solve a Geetest CAPTCHA challenge.
solve_geetest
typed_solution
solveGeetest
typedSolution
GeetestClassification
TikTok
Solve a TikTok CAPTCHA challenge.
solve_tiktok
typed_solution
solveTikTok
typedSolution
TikTokClassification
Binance
Solve a Binance CAPTCHA challenge.
solve_binance
typed_solution
solveBinance
typedSolution
BinanceSlideTask

Counts

  • 13 rows total β€” one per documented captcha.
  • 13 Python SDK methods and 13 Node.js SDK methods (one each per captcha).
  • 5 token-family, 4 image-family, 4 interactive-family.

These counts are read live from the generated capabilities.ts, so they track the SDK and can't drift from the matrix above.


Stability guarantees

  • Adding rows is non-breaking. New captchas append to the bottom of CAPABILITIES in src/data/capabilities.ts.
  • Removing or renaming a slug is a breaking change for any agent that pinned to it. We will not do this silently.
  • Method names and return fields mirror the SDK docs verbatim β€” if a method renames, this matrix updates in the same release.

For the raw REST contract, see the REST API reference. For end-to-end install / quick-start, see the Python SDK and Node.js SDK pages.


Error codes

The matrix above pins each captcha to its method and return field. The table below is the matching one-stop reference for the numeric errorId codes every SDK and the REST API surface when a task fails.

errors7 canonical `errorId` codes
idPython exceptionNode errorNameMeaningAction
0SonicErrorSonicErrorBase class for every SDK error β€” catches anything below.Inspect `error.errorId` (Node) / `err.error_id` (Python) and branch.
1InvalidApiKeyErrorInvalidApiKeyErrorAPI key is missing, malformed, or revoked.Verify the key in your dashboard.
2InsufficientBalanceErrorInsufficientBalanceErrorAccount balance can't cover the task.Add funds.
3DailyLimitExceededErrorDailyLimitExceededErrorDaily quota exhausted.Wait for the daily reset or upgrade your plan.
4MinuteLimitExceededErrorMinuteLimitExceededErrorPer-minute rate limit hit.Slow down requests / add exponential backoff.
5QuotaExceededErrorQuotaExceededErrorPlan quota exhausted.Upgrade your plan.
6PlanExpiredErrorPlanExpiredErrorSubscription has expired.Renew your subscription.

Every concrete row inherits from SonicError β€” catch it once to handle all SDK failures, or branch on errorId / exception subclass for granular control. Transient gRPC errors are retried automatically with exponential backoff (up to 3 attempts).