# Sandbox

A `sk_test_` key runs your sandbox workflows. You can verify yourself with a real document there, or send `sandbox_scenario` to finish the session at once with a chosen outcome. A scenario session sends the usual webhook and signed result and captures nothing. Its signed result carries `sandbox_scenario`, and the dashboard marks it.

The sandbox is free on every plan: no sandbox session is charged, with or without a scenario, whether your API key, the dashboard or a public link of a sandbox workflow starts it. Sandbox sessions that run the real checks (no `sandbox_scenario`) are limited to 200 a day per organization; beyond that, creating one answers 429 with the code `sandbox_daily_limit` until midnight UTC. Scenario sessions count only against the general sandbox limit of 1,000 a day. Until your organization is approved for production, sandbox sessions need a `sandbox_scenario`.

```shell
curl -X POST https://api-verify.secuveri.com/v1/sessions \
  -H "x-api-key: $SECUVERI_TEST_KEY" \
  -H "content-type: application/json" \
  -d '{"sandbox_scenario":"review_liveness","vendor_data":"test-7"}'
```

| Scenario | Status | Reason | What it simulates |
| --- | --- | --- | --- |
| `approved` | COMPLETE |  | Every check passes; the verification is approved. |
| `declined_tampered` | FAILED | `document: TAMPERED` | The document image was edited. |
| `declined_expired` | FAILED | `document: DOCUMENT_EXPIRED` | The document has expired. |
| `declined_unreadable` | FAILED | `document: UNREADABLE_DOCUMENT` | The document photo could not be read. |
| `declined_face_mismatch` | FAILED |  | The selfie is not the document holder. |
| `review_liveness` | REVIEW_REQUIRED | `LIVENESS_REVIEW` | Liveness was unclear; a reviewer decides. |
| `review_aml` | REVIEW_REQUIRED | `AML_REVIEW` | AML screening found a possible match; a reviewer decides. |
| `review_document` | REVIEW_REQUIRED | `DOCUMENT_AUTHENTICITY_REVIEW` | The document's security features were unclear. |
| `check_error` | CHECK_ERROR | `REQUIRED_SELFIE_CHECK_ERROR` | A required selfie check could not run. |

A scenario ignores the workflow's steps: every check is reported as in the table. A `review_` scenario waits in your dashboard like a real one, so you can test the `verification.reviewed` webhook by deciding it. A live key sending `sandbox_scenario` gets 422.
