REST
api.parallelsandbox.com と log.parallelsandbox.com の REST エンドポイント。アプリやスクリプト向けで、ボックスのスクリーンショットや録画の新しい URL など、エージェントにツールがないことにも使います。
Web とデスクトップアプリ、エージェント以外のもの、そしてエージェントに MCP ツールがない用途(たとえば、ボックスのスクリーンショットと録画の URL を取り直す GET /v1/boxes/{id}/media)のためのものです。同じ認証情報を Authorization: Bearer <トークン> で使います。トークンはアカウントの psbx_ API キー、または接続済みクライアントの OAuth アクセストークン(1 時間。キーの入手方法)です。特に書いていないものは https://api.parallelsandbox.com です。
| エンドポイント | 用途 |
|---|---|
/v1/auth/github |
GitHub ログイン |
/v1/keys |
API キーの作成、一覧、失効。アプリにサインインしたセッションからだけ(API キーや OAuth トークンではキーを管理できない)。POST は OAuth に対応しないツール向けのキーを作り、OAuth サインインで発行されたものは一覧に出ない |
/v1/boxes |
ボックスの一覧(起動が新しい順に最大 200 個。?all=1 で停止したものも)、起動(ここでは goal は任意)、参照、停止。一覧には sceneUrl、webUrl、各 web サービスの url、goal、agent、screenInUse、screenActive、posterUrl が入る(どの会話がボックスを使っているか)。停止したボックスにも最新の posterUrl は付くが、review は付かない:ボックスを止めるとカードは閉じられ、カードの画像はもう取れない |
PUT /v1/boxes/{id}/orientation |
準備完了のボックスの AI 画面を portrait または landscape に変更する。screen-orientation 対応のイメージが必要で、変更後の向きを返す |
POST /v1/boxes/{id}/review/done |
ボックスの待っている sandbox_review のカードを、アプリと同じく確認済みにする。GET /v1/boxes は待っているカードを review として返す |
POST /v1/boxes/{id}/wake |
凍結したボックスを復帰させる(使用として数える。アカウントにクレジットがないと 402)。ボックスの状態を返す |
GET /v1/boxes/{id}/media |
このボックスで直近 7 日間に撮られた、画面が残っているステップ(sandbox_exec で自動録画されたもの、sandbox_shot で撮った・録画したもの)。新しい 200 件まで、古い順。止めたボックスでも取得できます:{"keepDays": 7, "steps": [...]}。各ステップのフィールドは sandbox_status の steps[] と同じで(at、kind、summary、ok、それに該当するときだけの target、note、actor、detail、ms、exitCode、signal、timedOut、error)、ほかに media[] があり、それぞれ kind(video か image)、url、bytes、動画には durationSec が付きます。URL は呼ぶたびに署名し直され、少なくとも 1 時間有効 |
DELETE /v1/boxes/{id}/media |
このボックスに保存されたスクリーンショット、録画(ステップごとに自動で録画されたものを含む)、凍結時のポスター、レビューカードの画像を削除します。動いているボックスにも止めたボックスにも使えます。{"ok":true,"deleted":N,"bytes":B} を返します。アクティビティ記録は残り、その後の GET /v1/boxes/{id}/media は空の steps を返します。別のアカウントのボックスは 404。途中で失敗すると 502 で、もう一度呼べば残りを削除します |
DELETE /v1/boxes/{id}/events |
ボックスの活動記録を削除します。アプリのタイムラインのステップ(人がそこで見られる説明とコマンドも)、sandbox_status の steps[]、それらのステップで撮ったスクリーンショットと録画です。どうやって作ったかを見せるべきでない相手、たとえば別の言語を読む審査員にボックスを渡す前に使います。{"ok":true,"deleted":N,"mediaDeleted":M} を返し、その後の呼び出しは通常どおり記録されます。呼べるのはアカウント本人だけで、確認リンクからは呼べません。別のアカウントのボックスは 404 です |
DELETE /v1/build-cache |
アカウントの sandbox_build キャッシュをすべて削除し、{"ok":true,"deleted":N,"bytes":B} を返します。以後、同じフィンガープリントの sandbox_build はビルドし直します(reused: false)。途中で失敗すると 502 で、もう一度呼んでください |
POST /v1/agents/{id}/heartbeat |
会話 {id}(その X-Psbx-Agent)がまだ開いている。本文は {"client": "<MCP クライアント名>"}、60 秒ごと。{"ok":true} を返す |
POST /v1/agents/{id}/leave |
会話 {id} が閉じられた。それが最後に使ったボックスは、人を待っていなければ「AI は手を止めました」と表示される。{"ok":true} を返す |
POST /v1/boxes/{id}/exec |
人としてコマンドを実行する。アプリのコマンド欄が使うもの:{"cmd", "cwd", "env", "timeoutSec", "background", "note"} を受け取り、sandbox_exec のフィールドと "actor": "human" を返す。ボックスが引き継がれている間も実行され、記録されず(スクリーンショットも動画もなし)、steps[] とアプリでのそのステップは actor: human になる。AI のステップはこうして作られるものではない。エージェントの呼び出しで何が記録されるかを試すには、MCP で sandbox_exec を呼ぶ |
GET /v1/files/{token} |
sandbox_get、sandbox_shot、sandbox_exec の outputUrl が返すダウンロードリンク。キーは不要(リンク自体が権限で、1 時間有効)。数分間有効なストレージの URL にリダイレクト(302)する |
/v1/boxes/{id}/sync |
tar.gz をボックスにアップロード(アダプターの sandbox_sync が使う) |
/v1/boxes/{id}/screencast |
ライブ画面、WebSocket |
/v1/boxes/{id}/input |
マウスとキーボードの入力 |
/v1/takeovers |
保留中の引き継ぎリクエスト。それぞれ takeoverUrl、その token と appLink(parallelsandbox://box/<id>?t=<token>)付き |
/v1/takeovers/{id}/return |
メモを添えてボックスを返す |
GET、PUT /v1/box-access |
ボックス URL の IP 許可リスト:{ "allowedIps": [...] }、[] でオフ(その他の事実) |
GET /v1/secrets、PUT /v1/secrets/{name}、DELETE /v1/secrets/{name} |
シークレットの管理。人は app.parallelsandbox.com の設定 → Secrets でも追加、置き換え、削除ができます |
/v1/versions |
公開済みのバージョン。DELETE /v1/versions/{id} はバージョンの記録を削除し、同じイメージタグを使うバージョンがアカウントにほかになければレジストリのイメージも削除して {"ok":true,"imageDeleted":true} を返します。イメージを残したときは imageDeleted が false で reason が付きます(例:image is still used by 1 other version(s): billing/v2)。レジストリで削除できなかったときは 502 で、バージョンの記録は残るので再試行できます |
/v1/environments |
環境、接続(コネクタのトークン)、プライベートアドレス、サービス設定(.env のアップロードまたは AWS ECS からの取り込み)。すべてのエンドポイントは環境に |
/v1/aws |
取り込みに使う読み取り専用の AWS ロール。/v1/aws/ecs/services で ECS サービスを一覧 |
/v1/connector |
コネクタが接続する WebSocket(接続トークン付き) |
GET /v1/usage、GET /v1/usage/events |
種類ごとの使用量合計と使用量イベント(since、until、box_id、limit) |
GET /v1/credits |
残高、バケット、プラン、クレジットが尽きてから 24 時間の間は boxesKeptUntil |
GET /v1/billing/catalog |
プランと追加パック(キー不要) |
/v1/billing/checkout、/v1/billing/portal |
Stripe Checkout と顧客ポータル |
/v1/billing/webhook |
Stripe webhook |
POST /v1/projects(log.parallelsandbox.com) |
ログプロジェクトの作成。書き込みキーはこのときだけ返る |
GET、PATCH、DELETE /v1/projects/{id}(log.parallelsandbox.com) |
ログプロジェクトの参照、許可するオリジンの変更、削除 |
POST /v1/projects/{id}/write-key(log.parallelsandbox.com) |
書き込みキーの交換。古いキーはすぐ無効 |
/v1/projects/{id}/sourcemaps(log.parallelsandbox.com) |
ソースマップのアップロードと一覧 |
すべてのツールとトピックはツールリファレンスに並んでいます。
API keys
OAuth に対応しないツールは psbx_ API キーを使えます。AI がアプリのログイン済みセッションから、名前を指定して POST /v1/keys で作成します。キーの表示は一度だけです。GET /v1/keys で一覧、DELETE /v1/keys/{id} で失効できます。API キーや OAuth アクセストークンではキーを管理できません。通常のインストールは OAuth アダプターを使い、手動でキーを作る必要はありません。