KasadaTlPayloadProxyLess
Build the Kasada /tl payload and its ct/dt headers from the ips.js script, then POST it yourself.
The self-driven Kasada /tl flow. You fetch ips.js, the solver returns the payload plus the ct and dt header values, and you make the POST, so the resulting token and cookies bind to your IP and TLS fingerprint.
Posting to /tl
POST https://<domain>/149e9513-01fa-4fb0-aad4-566afd725d1b/2d206a39-8ed7-437e-a3be-862e0f06eea3/tl
Content-Type: application/octet-stream
x-kpsdk-ct: <solution.ct>
x-kpsdk-dt: <solution.dt>
x-kpsdk-h: 01
<base64-decoded solution.tl>A successful POST answers 200 with {"reload": true} and sets x-kpsdk-ct, x-kpsdk-st and the Kasada cookies on the response. Keep st: it is the input for minting per-request proof-of-work with KasadaWorkTimeProxyLess.
Decode the payload before sending it
solution.tl is base64. POST the decoded bytes as application/octet-stream; posting the base64 string is the
usual cause of a /tl response that is not 200 with "reload": true.
userAgent, acceptLanguage and bmsz describe one session
Send the same userAgent and acceptLanguage on the ips.js fetch, the /tl POST and everything after it, and
pass the bm_sz cookie value that is current for that session.
Related tasks
- KasadaPayloadProxyLess: same idea, and it also returns the
im/vheaders. - KasadaTokenProxyLess: fully managed, returns replay-ready headers.
Supported Providers
| Provider | Price per 1,000 | Routing |
|---|---|---|
| $2.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 | ||
userAgent* | string | Yes | User-Agent for the session. Reuse it on the Example: |
ipsContent* | string | Yes | Full body of the Kasada Example: |
acceptLanguage* | string | Yes | Accept-Language value for the session. Example: |
bmsz* | string | Yes | Current Example: |
domain* | string | Yes | Hostname of the protected site, without scheme or path. Example: |
{ "clientKey": "your-api-key-from-dashboard", "task": { "type": "KasadaTlPayloadProxyLess", "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36", "ipsContent": "KPSDK.scriptStart=KPSDK.now();((funct…", "acceptLanguage": "en-US", "bmsz": "AAB12C…", "domain": "www.hyatt.com" }}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 |
|---|---|---|---|
ct* | string | Yes | Value for the Example: |
dt* | string | Yes | Value for the Example: |
tl* | string | Yes | Base64-encoded Example: |
raw* | Record<string, unknown> | Yes | Raw provider response data for advanced use cases. |