Aries Solver

Introduction

Aries Solver solves reCAPTCHA v3 and returns the token over a single HTTP request. There is nothing to poll: the response either carries a token or an error explaining what to change.

Every request is JSON in and JSON out. One successfully solved token costs one credit. Failed solves cost nothing.

Base URL

BASE __BASE__

Every endpoint also exists under a /v1 prefix. Both forms behave identically, so /getRecaptchaV3 and /v1/getRecaptchaV3 are the same endpoint.

Authentication

Pass your API key with every request. Keys look like ar_live_ followed by 48 hexadecimal characters.

Any one of these is accepted.
MethodExample
HeaderX-API-Key: ar_live_…
Bearer tokenAuthorization: Bearer ar_live_…
Request body{"clientKey": "ar_live_…"}
Keep your key server-side

A key spends your credits. Never ship it in a browser bundle or a mobile app. If a key leaks, ask for a replacement on Telegram and the old one is revoked immediately.

Solve a captcha

POST __BASE__/getRecaptchaV3

Submits a target page and returns a token for it. The call blocks until the solve finishes or the time budget runs out.

Request body
{
  "url": "https://example.com/login",
  "sitekey": "6LfCVLAUAAAAALFwwRnnCJ12",
  "proxy": "http://user:pass@host:8080",
  "action": "login",
  "enterprise": false
}

Request parameters

Field Type Required Description
url string Yes Full URL of the page holding the captcha, including the scheme. For example https://example.com/login.
sitekey string Yes The reCAPTCHA v3 site key from the target page. Usually begins with 6L.
proxy string Yes Proxy the solve runs through, with scheme and port: scheme://user:pass@host:port. Supports http, https, socks4 and socks5.
action string No The action name the page expects, such as login or submit. Send it when you know it - scores are often tied to it.
enterprise boolean No Set to true for reCAPTCHA Enterprise. Leave it out for standard v3.
title string No Page title to present during the solve. Derived from the domain when omitted.

Proxy format

The scheme and the port are both required. These are valid:

Accepted proxy strings
http://user:pass@198.51.100.10:8080
https://user:pass@198.51.100.10:8443
socks5://user:pass@198.51.100.10:1080
http://198.51.100.10:8080

A bare host:port, or a scheme with no port, is rejected with Invalid proxy format before the solve starts.

Response

A solved request answers 200 with the token and the fingerprint of the browser that produced it.

200 OK
{
  "status": "success",
  "data": {
    "token": "03AFcWeA5_zX2...",
    "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) ... Chrome/145.0.0.0 Safari/537.36",
    "sec_ch_ua": "\"Chromium\";v=\"145\", \"Google Chrome\";v=\"145\"",
    "sec_ch_ua_platform": "\"Windows\"",
    "sec_ch_ua_mobile": "?0",
    "accept_lang": "en-US,en;q=0.9"
  },
  "credits": 998
}
FieldDescription
statussuccess on a solve, error otherwise.
data.tokenThe reCAPTCHA v3 token to submit to the target site.
data.user_agentUser agent of the solving browser. Send this with your request.
data.sec_ch_uaClient hint brand list matching the solving browser.
data.sec_ch_ua_platformClient hint platform, for example "Windows".
data.sec_ch_ua_mobileClient hint mobile flag, ?0 or ?1.
data.accept_langAccept-Language of the solving browser.
creditsCredits remaining after this solve was charged.

Errors use the same envelope with a message instead of data:

Error shape
{
  "status": "error",
  "message": "Insufficient credits"
}

Using the token

The token is bound to the browser that produced it. Send the returned fingerprint alongside it or the target site may score the request poorly.

  • Set your request's User-Agent to data.user_agent.
  • Send Sec-CH-UA, Sec-CH-UA-Platform and Sec-CH-UA-Mobile from the matching fields.
  • Set Accept-Language to data.accept_lang.
  • Use the same proxy you passed to the solve.
Tokens expire in about two minutes

Request the solve at the moment you need it rather than building a pool in advance. A token that has expired is rejected by the target site, not by this API.

Code examples

curl -X POST __BASE__/getRecaptchaV3 \
  -H "X-API-Key: ar_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
        "url": "https://example.com/login",
        "sitekey": "6LfCVLAUAAAAALFwwRnnCJ12",
        "proxy": "http://user:pass@host:8080",
        "action": "login"
      }'

Check your balance

GET __BASE__/balance

Returns the credits left on your key. POST works too. This call is free and does not count against your rate limit budget in any meaningful way.

Example
curl __BASE__/balance -H "X-API-Key: ar_live_YOUR_KEY"

{
  "status": "success",
  "credits": 998
}

Service status

GET __BASE__/health

No authentication required. Returns "maintenance" as the status while the service is paused, in which case solves answer 503.

Example
{
  "status": "success",
  "service": "Aries Solver"
}

Common errors

Every failure returns {"status": "error", "message": "…"} with one of the messages below. The HTTP status and the message together tell you whether to fix the request, top up, or retry.

Status Message Cause Solution
400 Missing required fields url or sitekey empty Provide all required fields
400 Invalid URL format Malformed URL Use a full URL with scheme
400 Invalid sitekey format Site key is not a plausible key Copy the key from the target page
400 Missing required field: proxy No proxy provided Provide a valid proxy
400 Invalid proxy format Malformed proxy URL Check the proxy format
400 Bad proxy Proxy not working Use a different proxy
401 Invalid API key Authentication failed Check your API key
402 Insufficient credits Balance too low Add credits
429 Service Overloaded Concurrency or rate limit hit Retry after a moment
500 Error fetching token Solve failed Retry with backoff
503 Service temporarily at capacity All solvers busy, or maintenance Retry shortly
Which errors are worth retrying

Retry 429, 500 and 503 with exponential backoff. Every 400 and 401 will fail again unchanged - fix the request instead. 402 means top up.

Rate limits

Each account has a requests-per-minute ceiling and a cap on solves running at once. Both are set per account and can be raised - ask on Telegram if you are hitting them.

HeaderMeaning
X-RateLimit-LimitRequests allowed per minute.
X-RateLimit-RemainingRequests left in the current minute.
X-RateLimit-ResetSeconds until the window resets.
Retry-AfterSent with 429. Wait this many seconds.

Exceeding either limit returns 429 with Service Overloaded. Honour Retry-After rather than retrying immediately.

Best practices

  • Solve just in time. Tokens last about two minutes, so request one when you are ready to use it.
  • Send the fingerprint back. The user agent, client hints and language in the response are part of the solve.
  • Reuse the same proxy. Solve and submit from the same exit address.
  • Pass the right action. Scores often depend on it matching the page.
  • Back off on 429 and 5xx. Double the wait each attempt rather than retrying in a tight loop.
  • Watch your balance. Read credits from each solve response instead of polling /balance.
  • Set a generous client timeout. Allow at least 180 seconds; a solve can take a while under load.

Buying credits

Credits are sold at $2 per 1,000 solves and never expire. Keys are issued by hand, so message us with the volume you expect and one will be created for you.

https://t.me/Anxioussoul