Control API リファレンス
SimpliGen がマシンで公開するローカル HTTP API。カスタム統合の構築とヘッドレス生成の実行に使用します。
SimpliGen はアプリが開いている間、マシン上で小さな HTTP Control API を実行します。MCP サーバーが通信するのと同じ API ですが、直接公開されているので、アプリをトレイに最小化した状態でも、独自のスクリプト、サービス、またはエージェントから SimpliGen を操作できます。
MCP と Control API
AI エージェント(Claude、Codex など)に SimpliGen を使わせたいだけの場合は、代わりに MCP サーバーを設定してください。これは API をラップしています。任意の言語でカスタム統合を書く場合は Control API を直接使用します。
ベース URL と検出
サーバーはループバック専用にバインドし、デフォルトは以下の通りです:
http://127.0.0.1:48199そのポートが既に使用されている場合、SimpliGen は OS が割り当てたポートにフォールバックします。現在のポート(および API バージョン)は、常にアプリのユーザーデータディレクトリ内の検出ファイルに書き込まれます:
# Windows
%APPDATA%\simpligen\agent-api.json
# macOS
~/Library/Application Support/simpligen/agent-api.json
# Linux
~/.config/simpligen/agent-api.json{ "port": 48199, "version": 1 }48199 をハードコーディングする代わりに、このファイルを読んでライブポートを見つけてください。
要件
Control API はアプリが開いていて、マシンが エージェント アクセスに対応している場合にのみ実行されます(これはライセンスの一部です)。リクエストは Host ヘッダーがループバック アドレスである場合にのみ処理されます。それ以外は 403 forbidden_host を返します(DNS リバインディング ガード)。
認証
GET /health を除くすべてのエンドポイントは、Authorization ヘッダーに ペアリング トークン が必要です:
Authorization: Bearer sg-agent-xxxxxxxx...アプリの 設定 → エージェントに接続 でトークンを作成します(エージェントに接続参照)。生のトークンは 1 回だけ 表示されます。ハッシュのみが保存されます。各トークンはクラウド生成用のオプションの 使用限度額 を持つことができます。アプリでトークンを取り消すと、すぐに有効になります。
トークンが見つからないか無効な場合は 401 unauthorized が返されます。
規約
- リクエスト: JSON ボディ(
Content-Type: application/json)、最大 50 MB。 - レスポンス: 常に JSON。
- エラー: 2xx 以外のレスポンスは
{ "errorCode": "...", "message": "..." }の形式です。 - ID: プリセットは
presetId(+ オプションのpackId)で指定されます。ジョブはjobIdで指定されます。
最小限の認証付きコール:
TOKEN="sg-agent-..."
curl -s http://127.0.0.1:48199/status -H "Authorization: Bearer $TOKEN"ヘルス チェック
GET /health
生存確認プローブ。認証は不要です。
{ "ok": true, "name": "simpligen", "version": 1 }機能
GET /capabilities
生成可能なすべてのプリセットをリストします。(preset, mediaType) ごとに 1 つのエントリ。入力、オプション、ローカル準備完了状態、クラウド対応性、コストが含まれます。
{
"capabilities": [
{
"packId": "local-core-pack",
"presetId": "z-image-turbo",
"mediaType": "image",
"name": "Z-Image Turbo",
"description": "Ultra-fast, high-quality images in seconds",
"apiProvider": null,
"inputs": {
"acceptsPrompt": true,
"requiresPrompt": true,
"requiresImage": false,
"acceptsReferenceImages": null,
"acceptsVideo": false,
"acceptsAudio": false,
"acceptsReferenceVideos": false,
"acceptsReferenceAudios": false,
"supportsLoras": true
},
"options": {
"steps": null,
"cfg": null,
"duration": null,
"resolution": null,
"aspectRatio": ["1:1", "3:4", "4:3", "9:16", "16:9"]
},
"cloudAliasTo": null,
"localReady": true,
"cloudEligible": true,
"cloudCost": 4
}
]
}| フィールド | 意味 |
|---|---|
localReady | すべてのモデル ファイルがインストールされています。プリセットは現在ローカルで実行できます。 |
cloudEligible | プリセットは SimpliGen Cloud で実行できます。 |
cloudCost | クラウド実行の概算クレジット コスト(対応していない場合は null)。 |
apiProvider | 外部 API プリセット(OpenAI、Google など)の場合は null 以外です。Control API は配信できません。 |
inputs / options | プリセットが受け入れるもの、および POST /generate に渡すことができるオプション範囲/アスペクト比。steps/cfg は、高度な制御を公開するプリセットでのみ null 以外です。 |
promptFamily | このプリセットのプロンプト ガイド ファミリー(例:z-image)、またはない場合は null。GET /prompt-guide/:presetId がガイドを返します。 |
inputs.requiresPrompt | 組み込み命令のプリセット(トリミング、顔のスワップ、アップスケール)の場合は false。空の prompt は有効で、送信したテキストは追加のメモとして追加されます。 |
ステータス
GET /status
{
"engineRunning": true,
"engineVersion": "v0.26.0",
"cloudConnected": true,
"creditBalance": 1280,
"activeProject": { "id": "default", "name": "My Project" },
"characters": { "enabled": true, "base": 1, "edit": 1, "i2v": 1, "enhancePresets": 2 }
}POST /engine/start
ローカル エンジンが実行されていない場合は開始します。ボディは不要です。
{ "engineRunning": true, "engineVersion": "v0.37.0", "engineStarting": false }コールド ブートはリクエストの待機時間より長くかかります。その場合、レスポンスは 202 で engineStarting: true が返されます。エンジンは起動し続けるため、engineRunning が true になるまで GET /status をポーリングします。
既に実行されているエンジンの開始は 200 で alreadyRunning: true が返され、何も変わりません。エンジンがインストールされていない場合、レスポンスは 409 engine_not_installed です。これは数ギガバイトのダウンロードで、アプリのジョブのままです。エンジンの実行を拒否するマシンは 409 engine_unsupported_hardware と答え、再試行では修正されません。
POST /engine/stop
ローカル エンジンを停止し、VRAM を解放します。クラウド生成は影響を受けません。既に停止しているエンジンの停止は成功です。
POST /engine/restart
停止して再開します。ウェッジしたエンジン、またはカスタム ノードがインストール/削除された後に使用します。開始と同じ 202 の動作。
プロジェクト
プロジェクトは生成を保持するコンテナです。
GET /projects
{ "projects": [ { "id": "default", "name": "My Project", "slug": "my-project" } ] }POST /projects
{ "name": "Campaign assets" }201 を返します({ "project": { ... } })。name は必須です(ない場合は 400 invalid_options)。
アップロード
入力(ソース画像、参照画像、ソース動画)はローカル パスとして渡されません。最初にバイトをアップロードして、返された ハンドル を POST /generate に渡します。
POST /uploads
{ "filename": "ref.png", "dataBase64": "<base64 of the file bytes>" }{ "handle": "a1b2c3d4.png", "sizeBytes": 51234 }最大アップロードは 100 MB です(413 asset_too_large)。サポートされていない拡張子は 400 unsupported_file_type を返します。
生成
POST /generate
生成をエンキューし、jobId で直ちに返します。GET /jobs/:id(ジョブ参照)をポーリングして結果を取得します。
{
"presetId": "z-image-turbo",
"packId": "local-core-pack",
"mediaType": "image",
"prompt": "a red fox in the snow, cinematic",
"backend": "auto",
"project": "default",
"image": "a1b2c3d4.png",
"referenceImages": [{ "handle": "e5f6.png", "label": "style" }],
"loras": [
{ "name": "RoomLora", "weight": 0.85 },
{ "name": "Mia", "weight": 0.75 }
],
"options": { "aspectRatio": "16:9", "steps": 8, "negativePrompt": "blurry, watermark" }
}| フィールド | 必須 | 注記 |
|---|---|---|
presetId | はい | GET /capabilities から。 |
mediaType | はい | "image" または "video"。 |
packId | いいえ | 指定する場合、プリセットのパックと一致する必要があります。 |
prompt | 条件付き | プリセットが inputs.requiresPrompt: false を報告しない限り必須。これらのプリセットには組み込み命令があります。"" を送信して実行するか、テキストを追加して追加のメモを渡します。 |
backend | いいえ | "auto"(デフォルト)、"local"、または "cloud"。Auto は、インストールされていればローカルを優先し、それ以外はクラウドが接続されていれば選択します。 |
image | 条件付き | アップロード ハンドル。画像から X のプリセット(inputs.requiresImage)に必須。 |
video | 条件付き | アップロード ハンドル。ビデオ入力プリセット用。 |
referenceImages | 条件付き | ハンドルまたは { handle, label } の配列。参照画像プリセット用。 |
audio | 条件付き | アップロード ハンドル。オーディオ駆動プリセット(リップシンク、オーディオからビデオ)用。プリセットが acceptsAudio を報告する場合は必須。それ以外は needs_audio でジョブが拒否されます。 |
audioStartSeconds | いいえ | トラックの開始位置(秒単位)。options の下でも受け入れられます。 |
referenceVideos | 条件付き | ハンドル、または { handle, soundtrackMode, durationSeconds } の配列。参照クリップ プリセット用。 |
referenceAudios | 条件付き | ハンドル、または { handle, durationSeconds } の配列。参照音声プリセット用。 |
loras | いいえ | inputs.supportsLoras が true のプリセット用に適用する { name, weight } の配列。name は GET /loras の LoRA の表示名(またはファイル名)と一致します。weight はデフォルトで LoRA のデフォルト強度。不明な名前は 400 unknown_lora を返します。現在、ローカル バックエンドのみ。 |
project | いいえ | プロジェクト id または slug。デフォルトはアクティブなプロジェクト。 |
options.aspectRatio | いいえ | プリセットでサポートされるいずれかの比率である必要があります。 |
options.steps / options.cfg | いいえ | プリセットがアドバタイズする範囲内。 |
options.negativePrompt | いいえ | 追加の負の項(UI の詳細オプション負)。トップレベルの negativePrompt としても受け入れられます。加算的:プリセットのデフォルト負は常に適用され、用語はその後に追加されます(, )。何も送信しないと、プリセット デフォルト負を使用します。SimpliGen Cloud の実行では、追加の項は送信されず、プリセットのデフォルト負が使用されます。 |
options.durationSeconds | いいえ | ビデオの長さ。 |
options.resolution | いいえ | 解像度レベル ラベル。 |
{ "jobId": "gen_abc123", "backend": "local", "status": "queued" }クラウド ジョブの場合、レスポンスには "cloudCost": <credits> も含まれます。
バックエンド
外部 API プリセット(apiProvider が null 以外の場合、例:GPT Image 2、Veo)はここで配信できません。400 unsupported_backend を返します。ローカルまたは SimpliGen Cloud プリセットを使用してください。Cloud には接続されたアカウントが必要です(400 cloud_not_connected)。ローカルにはインストールされたモデルが必要です(400 preset_not_installed、最初に準備します)。
GET /loras
ユーザーがインストールした LoRA をリストします。エージェントが POST /generate の loras 配列で渡す内容を発見できるようにします。name(表示名)で一致させます。
{
"loras": [
{ "name": "RoomLora", "filename": "RoomLora_000002400.safetensors", "baseModel": "flux", "triggerWords": "a room", "defaultStrength": 0.9 },
{ "name": "Mia", "filename": "mia_v2.safetensors", "baseModel": "flux", "triggerWords": "mia", "defaultStrength": 1.0 }
]
}LoRA がプリセットのベース モデル(baseModel)に適合する場所に渡し、プロンプトで独自のトリガー単語を使用してアクティベートします。
プロンプト ガイド
GET /prompt-guide/:presetId
プリセットのプロンプト ガイドを返します。モデルがプロンプトを読む方法、構造と長さ、カメラと動きの表現、負、文字の表現方法、および実例を説明します。POST /generate の prompt を書く前に読んでください。ガイドは SimpliGen によって提供され、キャッシュされるため、オフラインでも最後にコピーされた各ガイドから機能します。
{
"presetId": "z-image-turbo",
"family": "z-image",
"familyName": "Z-Image",
"version": 1,
"generic": false,
"text": "# Z-Image prompting guide ...\n\n## Negative prompts in SimpliGen\n...\n\n## Notes for this preset\n\n..."
}| フィールド | 意味 |
|---|---|
family / familyName | プリセットが解決するガイド ファミリーとその表示名(GET /capabilities の promptFamily を参照)。 |
version | このファミリーのガイドのバージョン。 |
generic | このプリセット用のモデル固有のガイドが存在しない場合 true。text はそう明記し、一般的なアドバイスのみを提供します。 |
text | Markdown のファミリー ガイド。すべてのガイドが共有する ## Negative prompts in SimpliGen セクションが続きます。プリセットに独自のメモがある場合は、## Notes for this preset セクションが追加されます。 |
| HTTP | errorCode | タイミング |
|---|---|---|
| 404 | unknown_preset | その ID のプリセットはありません。 |
| 503 | guides_unavailable | ガイドを読み込めず、キャッシュされたコピーがありません。「プロンプト ガイドを読み込めません。インターネット接続を確認してもう一度お試しください。」 |
ジョブ
GET /jobs/:id
{
"job": {
"jobId": "gen_abc123",
"status": "completed",
"backend": "local",
"mediaType": "image",
"presetId": "z-image-turbo",
"projectId": "default",
"resultUrl": "local-file:///C:/Users/you/.../output.png",
"resultPath": "C:/Users/you/.../output.png",
"errorMessage": null,
"createdAt": "2026-06-25T20:00:00.000Z",
"completedAt": "2026-06-25T20:00:08.000Z"
}
}status は queued、processing、completed、failed のいずれか。成功時は、resultPath はデコードされたローカル ファイル パス。失敗時は、errorMessage が理由を説明します。不明な ID は 404 job_not_found を返します。
GET /jobs
最新 25 個のジョブを { "jobs": [ ...job... ] } として返します。
POST /jobs/:id/cancel
キューに入っているまたは実行中のジョブをキャンセルします。{ "jobId", "status", "note?" } を返します。既に進行中のクラウド ジョブはサーバーで完了する可能性があります(note に記載)。
プリセット準備
ローカル プリセットは初回使用時にモデル ファイルをダウンロードします。事前に準備できます。
POST /presets/prepare
{ "presetId": "z-image-turbo", "mediaType": "image" }200 { "status": "already_installed" } または 202 { "status": "started" }(ダウンロードはバックグラウンドで実行)を返します。
GET /presets/prepare
進行中のダウンロードを返します:{ "downloads": [ ... ] }。これ、または GET /capabilities(localReady を監視)をポーリングします。プリセットが準備完了になるまで。
キャラクター
Character Studio もスクリプト可能です。キャラクターは ローカルのみ です(クラウドは拒否されます)。キャラクターの概念を参照してください。
| エンドポイント | 目的 |
|---|---|
GET /characters | キャラクターをリストします。 |
GET /characters/:id | 1 つのキャラクターを取得します。 |
GET /character-presets | インストール済みキャラクター プリセット(ベース/編集/i2v)。 |
GET /character-features | 利用可能なアイデンティティ/外観機能オプション。 |
POST /characters | キャラクターを作成します(説明から mode: "generate"、またはアップロードされたベース イメージ ハンドルから "upload")。 |
POST /characters/:id/generate-image | キャラクターのイメージを生成します({ prompt, aspect?, count?, presetId? })。 |
POST /characters/:id/generate-frame | ビデオ開始フレームを 1 つ生成します。 |
POST /characters/:id/animate | キャラクターをビデオにアニメーション化します。 |
POST /characters/:id/preset | キャラクターのデフォルト プリセットを設定します。 |
POST /characters/:id/enhance | キャラクター アセットをアップスケールまたは強化します。target: "base"、jobId(前の生成)、または handle(POST /uploads から)のいずれかで正確に 1 つでソースに名前を付けます。オプション:mediaType、presetId、scale、keepResolution、applyAsBase。 |
すべての生成エンドポイントは、POST /generate と全く同じように GET /jobs/:id 経由でポーリングする jobId を返します。
レシピ
パックとプリセットから多段階レシピ(フロー)を作成します。構成要素を発見し、高レベル仕様から構成し、必要に応じて公開します。
| エンドポイント | 目的 |
|---|---|
GET /recipe-blocks | エントリ ポイント + 段階として使用可能なすべてのプリセット(ポート コントラクト付き)。 |
POST /recipes/validate | spec(構成検証)または config をドライラン、保存しません。validation を返します。 |
POST /recipes | spec から構成して草稿を保存します。{ recipeId, valid, errors, config } を返します。 |
GET /recipes | このデバイス上のすべてのレシピ(ストアからインストール済みまたはここで作成済み)を、その inputs(キー、種類、ラベル、必須、オプション)とステップ数でリストします。 |
GET /recipes/:id | 1 つのレシピ、その完全なコンフィグ、その inputs、および readiness を取得します(各ステップ:実行するプリセットと、ローカルにインストールされているかどうか)。 |
POST /recipes/:id/run | レシピを実行します。ボディ:{ inputs: { key: value }, engine?: "local" | "cloud" | "auto" }。サブジェクト入力はキャラクターまたは製品 ID を取得、画像/動画/オーディオ入力はアップロード ハンドルを取得、その他はすべてプレーン値を取得します。{ runId, status: "running", engine, steps, cloudCost? } を返します。クラウド実行は事前に価格設定され、トークンの使用限度額に対してカウントされます。 |
GET /recipes/:id/runs | レシピの最近の実行。最新のものから順。 |
GET /recipe-runs/:id | 実行のステータス:status(実行中、完了、失敗、キャンセル)、steps(各ステップのステータス、ジョブ ID、結果パス)、および最後のメディア ステップ完了後の resultPath。 |
POST /recipe-runs/:id/cancel | 実行を停止します。以降のステップは開始されません。ローカルの進行中ステップは中断されます。 |
POST /recipes/:id/publish | Creator Marketplace に提出します(接続されたアカウントが必要)。 |
製品とサブジェクト
レシピの subject 入力はキャラクターまたは製品のいずれかです。製品は他のサブジェクト タイプです。ベース写真を持つ名前付きのもの。Product Studio と UGC レシピで使用されます。
| エンドポイント | 目的 |
|---|---|
GET /subjects | レシピが取得できるすべてのサブジェクト:キャラクターと製品(id、type、name、status)。 |
GET /products | 製品をリストします。 |
GET /products/:id | 1 つの製品を取得します。 |
POST /products | アップロードされた写真から製品を作成します:{ name, image: <upload handle>, description?, category? }。説明とカテゴリーはレシピ プロンプトに組み込まれます。{ productId, product } を返します。 |
DELETE /products/:id | 製品とその写真を削除します。 |
spec は高レベルの説明です。アプリはポートを自動接続し、ステップ間のメディア チェーンと各ステップのプロンプト入力を行い、検証します。
{
"spec": {
"name": "Product to spinning video",
"category": "product",
"steps": [
{ "preset": "krea2-pack:krea2-turbo" },
{ "preset": "wan-2.2-video-pack:wan-2.2-i2v" }
]
}
}{
"recipeId": "b1f2…",
"valid": true,
"errors": [],
"config": { "blocks": [ "…" ], "inputs": [ "…" ], "output": { "from": "n2.video" } }
}構成と保存にはクリエイター アカウントは不要です。POST /recipes/:id/publish には接続されたアカウントが必要で、ユーザーがアプリで接続するまで not_connected(needsConnect: true)を返します。その後、同じ草稿が変更されずに公開されます。レシピが使用するすべてのプリセットは、配布可能なファーストパーティ パックに属する必要があります。
Video Studio
フィルムは Video Studio ドキュメント:オーディオ トラックの上のタイムライン上のクリップ(レンダリングするショット)。すべての編集ルートは { change, timeline } を返します。変更内容とフィルムのタイムライン(GET /films/:id が返すのと同じ形)です。スタジオで開いたフィルムはライブに変更を表示し、Ctrl+Z でアンドゥします。閉じたフィルムは編集して保存されます。
クリップは ID、名前、またはコンテンツ上でのコンテンツの順序(最初のものから)で、パス内で名前が付けられます。時間は秒、またはフィルムがテンポを持つと棒:位置は 3、{ "seconds": 3 } または { "bar": 5 }(バー 1 は最初のダウンビート)、長さは 5、{ "seconds": 5 } または { "bars": 2 }。
| ルート | 何をするか |
|---|---|
GET /films?projectId= | プロジェクトのフィルム(デフォルト:現在のもの)。 |
POST /films | フィルムを作成:name、オプション projectId、aspect(16:9、9:16、1:1)、quality(480p、720p、1080p)、renderOn(local、cloud)、presets({ t2v, i2v, r2v })。タイムラインを返します。 |
GET /films/:id | タイムライン。 |
PATCH /films/:id | フィルム設定:aspect、quality、hires2x、renderOn、presets、subject、cast(名前または ID)、location(名前、ID、または null)。 |
POST /films/:id/tracks | トラックを追加:upload(POST /uploads のハンドル)、kind(singing、music、dialogue、effects)、name、at。 |
PATCH /films/:id/tracks/:track | at、muted、volume(0 から 1)。 |
POST /films/:id/tempo | 最長のミュートされていないトラック、または track からテンポを検出します。{ bpm, offset, track, timeline } を返します。 |
POST /films/:id/clips | クリップを追加:at、length、name、lane。 |
PATCH /films/:id/clips/:clip | shots(各 { prompt, seconds, line, speaker, framing })、cast、location("none" はフィルムを削除、"film" は再度継承)、link(fresh、continue、motion。none と frame も受け入れられます。fresh と continue として)、hears([{ track, on }])、preset。 |
POST /films/:id/clips/:clip/move | at、lane。 |
POST /films/:id/clips/:clip/trim | length、trimIn(クリップがテイク内で開始する場所。0 はテイクの開始)。 |
DELETE /films/:id/clips/:clip | クリップを削除します。 |
POST /films/:id/plan | 草稿をレイアウト(以下参照)。 |
POST /films/:id/fades | target(クリップまたはトラック)、fadeIn、fadeOut。 |
POST /films/:id/markers | at、name。 |
POST /films/:id/export-range | from と to(両方必要)、または clear: true。 |
POST /films/:id/renders | clips("stale"(デフォルト)またはリスト)をレンダリングします。直ちに 202 で { started, held, credits }、または何もレンダリングが不要な場合は 200 で note を返します。 |
GET /films/:id/clips/:clip/takes | クリップのテイク。最新のものから最初に。 |
POST /films/:id/clips/:clip/take | generationId:そのテイクをクリップが表示する方法にします。 |
POST /films/:id/export | フィルムを継ぎます。201 で { path, resultUrl, blanks } を返します。 |
草稿をレイアウト
POST /films/:id/plan
{
"mode": "append",
"cast": ["Kai", "Mira"],
"location": "Rooftop",
"clips": [
{ "bars": 2, "shots": [{ "prompt": "@Kai looks over the city", "framing": "wide" }] },
{ "bars": 2, "link": "continue",
"shots": [{ "prompt": "@Kai sings to camera", "line": "Neon rain", "speaker": "Kai", "framing": "close-up" }] },
{ "bars": 3, "location": "Neon Street", "cast": ["Mira"],
"shots": [{ "prompt": "@Mira walks through the rain", "seconds": 4 }, { "prompt": "she turns", "seconds": 3 }] }
]
}プランはまず全体がチェックされます。問題のあるプランは 400 invalid_plan で details.problems のすべての問題とともに返します(各プランはクリップ付き、例えば clip 2: ...)。変更は何もしません。mode: "replace" はすべてのクリップを置き換え、クリップにテイクがある場合は拒否されます("discardTakes": true を使用しない限り)。
レンダリングと使用限度額
クラウド レンダリングは事前に価格設定され、使用限度額に対してカウントされます。限度額を超えると 402 exceeds_spend_cap を返します。価格不明な場合 503 cost_unknown。前のクリップから継続するクリップは 1 つずつレンダリングされ、それが開始するテイク後に各々。呼び出しは直ちに返されます。GET /films/:id は各クリップの take を表示します:none、rendering、current、edited、longer、unknown(まだわかりません)または imported(持ち込まれたビデオ、レンダリングしません)。
ロケーション
| ルート | 何をするか |
|---|---|
GET /locations | ライブラリのロケーション:id、name、description、hasPicture。 |
POST /locations | その画像からロケーションを作成:name、description、および upload(ハンドル)または fromJob(完了した画像ジョブ)。 |
使用限度額
トークンに使用限度額がある場合、クラウド生成は配送前に価格設定され、残りの余裕を超える場合は拒否されます(402 exceeds_spend_cap)。コストを決定できない場合(クラウド ステータス利用不可)、制限付きトークンは 503 cost_unknown で閉じます。ローカル生成は常にクレジット コストから解放されます。
完全なフロー
BASE=http://127.0.0.1:48199
AUTH="Authorization: Bearer sg-agent-..."
# 1. Pick a ready preset
curl -s $BASE/capabilities -H "$AUTH"
# 2. Generate
JOB=$(curl -s $BASE/generate -H "$AUTH" -H 'Content-Type: application/json' \
-d '{"presetId":"z-image-turbo","mediaType":"image","prompt":"a red fox in the snow","options":{"aspectRatio":"16:9"}}' \
| jq -r .jobId)
# 3. Poll until done, then read resultPath
curl -s $BASE/jobs/$JOB -H "$AUTH" | jq '.job | {status, resultPath, errorMessage}'エラー コード
| HTTP | errorCode | タイミング |
|---|---|---|
| 400 | invalid_json | ボディは有効な JSON ではありません。 |
| 400 | invalid_options | 必須フィールドが見つからないか、形式が悪い。 |
| 400 | invalid_preset | プリセット/パック/mediaType の不一致。 |
| 400 | needs_* | 必須入力(プロンプト、画像、参照)が見つかりません。 |
| 400 | invalid_handle | 入力が有効なアップロード ハンドルではありません。 |
| 400 | unsupported_backend | プリセットは外部 API で実行されます。 |
| 400 | preset_not_installed | ローカル バックエンドを選択しましたが、モデルがインストールされていません。 |
| 400 | cloud_not_connected | クラウド バックエンドを選択しましたが、アカウントが接続されていません。 |
| 400 | invalid_plan | フィルム プランに問題があります。details.problems はそれらすべてを一覧表示します。 |
| 400 | no_tempo | フィルムがテンポを持つ前に、時間がバーで指定されました。まずテンポを検出してください。 |
| 400 | no_audio | オーディオ トラックなしでフィルムからテンポが要求されました。 |
| 400 | no_pulse | トラックで一定の拍が聞こえませんでした。 |
| 401 | unauthorized | トークンが見つからないか無効です。 |
| 402 | exceeds_spend_cap | クラウド コストがトークンの使用限度額を超えています。 |
| 402 | exceeds_balance | クラウド残高がレンダリングをカバーしていません。 |
| 403 | forbidden_host | ループバック以外の Host ヘッダー。 |
| 403 | studio_not_installed | Video Studio はこのコンピューターにインストールされていません。 |
| 404 | not_found / invalid_preset / job_not_found | 不明なルート、プリセット、またはジョブ。 |
| 404 | unknown_preset | プリセットでない ID での GET /prompt-guide/:presetId。 |
| 404 | film_not_found | その ID のフィルムはありません。 |
| 404 | clip_not_found | その ID、名前、または番号のクリップはありません。 |
| 404 | track_not_found | その名前または ID のトラックはありません。 |
| 404 | cast_not_found | ライブラリにその名前または ID のキャラクターはありません。 |
| 404 | location_not_found | その名前または ID のロケーション、またはまだ写真がありません。 |
| 409 | clips_not_ready | エクスポートが要求されているとき、クリップはまだレンダリングが必要です。details.clips は名前を付けます。 |
| 413 | asset_too_large | 100 MB を超えるアップロード。 |
| 503 | guides_unavailable | プロンプト ガイドを読み込めず、キャッシュされたものもありません。 |
| 503 | cost_unknown | 制限付きトークン。クラウド コストを決定できませんでした。 |
| 503 | studio_busy | SimpliGen ウィンドウに到達できなかった、または応答しませんでした。タイムアウトした場合は、変更がまだ行われている可能性があります。もう一度実行する前にフィルムを読んでください。 |
| 500 | internal_error | 予期しないサーバー エラー。 |