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

# スナップショットの作成

> データベースのスナップショットを実行します。レート制限は 5 秒あたり 1 リクエストです。

<Warning>各アカウントは 24 時間ごとに最大 (RAM / 256) \* 2 回のスナップショットを実行できます。</Warning>

<ParamField header="Authorization" type="string" placeholder="API Key" required>
  アカウントの API キーです。これは[アカウント設定](https://squarecloud.app/ja/account/security)で確認できます。
</ParamField>

### パラメータ

<ParamField path="database_id" type="string" placeholder="Database ID" required>
  データベースの ID。
</ParamField>

### ソフトデッドラインの挙動

このルートは **ソフトデッドライン** モデルに従います。つまり、常に同期的に応答するわけではなくなりました。

* スナップショットが **約 90 秒以内** に完了した場合、ルートは従来どおり `200 success` と署名付きダウンロード URL（30 日間有効）を返します。
* スナップショットの生成に **約 90 秒以上** かかる場合、ルートは **即座に** `202` とコード `SNAPSHOT_PROCESSING` を返します。**これは失敗ではありません。** スナップショットはバックグラウンドで生成され続け、通常は約 2 分以内に自動的に [スナップショット一覧](/ja/api-reference/endpoint/databases/snapshots/list) に表示されます。これは大規模なデータベースでは想定される挙動です。

<Warning>
  この `POST` エンドポイントをポーリングの仕組みとして使用しないでください。`SNAPSHOT_PROCESSING` のスナップショットが完了したかどうかを確認するには、別の `POST` ではなく、[スナップショット一覧](/ja/api-reference/endpoint/databases/snapshots/list)（`GET`）エンドポイントを使用してください。スナップショットの完了後に再度 `POST` すると、まったく新しいスナップショットが最初から開始されます。
</Warning>

クライアントはレスポンスに応じて次のように分岐する必要があります。

| レスポンス                                                    | 意味              | 対応                                                                                                                 |
| -------------------------------------------------------- | --------------- | ------------------------------------------------------------------------------------------------------------------ |
| `status === "success"`                                   | スナップショットの準備完了。  | `url` を使ってダウンロードします。                                                                                               |
| `status === "error"` かつ `code === "SNAPSHOT_PROCESSING"` | スナップショットはまだ生成中。 | 約 2 分待ってから、[スナップショット一覧](/ja/api-reference/endpoint/databases/snapshots/list)（`GET`）で確認します。再度 `POST` **しない** でください。 |
| `status === "error"` でその他の `code`                        | 実際の失敗。          | エラーを処理します（以下を参照）。                                                                                                  |

### レスポンス

<ResponseField name="status" type="string">
  呼び出しが成功したかどうかを示します。成功した場合は `success`、失敗した場合は `error` です。
</ResponseField>

<ResponseField name="response" type="object">
  レスポンスの内容。`status` が `success` の場合のみ存在します。

  <Expandable title="オブジェクトを切り替える">
    <ResponseField name="url" type="string">
      アプリケーションのスナップショットをダウンロードするための URL。
    </ResponseField>

    <ResponseField name="key" type="string">
      アプリケーションのスナップショットをダウンロードするためのキー。
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="SNAPSHOT_PROCESSING" type="202">
  スナップショットが約 90 秒のソフトデッドラインを超えた場合に返されます。スナップショットはバックグラウンドで生成され続けており、通常は約 2 分以内に自動的にスナップショット一覧に表示されます。エラーではありません。待機してから `GET` の一覧エンドポイントで確認してください。
</ResponseField>

### エラー

スナップショットリクエストは `429 Too Many Requests` で拒否されることがあります。`code` フィールドで 2 つのケースを区別します。

<ResponseField name="KEEP_CALM" type="429">
  短期的なクールダウン。ユーザーごと（5 秒あたり 1 リクエスト）またはデータベースごと（180 秒あたり 1 リクエスト）の制限に達しました。しばらく待ってから再試行してください。
</ResponseField>

<ResponseField name="DAILY_SNAPSHOTS_LIMIT_REACHED" type="429">
  1 日あたりのクォータに到達。アカウントがプランの 1 日あたりのスナップショット許容量（24 時間あたり (RAM / 256) × 2）を使い切りました。クォータは移動する 24 時間ウィンドウが進むにつれて解放されます。1 日あたりの許容量を増やすには、プランをアップグレードしてください。
</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>
