The solve object
// fields on the raw API response
| Field | Type | Description |
|---|---|---|
| id | string | Unique solve id, prefixed slv_. Pass to retrieve. |
| status | string | solved, pending, or failed. |
| gate | string | Which gate was cleared — turnstile or waf. |
| token | string | A Turnstile token, or a JSON-encoded WAF payload containing cookies and headers. Null until solved. See Supported gates. |
| solve_ms | integer | Provider attempt duration in milliseconds. Excludes admission, queue wait, previous retries and result persistence; it is not end-to-end request time. |
| expires_at | integer | SolveGate's estimated use-by time in Unix seconds. It does not override Cloudflare token or cookie validity. |
| mode | string | live for a production solve, or sandbox for the deterministic test response a sk_test_ key returns. Check this before trusting a token in production — a sandbox token never clears a real gate. |
| meter | string | What paid for this solve. credits debited your prepaid balance; pass was covered by the unlimited pass this key is attached to and cost nothing; sandbox was a deterministic test response. Decided when the request is admitted and never re-derived. |
| billed | boolean | true when a successful provider result consumed a credit. This does not confirm acceptance by the target. Failed solves are never billed, and a pass solve is never billed either — check meter to tell those apart. |
| error_code | string | null | Stable failure code when status is failed; otherwise null. |
| error_message | string | null | Human-readable explanation of error_code. |
Ready to pour through the gate?
// free sandbox keys · no card required to start