> ## 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

> Effectuez un snapshot de votre application. Soumis à une limite de débit de 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="app_id" type="string" placeholder="Application ID" required>
  L'ID de l'application. Vous le trouverez dans l'URL du tableau de bord de votre application.
</ParamField>

### Comportement de la soft deadline

Cette route suit un modèle de **soft deadline** — 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 (valide 30 jours), exactement comme auparavant.
* Si le snapshot met plus de **\~90 secondes** à se générer, la route répond **immédiatement** avec `202` et le code `SNAPSHOT_PROCESSING`. **Ce n'est pas un échec.** Le snapshot continue de se générer en arrière-plan et apparaîtra de lui-même dans la [liste des snapshots](/fr/api-reference/endpoint/apps/snapshots/list), généralement en \~2 minutes. Il s'agit du comportement attendu pour les applications volumineuses.

<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 [Lister les snapshots](/fr/api-reference/endpoint/apps/snapshots/list) (`GET`) — **et non** un autre `POST`. Reposter après la fin du snapshot déclenche un tout nouveau snapshot à partir de zéro.
</Warning>

Le client doit se brancher sur la 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 encore en cours de génération. | Attendez \~2 minutes, puis confirmez via [Lister les snapshots](/fr/api-reference/endpoint/apps/snapshots/list) (`GET`). Ne refaites **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">
  Renvoyé lorsque le snapshot dépasse la soft deadline 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 confirmez 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 / 5 s) ou par application (1 requête / 180 s). Patientez et réessayez sous peu.
</ResponseField>

<ResponseField name="DAILY_SNAPSHOTS_LIMIT_REACHED" type="429">
  Quota journalier atteint — le compte a épuisé l'allocation quotidienne de snapshots de son plan ((RAM / 256) × 2 par 24 h). Le quota se libère à mesure que la fenêtre glissante de 24 heures avance ; pour une allocation quotidienne plus élevée, mettez le plan à niveau.
</ResponseField>

<ResponseExample>
  ```json 200 Success theme={null}
  {
      "status": "success",
      "response": {
          "url": "https://snapshots.squarecloud.app/applications/23457145698959364/a23d130fcc9ddaf2d288ae9599a4292c32.zip?AWSAccessKeyId=i06Xdad2dRD74Pm8Xly&Expires=1753081182&Signature=riWPedawcsouRAPGU5n3kGHnWoOuw%3D",
          "key": "AWSAccessKeyId=i06Xdad2dRD74Pm8Xly&Expires=1753081182&Signature=riWPedawcsouRAPGU5n3kGHnWoOuw%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>
