Skip to content

Use code FUN10 for 10% bonus credits

DocsKasada (tl payload)

Kasada tl Payload API Reference

Capture a live Kasada /tl telemetry request and replay it.

Read Markdown (English)

The Captcha.fun Kasada (tl payload) API accepts kind, url and returns A replayable /tl request. Send the API_KEY header, create a solve with POST /v1/request, then poll GET /v2/response/{id} until ready is true.

What you’ll need

  • Your API key
  • The URL of the page where the challenge appears
  • Optional: jsDomain
  • A proxy, if the result must come from your own IP (kasada_tl_payload_proxy)
Use kind

Good to Know

Captures the sensor’s own POST /tl request from a live session (never synthesized). The /tl body is single-use at Kasada’s edge, so the sensor’s post is answered locally and never delivered — the returned body is fresh, and your replay is its first live posting. Returns the raw body, the request headers, and the exact URL.

Send the Challenge

Send the page details with your API key. You get a solve id back right away.

POSThttps://api.captcha.fun/v1/request
curl -X POST https://api.captcha.fun/v1/request \
  -H "API_KEY: CAPFUN-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
  "kind": "kasada_tl_payload",
  "url": "https://your-domain.example"
}'

Response

Returns the solve id. Use it to get the result.

{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "message": "Started Solving"
}
Request fields5 body fields · 2 required

Headers

NameTypeRequiredDescription
API_KEYstringYesYour API key
Content-TypestringYesapplication/json
APP_IDstringNoOptional app ID for request tracking

Body

NameTypeRequiredDescription
kindstringYesOne of kasada_tl_payload, kasada_tl_payload_proxy
urlstringYesPage URL where the challenge appears
jsDomainstringNoHost serving the sensor (p.js) when it isn’t on the target’s domain. Omit for standard sites
proxystringNoFor _proxy kinds: host:port or host:port:username:password
platformstringNoRequested platform label: windows (default) or mac

Wait for the Result

Use the solve id to fetch the result.

GEThttps://api.captcha.fun/v2/response/{id}

Poll every second until ready is true.

Example

curl -X GET https://api.captcha.fun/v2/response/550e8400-e29b-41d4-a716-446655440000 \
  -H "API_KEY: CAPFUN-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \
  -H "Accept: application/json"

Response

{
  "ready": true,
  "status": "SUCCESS",
  "success": true,
  "userAgent": "RETURNED_USER_AGENT",
  "secUa": "RETURNED_SEC_CH_UA",
  "token": "",
  "body": "aGVsbG8gd29ybGQ=",
  "url": "https://your-domain.example/tl",
  "headers": {
    "content-type": "application/json",
    "x-kpsdk-ct": "kpsdk:ct:1:...",
    "cookie": "KP_UIDz=unknown"
  }
}
Request and response fields9 response fields

Request

NameTypeRequiredDescription
idstring (UUID)YesPath parameter. The id from Create Solve
API_KEYstringYesHeader. Your API key

Response Fields

NameTypeRequiredDescription
readyboolean—true when the solve is finished (v2 only)
statusstring—PENDING while solving, then SUCCESS or FAILURE
successboolean—Whether the solve succeeded
userAgentstring—Value to send as User-Agent when using the result. Preserve it exactly
secUastring—Value to send as Sec-CH-UA when using the result
bodystring—Base64-encoded raw body of the POST /tl request — captured before delivery, so it has never been posted
urlstring—Exact URL of the POST /tl request. Replay to this URL
headersobject—Request headers, including the cookie header with KP_UID cookies
messagestring—Failure reason. Omitted on success

Replay the Request

POST the decoded body to exactly the returned url with the returned headers verbatim, from the same egress IP as the capture.

When using a successful result, preserve the returned userAgent as User-Agent and secUa as Sec-CH-UA.

Wrong or rejected result? Report the failed solve.

More from Kasada