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

FieldTypeDescription
gatereqstringturnstile or waf — which challenge to clear.
sitekeyreqstringThe target's public site key, e.g. 0x4AAA…. Found in the challenge widget's markup.
urlreqstringThe page URL where the gate is served. Used to scope the solved token.
actionoptstringTurnstile action value, if the widget sets one.
asyncoptbooleanReturn immediately with status:"pending" and poll for the result. Default false.
proxyoptstringRoute 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.com
200 · 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

Two gates stand between you and the data. Both open here.

// free sandbox keys · no card required to start

Get your API key →
·Turnstile + WAF specialist·status: operational