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

# Créer un snapshot

> Effectuer un snapshot de votre base de données. Limité à 1 requête toutes les 5 secondes.

<Warning>Chaque compte peut effectuer jusqu'à (RAM / 256) \* 2 snapshots toutes les 24 heures.</Warning>

<ParamField header="Authorization" type="string" placeholder="API Key" required>
  La clé d'API de votre compte. Vous pouvez la trouver dans les [paramètres de votre compte](https://squarecloud.app/fr/account/security).
</ParamField>

### Paramètres

<ParamField path="database_id" type="string" placeholder="Database ID" required>
  L'ID de la base de données.
</ParamField>

### Comportement du délai souple (soft deadline)

Cette route suit un modèle de **délai souple** — elle ne répond plus toujours de manière synchrone.

* Si le snapshot se termine en **\~90 secondes**, la route répond avec `200 success` et une URL de téléchargement signée (valable 30 jours), exactement comme avant.
* Si le snapshot met plus de **\~90 secondes** à être généré, la route répond **immédiatement** avec `202` et le code `SNAPSHOT_PROCESSING`. **Ce n'est pas un échec.** Le snapshot continue d'être généré en arrière-plan et apparaîtra de lui-même dans la [liste des snapshots](/fr/api-reference/endpoint/databases/snapshots/list), généralement en \~2 minutes. C'est le comportement attendu pour les grandes bases de données.

<Warning>
  N'utilisez pas cet endpoint `POST` comme mécanisme de polling. Pour vérifier si un snapshot `SNAPSHOT_PROCESSING` est terminé, utilisez l'endpoint [List Snapshots](/fr/api-reference/endpoint/databases/snapshots/list) (`GET`) — et **non** un autre `POST`. Relancer un `POST` après la fin du snapshot démarre un tout nouveau snapshot depuis zéro.
</Warning>

Le client doit distinguer les cas de réponse comme suit :

| Réponse                                                  | Signification                                    | Que faire                                                                                                                                             |
| -------------------------------------------------------- | ------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| `status === "success"`                                   | Le snapshot est prêt.                            | Utilisez l'`url` pour le télécharger.                                                                                                                 |
| `status === "error"` et `code === "SNAPSHOT_PROCESSING"` | Le snapshot est toujours en cours de génération. | Attendez \~2 minutes, puis vérifiez via [List Snapshots](/fr/api-reference/endpoint/databases/snapshots/list) (`GET`). Ne relancez **pas** de `POST`. |
| `status === "error"` avec tout autre `code`              | Échec réel.                                      | Traitez l'erreur (voir ci-dessous).                                                                                                                   |

### Réponse

<ResponseField name="status" type="string">
  Indique si l'appel a réussi. `success` en cas de succès, `error` sinon.
</ResponseField>

<ResponseField name="response" type="object">
  Le contenu de la réponse. Présent uniquement lorsque `status` vaut `success`.

  <Expandable title="Afficher l'objet">
    <ResponseField name="url" type="string">
      L'URL pour télécharger le snapshot de votre application.
    </ResponseField>

    <ResponseField name="key" type="string">
      La clé pour télécharger le snapshot de votre application.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="SNAPSHOT_PROCESSING" type="202">
  Retourné lorsque le snapshot dépasse le délai souple de \~90 secondes. Le snapshot est toujours en cours de génération en arrière-plan et apparaîtra de lui-même dans la liste des snapshots, généralement en \~2 minutes. Ce n'est pas une erreur — attendez et vérifiez via l'endpoint de liste `GET`.
</ResponseField>

### Erreurs

Une requête de snapshot peut être rejetée avec `429 Too Many Requests`. Utilisez le champ `code` pour distinguer les deux cas :

<ResponseField name="KEEP_CALM" type="429">
  Cooldown à court terme — vous avez atteint la limite par utilisateur (1 requête / 5s) ou par base de données (1 requête / 180s). Patientez et réessayez sous peu.
</ResponseField>

<ResponseField name="DAILY_SNAPSHOTS_LIMIT_REACHED" type="429">
  Quota journalier atteint — le compte a épuisé le quota journalier de snapshots de son plan ((RAM / 256) × 2 par 24h). Le quota se libère au fur et à mesure que la fenêtre glissante de 24 heures avance ; pour un quota journalier plus élevé, améliorez le plan.
</ResponseField>

<ResponseExample>
  ```json 200 Success theme={null}
  {
    "status":"success",
    "response":{
      "url":"https://snapshots.squarecloud.app/databases/384443501775028242/a14b8d5e1cb7405a851eb4c075506121.zip?AWSAccessKeyId=accesskey&Expires=1757683751&Signature=JR3danhvtVywQmcaIanWsoJFqhQ%3D",
      "key":"AWSAccessKeyId=accesskey&Expires=1757683751&Signature=JR3danhvtVywQmcaIanWsoJFqhQ%3D"
    }
  }
  ```

  ```json 202 SNAPSHOT_PROCESSING theme={null}
  {
    "status": "error",
    "code": "SNAPSHOT_PROCESSING"
  }
  ```

  ```json 429 KEEP_CALM theme={null}
  {
    "status": "error",
    "code": "KEEP_CALM",
    "message": "You already requested a snapshot recently. Please wait a minute before trying again. 1r/5s"
  }
  ```

  ```json 429 DAILY_SNAPSHOTS_LIMIT_REACHED theme={null}
  {
    "status": "error",
    "code": "DAILY_SNAPSHOTS_LIMIT_REACHED",
    "message": "You are being rate limited for daily snapshots. 8r/24h"
  }
  ```
</ResponseExample>
