> ## 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 Datenbank. Es gilt ein Rate-Limit von 1 Anfrage alle 5 Sekunden.

<Warning>Jeder Account 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="database_id" type="string" placeholder="Database ID" required>
  Die ID der Datenbank.
</ParamField>

### Verhalten der Soft Deadline

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

* Wenn der Snapshot innerhalb von **\~90 Sekunden** fertiggestellt wird, antwortet die Route wie bisher mit `200 success` und einer signierten Download-URL (30 Tage gültig).
* Wenn die Erstellung des Snapshots länger als **\~90 Sekunden** dauert, 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/databases/snapshots/list), in der Regel innerhalb von \~2 Minuten. Bei großen Datenbanken ist das erwartetes Verhalten.

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

Der Client sollte je nach 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 [List Snapshots](/de/api-reference/endpoint/databases/snapshots/list) (`GET`). Führe **kein** erneutes `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 im Hintergrund weiter erstellt und erscheint von selbst in der Snapshot-Auflistung, in der Regel innerhalb von \~2 Minuten. Kein Fehler — warte und bestätige über den `GET`-Auflistungs-Endpoint.
</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 Benutzer (1 Anfrage / 5s) oder pro Datenbank (1 Anfrage / 180s) erreicht. Warte kurz und versuche es erneut.
</ResponseField>

<ResponseField name="DAILY_SNAPSHOTS_LIMIT_REACHED" type="429">
  Tageskontingent erreicht — der Account hat sein tägliches Snapshot-Kontingent des Plans aufgebraucht ((RAM / 256) × 2 pro 24h). Das Kontingent wird frei, während das gleitende 24-Stunden-Fenster fortschreitet; für ein höheres Tageskontingent aktualisiere den 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>
