# Préproduction et sandbox

VaEmail possède deux mécanismes vérifiés pour tester sans livraison réelle : la clé sandbox d’un compte et la clé de test temporaire.

## Prérequis

- Une clé sandbox du compte, ou une clé obtenue par `POST /api/v1/test-key`.
- Un client HTTP ou le SDK Node/Python.

## Tutoriel

Avec une clé sandbox, les lectures fonctionnent normalement. Les écritures `POST`, `PUT`, `PATCH` et `DELETE` sont validées dans une transaction toujours annulée. Les réponses d’écriture portent `X-VaEmail-Sandbox: 1` et `sandbox: true` dans les objets JSON.

Pour une clé de test :

```bash
curl -X POST https://app.vaemail.fr/api/v1/test-key
```

La clé de test est valable 24 heures. Elle simule les livraisons avec `success@simulator.amazonses.com`, `bounce@simulator.amazonses.com` et `complaint@simulator.amazonses.com`.

## Comment tester

```bash
curl https://app.vaemail.fr/api/v1/me -H 'api-key: vae_test_XXXXXXXX'
curl -X POST https://app.vaemail.fr/api/v1/transactional/send \
  -H 'api-key: vae_test_XXXXXXXX' -H 'Content-Type: application/json' \
  -d '{"to":"success@simulator.amazonses.com","subject":"Test","html":"<p>Test</p>"}'
```

Vérifie `mode: sandbox` ou `test_mode` dans la réponse. Une clé de test ne conserve aucune donnée.

## Limites

Le sandbox n’est pas une preuve de délivrance. Les clés de test sont limitées à cinq par adresse IP et par jour, avec une limite quotidienne globale. L’idempotence n’est pas mémorisée avec une clé de test.

## Reprise après erreur

Si la clé de test est expirée ou limitée, recrée un environnement de test ou utilise une clé sandbox de compte. Une réponse `403 NOT_AVAILABLE_IN_TEST_MODE` signifie que la route ne fait pas partie du périmètre de test.

