Solvers
Cloudflare Turnstile
How to solve Cloudflare Turnstile challenges with the Astrum Solver API: parameters, request and response.
Widget challenge embedded in a form. Returns the token you post back with the form.
| Field | Value |
|---|---|
| type | turnstile |
| Vendor | Cloudflare |
| Solution | token |
Parameters
These fields go inside the task object of a createTask request. Optional fields are only needed when the target page supplies them.
| Name | Type | Description |
|---|---|---|
| websiteURL | stringrequired | Page that serves the challenge. Must be https and resolve to a public address. |
| siteKey | stringrequired | Turnstile sitekey rendered in the widget markup. |
| cData | stringoptional | cdata value, when the target widget supplies one. |
| action | stringoptional | action value, when the target widget supplies one. |
Create a task
POSThttps://solver-dev.astrum.foundation/api/createTask
Payload
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "turnstile",
"websiteURL": "https://target.com/login",
"siteKey": "0x4AAAAAAABcDeFgHiJkLmN"
}
}Response
{"errorId": 0, "taskId": "6f1c8b32-0a5e-4a19-9a1f-3b0d54c2a1e7"}With optional fields
createTask payload
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "turnstile",
"websiteURL": "https://target.com/login",
"siteKey": "0x4AAAAAAABcDeFgHiJkLmN",
"cData": "session-4471",
"action": "login"
}
}Collect the solution
Poll every few seconds. Until the task closes the response carries only a status; the solution appears once it does.
POSThttps://solver-dev.astrum.foundation/api/getTaskResult
Payload
{
"clientKey": "YOUR_API_KEY",
"task": {
"taskId": "6f1c8b32-0a5e-4a19-9a1f-3b0d54c2a1e7",
"type": "turnstile"
}
}Response
{"errorId": 0, "status": "closed", "solution": {"token": "…"}}