Try it

// run a real request against the live API

Paste a key, tweak the request, and hit Send — this calls the real POST /v1/solve. A free sk_test_ sandbox key returns a deterministic "mode":"sandbox" token instantly at no cost — handy for trying the shape of the call, but it never clears a real gate.

POST/v1/solve
// tip: a sk_test_ key returns a deterministic sandbox token instantly — great for CI, but it never clears a real gate
equivalent cURL
curl https://api.solvegate.io/v1/solve \
  -H "Authorization: Bearer sk_test_•••" \
  -H "Content-Type: application/json" \
  -d '{"gate":"turnstile","sitekey":"0x4AAAAAAAAA_target","url":"https://app.example.com"}'

The request goes from your browser to our API and nowhere else. Nothing is proxied through a third party, the key you paste is not stored, and the response you see is the same JSON your server would get — including the mode, meter and billed fields, which is the point of running it here rather than reading an example.

Use a sandbox key first. It answers instantly, costs nothing, and exercises the whole path — auth, validation, the error envelope, the response shape. What it cannot tell you is whether a particular target clears, because it never contacts one. Swap to sk_live_ when you want that answer, for a property you own or are authorized to test. Response time varies with the target, provider, proxy and retries.

If a request fails here, the error body is the diagnosis rather than a hint: 401 invalid_key is the key, 403 email_unverified is the account, 422 unknown_sitekey is the sitekey and URL pair not resolving to a live gate, and 402 is money. The error reference has the whole table, and the checker will confirm whether the URL you are aiming at carries a Turnstile widget at all.

Ready to pour through the gate?

// free sandbox keys · no card required to start