1 人で実行する(POST /launch)
/launch は、選んだ 1 人の AI に、1 つの作業を頼みます。
エンジン、モデル、労力(effort)を 1 つ決めて動かすときは、ここを使います。
計画して作業を分けたいときは、メンバーが 1 人でも /orchestrate を使います。
リポジトリで作業する
curl -X POST "https://www.kamui.ai/api/cloud/launch" \
-H "x-kamui-api-key: kamui_sk_..." \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"serverAuth": true,
"engine": "codex",
"prompt": "README にセットアップ手順を足してください",
"repoUrl": "https://github.com/you/repo",
"baseBranch": "main",
"params": { "autoPush": true }
}'
# → { "runId": "<uuid>", "machineId": "..." }
- 作業の結果は、
kamui-cloud/…のブランチに push されます。 repoUrlは、https://github.com/で始まる GitHub のリポジトリだけ受け付けます。- 返ってきた
runIdで、/result を呼びます。
Idempotency-Key(二重起動を防ぐ鍵)
起動のリクエストには、毎回新しい Idempotency-Key を付けます。
英数字と . _ : - を使った 16〜128 文字です。uuidgen の値が使えます。
付けないと、400(idempotency-key-required)になります。
通信が切れて送り直すときは、同じ鍵と、まったく同じ本文で送ります。24 時間以内なら、前と同じ応答が返り、二重には起動しません。このとき、応答に Idempotency-Replayed: true のヘッダーが付きます。
同じ鍵で本文を変えると、409(idempotency-conflict)になります。前の送信がまだ処理中なら、409(request-in-progress)になります。
テキストだけ受け取る(repoUrl を省く)
JSON や文章だけが欲しいときは、Git のリポジトリは要りません。
repoUrl を省くと、clone も push もしません。AI の最後の返事が、/result の resultText になります(artifact は {"type":"text"})。
たとえば、定期の処理から記事、要約、翻訳、JSON の作成を頼み、返ってきた JSON を自分のデータベースに保存できます。
プロンプトは 40 万文字まで送れます。材料の文章も、プロンプトに入れて送れます。
この使い方には、「成果テキスト」を許可したキーが要ります(最初の準備)。
curl -X POST "https://www.kamui.ai/api/cloud/launch" \
-H "x-kamui-api-key: kamui_sk_..." \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"serverAuth": true,
"engine": "codex",
"title": "AI ニュース: 速報記事",
"prompt": "あなたはニュース編集の担当です。\n決まり: ファイルの作成・編集、コマンドの実行、Web 検索はしないでください。前置き、後書き、コードフェンスは付けないでください。最後の返事で、次の JSON を 1 つだけ返してください:\n{\"title\":\"...\",\"article\":\"...(Markdown)\",\"tags\":[\"...\"]}\n\n=== 材料(集めた文章をここに入れる) ===\n..."
}'
# → { "runId": "<uuid>" } repoUrl が無いので、テキストで受け取る
終わるまで /result を繰り返し呼び、resultText を受け取ります。
waitS は、1 回で最大 25 秒待ちます。実行には、ふつう数分かかります。
while :; do
R=$(curl -s -X POST "https://www.kamui.ai/api/cloud/result" \
-H "x-kamui-api-key: kamui_sk_..." -H "Content-Type: application/json" \
-d '{ "runId": "<uuid>", "waitS": 25 }')
[ "$(echo "$R" | jq -r .terminal)" = "true" ] && break
done
echo "$R" | jq -r .resultText # ← 記事の JSON
プロンプトの書き方
- 「ファイルを作らない、コマンドを動かさない」「最後の返事は JSON だけ」と、はっきり書きます。書かないと、AI が内容をファイルに書いてしまい、最後の返事に入らないことがあります。
- 出力の形は、例を見せて決めます。
- 受け取る側でも、前置きやコードフェンスを取り除き、外側の JSON を取り出します。壊れた JSON は、直してから使います。
パラメーター
「Fuga の設定」の列は、デスクトップの Fuga の入力欄にある設定のうち、同じ働きのものです。
params を省くと、従来どおりの動きになります。
| パラメーター | 型 | 必須 | 既定 | Fuga の設定 | 説明 |
|---|---|---|---|---|---|
prompt |
string | 必須 | — | 入力欄 | AI への作業の指示。40 万文字まで。 |
serverAuth |
true | 必須 | — | — | クラウド金庫の認証で動かす。API キーで起動するときは、必ず true にする。 |
engine |
string | 任意 | codex | エージェントプール | claude、codex、gemini、qwen、grok、kimi、opencode のどれか。金庫に認証があるエンジンだけ動く。 |
model |
string | 任意 | エンジンの既定 | モデル | エンジンのモデル ID。サーバーが許可したモデル ID だけ受け付ける。それ以外は 400(invalid-model)。 |
effort |
string | 任意 | エンジンの既定 | 労力 | 推論の深さ。low、medium、high、xhigh、max のどれか。効き方はエンジンによる。 |
repoUrl |
string | 任意 | — | — | 作業する GitHub のリポジトリ(https://github.com/…)。省くとテキストだけを返す。 |
baseBranch |
string | 任意 | リモートの既定 | — | clone の元、autoMerge の取り込み先のブランチ。 |
title |
string | 任意 | — | — | 実行の題名。200 文字まで。/result の title に返る。 |
idleTimeoutS |
number | 任意 | 0 | — | 1 ターン目の後に、追加の指示を待つ秒数。0 は 1 ターンで終わる。最大 3600。この Base URL には追加の指示を送る窓口が無いので、ふつうは 0 のままにする。 |
params.autoMerge |
boolean | 任意 | false | 自動マージ | 終わったら baseBranch に取り込む。fast-forward できないときなどは取り込まず、実行は done のまま終わる。結果は /result の autoMerge で確かめる。 |
params.autoPush |
boolean | 任意 | true | 自動プッシュ | 作業のブランチを origin に push する。false にすると push しない。 |
params.requirementsGeneration |
boolean | 任意 | false | 要件定義の生成 | 実装の前に、要件定義の HTML を作る。 |
params.requirementsImageGeneration |
boolean | 任意 | false | 要件定義の画像生成 | 要件定義に画面の案の画像を入れる。金庫に fal のキーが要る。requirementsGeneration がオフのときは、オフになる。 |
使えない機能
- パソコンの操作とブラウザーの操作(
params.pcOperation・params.webOperation)は、パソコンの Fuga 専用です。trueにすると 400 になります。 - TODO、不具合の報告、機能の要望、定期実行、トリガーは、実行を始めない別の経路です。この API の対象外です。