Back to all solvers
Dedicated solver

Castle Solver API

Solve and bypass Castle through one stable REST API. Send the target details and get a ready-to-use solution back in seconds, without maintaining custom bypass logic.

Castle
Task typeCastle
Average speed< 4s
Price per 1,0000,4$ / 1k
How it works

How the Castle solver works

Castle's device fingerprinting and behavioral risk signal, sent as the X-Castle-Request-Token header on requests to login, signup, and other protected endpoints. We generate a valid request token and device id so your request passes Castle's Risk and Filter API checks.

A predictable three-step flow that stays the same even when Castle changes its protection.

Send the Castle publishable key from the page and, if relevant, the event name for the action you're protecting (e.g. $login.succeeded). We return the X-Castle-Request-Token header value and a __cuid device id to send along with your request.

01

Submit the target

Send the page URL and the challenge-specific fields in a single API request.

02

We handle the challenge

CaptchaSolv routes the task to a specialized solver and tracks it until completion.

03

Use the solution

Receive the token, headers, cookies, or sensor payload required by your next request.

Castle API request & response

The same endpoint and response envelope across every supported solver.

POST /solve
Request
{
  "api_key": "YOUR_API_KEY",
  "type": "Castle",
  "site_url": "https://example.com/login",
  "data": {
    "pub_key": "pk_XXXXXXXXXXXXXXXXXXXXXXXX",
    "event": "$login.succeeded"}
}
Response200 OK
{
  "errorId": 0,
  "status": "ready",
  "solvtime": 1.94,
  "data": {
    "useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)...",
    "language": "en-US,en;q=0.9",
    "solution": {
      "request_token": "eyJkYXRhIjoiZXlKe...",
      "cuid": "d290f1ee-6c54-4b01-90e6-d701748f0851"}
  }
}

Task data fields

Fields you can send inside the data object of a solve request for this captcha type.

pub_keyRequired

The Castle publishable key loaded by the page's Browser SDK, prefixed pk_.

eventOptional

The activity name being protected, e.g. $login.succeeded or $registration.succeeded. Improves signal accuracy when supplied.

Solution fields

Fields returned in data.solution once the task is solved.

solution.request_tokenRequired

Send as the X-Castle-Request-Token header on the protected request.

solution.cuidOptional

Device id to send as the __cuid cookie, for continuity across requests from the same simulated device.

data.useragentRequired

The user-agent used while generating the token - reuse it on the protected request.

What is Castle?

Castle (castle.io) is a fraud-prevention and bot-detection platform that protects logins, sign-ups, password resets and other account flows. Its browser SDK, Castle.js, is loaded with the site's publishable key, fingerprints the device, records behavioural signals and packs them into a short-lived request token.

The page sends that token to its own backend - typically in the X-Castle-Request-Token header - and the backend forwards it to Castle's Risk or Filter API together with the event, such as $login or $registration. Castle answers with allow, challenge or deny, so a missing or low-quality token gets the request blocked even when the credentials are correct.

Our Castle solver generates a valid request token and a __cuid device ID for the publishable key you send, so your automation can call Castle-protected endpoints the same way the official browser SDK would.

  1. 01

    Castle.js loads

    The browser SDK starts with the site's pk_ publishable key.

  2. 02

    Device fingerprint

    It collects device, browser and behaviour signals in the background.

  3. 03

    Request token

    The signals are packed into a short-lived X-Castle-Request-Token.

  4. 04

    Risk decision

    The backend sends the token to Castle and gets allow, challenge or deny.

Castle headers & fields

X-Castle-Request-TokenKey

Header carrying the request token on protected requests.

pk_...Key

Publishable key loaded by Castle.js - send it as pub_key.

__cuidKey

Device ID cookie - reuse it to look like the same returning device.

event

Activity being protected, e.g. $login or $registration.

user-agent

Must match the user-agent the token was generated with.

Step-by-step guide

How to bypass Castle with the API

Castle-protected endpoints reject requests that arrive without a fresh, believable X-Castle-Request-Token. The solver produces that token from the publishable key alone.

  1. 01

    Find the publishable key

    Search the page or its JavaScript bundle for the pk_ key passed to Castle.js.

  2. 02

    Create a Castle task

    POST site_url, pub_key and, ideally, the event you're about to perform (e.g. $login.succeeded) to /solve.

  3. 03

    Attach token and device ID

    Send solution.request_token as the X-Castle-Request-Token header and solution.cuid as the __cuid cookie.

  4. 04

    Keep the fingerprint consistent

    Use the returned user-agent and reuse the cuid for follow-up requests from the same simulated device.

Castle solver FAQ

Common questions about integrating this solver correctly.

Yes - it works on any site using Castle's device fingerprinting and risk API, not just a fixed list of targets. Send the publishable key from the page you're hitting and we generate a valid request token for that specific integration.

Need help?

Stuck trying to bypass Castle?

Join our Discord and our team will help you get Castle solving working in your setup - free advice on handling it programmatically, even as the challenge changes over time.

Join our Discord