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

# Snapshot erstellen

> Erstellt einen Snapshot deiner Anwendung. Hat ein Rate-Limit von 1 Anfrage alle 5 Sekunden.

<Warning>Jedes Konto kann bis zu (RAM / 256) \* 2 Snapshots alle 24 Stunden erstellen.</Warning>

<ParamField header="Authorization" type="string" placeholder="API Key" required>
  Der API-Schlüssel für Ihr Konto. Sie finden ihn in Ihren [Kontoeinstellungen](https://squarecloud.app/de/account/security).
</ParamField>

### Parameter

<ParamField path="app_id" type="string" placeholder="Application ID" required>
  Die ID der Anwendung. Du findest sie in der URL des Dashboards deiner Anwendung.
</ParamField>

### Verhalten bei Soft-Deadline

Diese Route folgt einem **Soft-Deadline**-Modell — sie antwortet nicht mehr immer synchron.

* Wird der Snapshot innerhalb von **\~90 Sekunden** fertiggestellt, antwortet die Route mit `200 success` und einer signierten Download-URL (30 Tage gültig), genau wie zuvor.
* Dauert die Erstellung des Snapshots länger als **\~90 Sekunden**, antwortet die Route **sofort** mit `202` und dem Code `SNAPSHOT_PROCESSING`. **Das ist kein Fehler.** Der Snapshot wird im Hintergrund weiter erstellt und erscheint von selbst in der [Snapshot-Auflistung](/de/api-reference/endpoint/apps/snapshots/list), typischerweise innerhalb von \~2 Minuten. Dies ist erwartetes Verhalten für große Anwendungen.

<Warning>
  Verwende diesen `POST`-Endpoint nicht als Polling-Mechanismus. Um zu prüfen, ob ein Snapshot mit `SNAPSHOT_PROCESSING` abgeschlossen ist, verwende den Endpoint [Snapshots auflisten](/de/api-reference/endpoint/apps/snapshots/list) (`GET`) — **nicht** einen weiteren `POST`. Ein erneuter POST nach Abschluss des Snapshots startet einen komplett neuen Snapshot von Grund auf.
</Warning>

Der Client sollte anhand der Antwort wie folgt verzweigen:

| Antwort                                                   | Bedeutung                    | Was zu tun ist                                                                                                                                                 |
| --------------------------------------------------------- | ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `status === "success"`                                    | Snapshot ist bereit.         | Verwende die `url`, um ihn herunterzuladen.                                                                                                                    |
| `status === "error"` und `code === "SNAPSHOT_PROCESSING"` | Snapshot wird noch erstellt. | Warte \~2 Minuten und bestätige dann über [Snapshots auflisten](/de/api-reference/endpoint/apps/snapshots/list) (`GET`). Führe **keinen** erneuten `POST` aus. |
| `status === "error"` mit einem anderen `code`             | Tatsächlicher Fehler.        | Behandle den Fehler (siehe unten).                                                                                                                             |

### Antwort

<ResponseField name="status" type="string">
  Gibt an, ob der Aufruf erfolgreich war. `success` bei Erfolg, `error` andernfalls.
</ResponseField>

<ResponseField name="response" type="object">
  Der Inhalt der Antwort. Nur vorhanden, wenn `status` gleich `success` ist.

  <Expandable title="Objekt umschalten">
    <ResponseField name="url" type="string">
      Die URL zum Herunterladen des Snapshots deiner Anwendung.
    </ResponseField>

    <ResponseField name="key" type="string">
      Der Schlüssel zum Herunterladen des Snapshots deiner Anwendung.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="SNAPSHOT_PROCESSING" type="202">
  Wird zurückgegeben, wenn der Snapshot die Soft-Deadline von \~90 Sekunden überschreitet. Der Snapshot wird weiterhin im Hintergrund erstellt und erscheint von selbst in der Snapshot-Auflistung, typischerweise innerhalb von \~2 Minuten. Kein Fehler — warte und bestätige über den `GET`-Auflistungsendpoint.
</ResponseField>

### Fehler

Eine Snapshot-Anfrage kann mit `429 Too Many Requests` abgelehnt werden. Verwende das Feld `code`, um die beiden Fälle zu unterscheiden:

<ResponseField name="KEEP_CALM" type="429">
  Kurzfristige Abkühlphase — du hast das Limit pro Nutzer (1 Anfrage / 5 s) oder pro Anwendung (1 Anfrage / 180 s) erreicht. Warte kurz und versuche es erneut.
</ResponseField>

<ResponseField name="DAILY_SNAPSHOTS_LIMIT_REACHED" type="429">
  Tageskontingent erreicht — das Konto hat das tägliche Snapshot-Kontingent seines Tarifs aufgebraucht ((RAM / 256) × 2 pro 24 h). Das Kontingent wird wieder frei, während das gleitende 24-Stunden-Fenster fortschreitet; für ein höheres Tageskontingent upgrade den Tarif.
</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>
