KasadaCtBrowserToken
Solve Kasada in a real browser behind your proxy and get the full x-kpsdk header set back.
The browser-based Kasada solve. The solver opens the fingerprint page through the proxy you supply, completes the /tl exchange there, and returns the x-kpsdk-* headers to replay on the protected endpoint. Use it when the target pins the session to the IP that solved it.
Finding the paths
Open DevTools on the protected page and look for the Kasada UUID path: usually /149e9513-01fa-4fb0-aad4-566afd725d1b/2d206a39-8ed7-437e-a3be-862e0f06eea3/:
pJsPath: the path (not the full URL) of thep.jsorips.jsscript under it.fpHost: the host serving…/fp, normally the site you are on.tlHost: the host the…/tlPOST goes to. It is often a different subdomain: on Twitch the page ispassport.twitch.tvwhile/tlgoes togql.twitch.tv.
Replaying the headers
Send everything in solution.headers on the protected request, minus x-kpsdk-v. The exact set varies by target: x-kpsdk-ct is always there, while x-kpsdk-h and x-kpsdk-cd only appear when the site's Kasada script issues them. Replay the headers you get rather than expecting a fixed list.
Never send x-kpsdk-v to the protected endpoint
x-kpsdk-v is for the /tl POST only. Forwarding it to the protected endpoint is a common reason a valid token is
still refused.
Keep the proxy sticky
The token is bound to the exit IP that solved it. Use one sticky proxy for solving and for every request that uses
the result, and send the returned user-agent with a matching TLS fingerprint.
Related tasks
- KasadaTokenProxyLess: same outcome without a proxy, from just the
p.jsURL. - KasadaPayloadProxyLess: self-driven: you POST
/tlyourself. - KasadaCdToken: refresh only the per-request
x-kpsdk-cd.
Supported Providers
| Provider | Price per 1,000 | Routing |
|---|---|---|
| $1.00 | ||
| $1.50 |
Request Schema
| Field | Type | Required | Description |
|---|---|---|---|
clientKey* | string | Yes | Your API key. Create one in the AnySolver dashboard. Example: |
task* | object | Yes | The task body. Required fields depend on the task type. See Tasks for per-task schemas. View task properties |
settings | object | No | Per-request settings for routing, auto retry, auto fallback, and proxy behavior. See Routing Strategies. View settings reference |
Task Object Properties
The task field accepts an object with the following properties:
| Field | Type | Required | Description |
|---|---|---|---|
type* | Yes | ||
websiteURL* | URL | Yes | Full URL of the page where the CAPTCHA is displayed. Example: |
pJsPath* | string | Yes | Path to Kasada's p.js script on the target site. Find this by inspecting network requests in your browser DevTools. Example: |
fpHost* | string | Yes | The host serving the Kasada fingerprint page. This is usually the target domain. Example: |
tlHost* | string | Yes | The host for the Kasada TL endpoint used for token generation. Example: |
proxy* | string | object | Yes | |
userAgent | string | No | The User-Agent string to use during solving. It must match the browser used for your subsequent requests to the protected site. Example: |
uaVersion | number | No | The major Chrome version number extracted from the user agent, for example 145 for Chrome 145. Example: |
cdConstant | string | No | Optional constant used for the Kasada CD (compute-digest) proof-of-work, if required by the target site. Example: |
Optional fields are not guaranteed across providers
Response Schema
| Field | Type | Required | Description |
|---|---|---|---|
status* | Yes | Task status: "processing", "ready", or "failed". Example: | |
errorId* | Yes | 0 = success, 1 = external error, 2 = internal error. Example: | |
taskId | string | No | Unique identifier returned when the task was created. Example: |
errorCode | No | Machine-readable error code. Example: | |
errorDescription | string | No | Human-readable error message with resolution hints. Example: |
cost | number | No | Actual cost charged for this task in USD. Example: |
taskType | No | The type of CAPTCHA task to solve. Example: | |
provider | No | Provider that handled this task. While processing, the provider currently solving it. Example: | |
solution | object | No |
Solution Object Properties
The solution field contains an object with the following properties:
| Field | Type | Required | Description |
|---|---|---|---|
headers* | object | Yes | Kasada headers returned by the solver. Include these headers in your subsequent requests to the protected site. |
raw* | Record<string, unknown> | Yes | Raw provider response data for advanced use cases. |