> ## 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 の作成

> アプリケーションの snapshot を実行します。レート制限は 5 秒あたり 1 リクエストです。

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

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

### パラメータ

<ParamField path="app_id" type="string" placeholder="Application ID" required>
  アプリケーションの ID。アプリケーションのダッシュボードの URL で確認できます。
</ParamField>

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

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

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

<Warning>
  この `POST` endpoint をポーリング手段として使用しないでください。`SNAPSHOT_PROCESSING` の snapshot が完了したかどうかを確認するには、別の `POST` ではなく [snapshot 一覧の取得](/ja/api-reference/endpoint/apps/snapshots/list)（`GET`）endpoint を使用してください。snapshot 完了後に再度 `POST` すると、まったく新しい snapshot が最初から開始されます。
</Warning>

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

| レスポンス                                                    | 意味               | 対応                                                                                                                 |
| -------------------------------------------------------- | ---------------- | ------------------------------------------------------------------------------------------------------------------ |
| `status === "success"`                                   | snapshot の準備が完了。 | `url` を使ってダウンロードします。                                                                                               |
| `status === "error"` かつ `code === "SNAPSHOT_PROCESSING"` | snapshot はまだ生成中。 | 約 2 分待ってから、[snapshot 一覧の取得](/ja/api-reference/endpoint/apps/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">
      アプリケーションの snapshot をダウンロードするための URL。
    </ResponseField>

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

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

### エラー

snapshot リクエストは `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 日あたりの snapshot 許容量（24 時間あたり (RAM / 256) × 2）を使い切りました。クォータはローリング 24 時間ウィンドウが進むにつれて解放されます。1 日あたりの許容量を増やすには、プランをアップグレードしてください。
</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>
