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

# リアルタイムログ

> Server-Sent Events (SSE) 接続を確立して、アプリケーションのリアルタイムフィード（ログ、ライブメトリクス、ステータス、deploy の進行状況）を受信します。接続時には最新の 200 行のログが送信され、その後に新しい更新が続きます。接続は最大 10 分間維持できます。

<Info>この endpoint では、ブラウザで普遍的にサポートされていない SSE 接続の性質上、API Playground が無効化されています。</Info>

<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。この ID はアプリケーションの管理パネルの URL で確認できます。
</ParamField>

### レスポンス

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

失敗した場合、レスポンスにはエラーステータスとともに `code` フィールドが含まれ、原因が示されます。

リクエストが成功した場合、レスポンスはアプリケーションのリアルタイムフィードを含む `text/event-stream` ストリームになります。

各接続は最大 **10 分間** 継続します。各アカウントは **5 つの同時リアルタイム接続**（`REALTIME_MAX_CONNECTIONS`）を、各アプリケーションは **全ユーザー合計で 30 接続**（`REALTIME_MAX_CONNECTIONS_APP`）を保持できます。いずれかを超えると `429` が返されます。

### Server-Sent Events (SSE) の構造

レスポンスは `text/event-stream` 形式の連続ストリームです。各メッセージは `event` フィールドと `data` フィールドで構成されます。形状はイベントによって異なるため、ペイロードは防御的にパースしてください。

#### イベントタイプ

* `system`: プロトコルレベルのシグナル。`data` 行は単一の大文字コードです。接続時には `REALTIME_CONNECTING | <sseId>`、その後に `REALTIME_TIMEOUT`、`REALTIME_DISCONNECTED`、`REALTIME_RECONNECT`、`REALTIME_ERROR` のいずれかが続きます。
* `logs`: 単一のログ行で、その **先頭文字はストリーム ID バイト** です: `\x01`（stdout）または `\x02`（stderr）。`data.charCodeAt(0)` を読み取り（1 = stdout、2 = stderr）、続いて `data.slice(1)` でテキストを取得します。この接頭バイトを持たない行は stdout です。
* `status`: JSON 文字列としてのライブコンテナメトリクスで、おおよそ 1 秒あたり 1 フレームです。各（再）接続の **最初のフレーム** は完全です: `{ cpu, cpuLimit, ram: [usedMB, limitMB], status, netIO: { i, o, new: { i, o } }, bIO: { i, o }, uptime }`（`uptime` は開始時刻をエポックミリ秒で表したもの、`netIO.new` は 1 秒あたりのバイト数）。**それ以降のフレームはすべて簡略化されており**、`{ cpu, ram, netIO, bIO }` のみを含みます。各フレームを直前の完全なフレームにマージし、以前の `cpuLimit`、`status`、`uptime` を保持してください。このストリームが開いている間は、`GET /v2/apps/{app_id}/status` のポーリングよりもこちらを優先してください。リアルタイムストリームが開いているアプリでは、その status は最大で約 1 分古くなる場合があります。
* `error`: `CONTAINER_NOT_FOUND` などのエラーコードを含みます。

以下の例では、`\x01` / `\x02` は生の stdout / stderr 接頭バイトを表しています。

<CodeGroup>
  ```text Stream example theme={null}
  event: system
  data: REALTIME_CONNECTING | abc123-1716000000000-deadbeef

  event: status
  data: {"cpu":12.5,"cpuLimit":100,"ram":[128,512],"status":"running","netIO":{"i":2048,"o":4096,"new":{"i":64,"o":128}},"bIO":{"i":0,"o":0},"uptime":1716000000000}

  event: status
  data: {"cpu":13.1,"ram":[131,512],"netIO":{"i":2176,"o":4288,"new":{"i":72,"o":140}},"bIO":{"i":0,"o":0}}

  event: logs
  data: \x01Server listening on :3000

  event: logs
  data: \x02Error: connect ECONNREFUSED
  ```
</CodeGroup>
