> ## Documentation Index
> Fetch the complete documentation index at: https://docs.anonage.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Testing

> Exercise the full loop before you go live.

## Development environment

Integrate against the development base URL while you build:

```
https://dev1api.anonage.io
```

It behaves exactly like production but is backed by a **sandbox** identity provider, so you can
run the whole loop — open a session, present with a test wallet, receive a signed callback — without
real KYC.

## A good end-to-end test

<Steps>
  <Step title="Open a session">
    Call `POST /api/age-verification/session` from your server and render the QR / tap-link.
  </Step>

  <Step title="Present with a verified test wallet">
    Approve in an AnonAge wallet that has completed sandbox verification, so the session resolves.
  </Step>

  <Step title="Assert your callback ran">
    Confirm your `callback_url` received a request, the **signature verified**, and you recorded the
    result. Then confirm polling `GET /api/age-verification/session/{id}` agrees.
  </Step>

  <Step title="Test the unhappy paths">
    A forged/unsigned callback must be rejected (401 on your side); an expired session must not
    resolve; a second present on the same session must be ignored.
  </Step>
</Steps>

<Note>
  **Roadmap:** dedicated **test** and **live** API keys. A test key will run against sandbox and never
  bill, so you can keep an integration test suite running against your live account safely.
</Note>

## Going live

1. Point your base URL at `https://api.anonage.io`.
2. Swap your development key for a production key from the [Console](https://anonage.io/console).
3. Make sure your `callback_url` is publicly reachable over **https** and verifies signatures.
