Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

HTTP API リファレンス

最終更新 Markdown で表示Agent セットアップ

このページは、安定版テンプレート上の sandbox bridge が公開するすべてのルートを記載します。

認証

/v1/sandbox/*/v1/openapi.* 配下のすべてのルートには Bearer トークンが必要です。

Authorization: Bearer <SANDBOX_API_KEY>

SANDBOX_API_KEY が未設定のときは、ローカル開発の便宜のため認証をスキップします。本番へデプロイする前に、必ずシークレットを設定してください。

OpenAPI スキーマ

bridge は自身の API ドキュメントを提供します。

メソッド ルート 説明
GET /v1/openapi.json 機械可読の OpenAPI 3.1 スキーマです。
GET /v1/openapi 対話型の HTML ドキュメントです。

両方のルートは、Bearer ヘッダーまたは ?token= クエリパラメーターで認証できます。

ローカルで npm run dev を実行しているときは、ブラウザーで http://localhost:8787/v1/openapi を開き、各エンドポイントを対話的に確認できます。

サンドボックスのライフサイクル

メソッド ルート 説明
POST /v1/sandbox 新しいサンドボックスを作成します。{"id": "<sandbox-id>"} を返します。
DELETE /v1/sandbox/:id サンドボックスコンテナを破棄します。204 を返します。
GET /v1/sandbox/:id/running コンテナの稼働状態を確認します。{"running": true|false} を返します。

コマンド実行

メソッド ルート 説明
POST /v1/sandbox/:id/exec コマンドを実行します。レスポンスは SSE ストリームです(後述)。

/exec エンドポイントは次の JSON ボディを受け付けます。

{
  "argv": ["sh", "-lc", "echo hello"],
  "timeout_ms": 10000,
  "cwd": "/workspace"
}

argv のエスケープ

argv 配列の各要素は、シェルコマンドに結合する前に ANSI-C の $'...' クォートでエスケープされます。安全な文字(A-Za-z0-9@%+=:,./-)だけを含むトークンはそのまま渡します。それ以外のトークンは $'...' で囲み、バックスラッシュ、シングルクォート、改行、キャリッジリターン、タブをエスケープします。これによりシェルインジェクションを防ぎつつ、スペース、引用符、特殊文字を含む引数を保てます。

SSE レスポンス形式

レスポンスは text/event-stream で、次のイベント種別があります。

イベント データ 説明
stdout Base64 エンコードしたチャンク コマンドの標準出力です。
stderr Base64 エンコードしたチャンク コマンドの標準エラーです。
exit {"exit_code": N} コマンドが完了しました。終端イベントです。
error {"error": "…", "code": "…"} コマンドが失敗しました。終端イベントです。

ファイル操作

メソッド ルート 説明
GET /v1/sandbox/:id/file/* ファイルを読みます。生バイト(application/octet-stream)を返します。
PUT /v1/sandbox/:id/file/* ファイルを書き込みます。リクエストボディは生バイトです。{"ok": true} を返します。上限は 32 MiB です。

ファイルパスは URL の /file/ のあとにエンコードします。すべてのパスは /workspace 内に解決される必要があります。パストラバーサル(例: ../../etc/passwd)は拒否されます。

ワークスペースの永続化

メソッド ルート 説明
POST /v1/sandbox/:id/persist /workspace を tar アーカイブにシリアル化します。生の tar バイトを返します。
POST /v1/sandbox/:id/hydrate リクエストボディとして送った tar アーカイブから /workspace を復元します。

/persist エンドポイントは、オプションの excludes クエリパラメーターを受け付けます。アーカイブから除外する相対パスをカンマ区切りで指定します。

/hydrate エンドポイントは、最大 32 MiB の生 tar ペイロードを受け付けます。

バケットマウント

メソッド ルート 説明
POST /v1/sandbox/:id/mount S3 互換バケットをローカルディレクトリとしてマウントします。
POST /v1/sandbox/:id/unmount 以前マウントしたバケットをアンマウントします。

/mount エンドポイントは JSON ボディを受け付けます。次の 2 つの流れに対応しています。

R2 バインディングのマウント

endpoint を省略し、bucket に Worker の R2 バインディング名を渡します。

{
  "bucket": "MY_BUCKET",
  "mountPath": "/mnt/data",
  "options": {
    "readOnly": false,
    "prefix": "/subdir"
  }
}

options.endpoint を省略したとき、bucket は Worker の R2 バインディング名を意味します。

明示的な S3 互換エンドポイントへマウントする場合は、endpoint を含め、必要に応じて credentials も指定します。

{
  "bucket": "my-r2-bucket",
  "mountPath": "/mnt/data",
  "options": {
    "endpoint": "https://ACCOUNT_ID.r2.cloudflarestorage.com",
    "readOnly": false,
    "prefix": "/subdir",
    "credentials": {
      "accessKeyId": "...",
      "secretAccessKey": "..."
    }
  }
}

endpoint を指定したとき、bucket はリモートのバケット名を意味します。このモードでは認証情報は任意です。省略すると、bridge は Worker のシークレット(R2_ACCESS_KEY_ID / R2_SECRET_ACCESS_KEY または AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY)から自動検出します。

セッション

メソッド ルート 説明
POST /v1/sandbox/:id/session セッションを作成します。{"id": "<session-id>"} を返します。
DELETE /v1/sandbox/:id/session/:sid セッションを削除します。204 を返します。

セッションは、サンドボックス内で作業ディレクトリ、環境変数、コマンド実行状態を分離します。/exec/file/*/pty リクエストに Session-Id ヘッダーを付けると、そのセッションにスコープします。

Session-Id ヘッダーがない場合、リクエストはサンドボックスの暗黙的な実行モードを使います。デフォルトではデフォルトセッションです。ただし enableDefaultSession: false を設定した SDK では、これらの暗黙的な操作はセッションなしで実行されます。

ターミナル(PTY)

メソッド ルート 説明
GET /v1/sandbox/:id/pty WebSocket の PTY セッションへアップグレードします。

クエリパラメーター:

パラメーター デフォルト 説明
cols number 80 ターミナルの幅(桁数)です。
rows number 24 ターミナルの高さ(行数)です。
shell string シェルのバイナリです(例: /bin/bash)。
session string セッションスコープの PTY 用セッション ID です。

WebSocket は、ターミナル I/O にバイナリフレーム、制御メッセージに JSON テキストフレームを使います。

方向 フレーム種別 内容
クライアント → サーバー Binary UTF-8 でエンコードしたキー入力です。
サーバー → クライアント Binary ANSI エスケープシーケンスを含むターミナル出力です。
クライアント → サーバー Text (JSON) 制御メッセージです(例: {"type": "resize", "cols": 120, "rows": 30})。
サーバー → クライアント Text (JSON) ステータスメッセージです(readyexiterror)。

ウォームプール

メソッド ルート 説明
GET /v1/pool/stats 現在のプール統計です。
POST /v1/pool/prime ウォームプールのアラームループを開始します。
POST /v1/pool/shutdown-prewarmed アイドル中のウォームコンテナをすべて停止します。

ウォームプールはサンドボックスコンテナを事前起動し、新しいセッションをすぐ起動できるようにします。wrangler.jsonc の環境変数で設定します。

{
  "$schema": "./node_modules/wrangler/config-schema.json",
  "vars": {
    "WARM_POOL_TARGET": "3",
    "WARM_POOL_REFRESH_INTERVAL": "10000"
  }
}
[vars]
WARM_POOL_TARGET = "3"           # Number of idle containers to keep warm (0 = disabled)
WARM_POOL_REFRESH_INTERVAL = "10000"  # Health-check interval in milliseconds

デプロイ後、cron トリガー(* * * * *)がプールを自動で事前起動します。WARM_POOL_TARGET"0"(デフォルト)にするとプールを無効にし、想定外の課金を避けられます。

ヘルスチェック

メソッド ルート 説明
GET /health 認証不要の稼働確認です。{"ok": true} を返します。

関連リソース

役に立ちましたか?