Solve a gate
// create a solve and get a token back
POST/v1/solve— avg · synchronous
Creates a solve and blocks until the gate clears or the request times out (default 20s). For gates that resolve slowly you can pass async: true and poll retrieve instead.
Body parameters
| Field | Type | Description |
|---|---|---|
| gatereq | string | turnstile or waf — which challenge to clear. |
| sitekeyreq | string | The target's public site key, e.g. 0x4AAA…. Found in the challenge widget's markup. |
| urlreq | string | The page URL where the gate is served. Used to scope the solved token. |
| actionopt | string | Turnstile action value, if the widget sets one. |
| asyncopt | boolean | Return immediately with status:"pending" and poll for the result. Default false. |
| proxyopt | string | Route the solve through your own egress IP, e.g. http://user:pass@ip:port. |
Request & response
request
curl https://api.solvegate.io/v1/solve \
-H "Authorization: Bearer sk_live_•••" \
-d gate=turnstile \
-d sitekey=0x4AAAAAAAAA_target \
-d url=https://app.example.com200 · gate cleared
{
"id": "slv_8Kd2…aF9",
"status": "solved",
"gate": "turnstile",
"token": "0.Xa3f…X9_cleared",
"solve_ms": 980,
"expires_at": 1714663200,
"mode": "live",
"meter": "credits",
"billed": true
}Ready to pour through the gate?
// free sandbox keys · no card required to start