01
経路は三つ、失敗の仕方も三通りです
宣言済みの画像フィールドは、公開 HTTPS URL、コミット済みの spicy:// ファイル URI、インライン data URI を受け取ります。インラインは一枚あたりデコード後 1 MiB・8,388,608 ピクセル、本文全体で 2 MiB までです。それを超えるならアップロードチケットを使います。
編集 API ソリューション
編集エンドポイントは少なくとも二つの入力を取ります。画像と指示です。その画像を届ける手段(公開 URL、コミット済みアップロード、インライン data URI)でつまずく実装がほとんどです。

解決する課題
プロンプトは簡単なほうです。もう一方は利用者の端末にあるファイルで、非公開バケットを露出させずにモデルへ届き、タスク成立前に検査される上限に収まる必要があります。
01
宣言済みの画像フィールドは、公開 HTTPS URL、コミット済みの spicy:// ファイル URI、インライン data URI を受け取ります。インラインは一枚あたりデコード後 1 MiB・8,388,608 ピクセル、本文全体で 2 MiB までです。それを超えるならアップロードチケットを使います。
02
署名付きリンクで Cookie や別途ログインなしに取得できれば、非公開バケットの画像も参照できます。処理中は有効にしてください。プライベート IP、ループバック、user:password 形式の認証情報は拒否されます。
03
公開呼び出し名は /edit で終わり、スキーマは通常 image_url または image_urls を必須にし、mask_url や strength を加えるものもあります。text-to-image の model 値を編集フローに入れると、緩やかに劣化せず検証で失敗します。
実装方針
利用者のファイルはアップロードチケットを取得し、宣言したバイト数ちょうどを返却ヘッダーごと PUT し、コミットしてから、返ってきた spicy:// URI をモデルの画像フィールドに渡します。以後その参照はアカウントに属し、検査は一度で済み、再アップロードなしに複数タスクで使えます。
チケット、PUT、コミット、作成。すでに公開されているメディアは最初の三手を飛ばせます。
Ticket → PUT → commit → create
POST /api/v1/common/upload-url
{ "contentType": "image/png", "bytes": 482113 }
→ { "fileId": "fil_01k3…", "uploadUrl": "https://…", "method": "PUT", "headers": { … } }
PUT <uploadUrl> # exactly 482113 bytes, every returned header replayed
POST /api/v1/files/fil_01k3…/commit
→ { "status": "ready", "uri": "spicy://f/fil_01k3…", "sha256": "…" }POST /api/v1/jobs/createTask
{
"model": "<publisher>/<model>/edit",
"input": {
"prompt": "Replace the background with an overcast beach at dusk",
"image_urls": ["spicy://f/fil_01k3m8x9q2z4v7n5p6r8s0t1w3"]
}
}契約
| フィールド / ヘッダー | 値・上限 |
|---|---|
| POST /api/v1/common/upload-url | JPEG · PNG · WebP · GIF ≤ 10 MiB |
| POST /api/v1/files/{fileId}/commit | returns spicy://f/fil_… |
| inline data URI | ≤ 1 MiB decoded · ≤ 8192 px per side |
| request body | ≤ 2 MiB · ≤ 16 images |
横にスワイプして全項目を確認できます。
導入
向き不向き
裏付け
コミットは保存されたバイト数とメディアタイプをチケットと突き合わせ、画像シグネチャを検証し、SHA-256 を計算します。それを通って初めて参照可能になります。
data URI はアカウント紐付けのファイルとして保存されます。recordInfo が返す正規化済み入力に入るのはファイル URI で、元の Base64 バイトではありません。
アップロードした素材は 1 日、生成結果は 14 日保持されます。どちらも公開値で、アカウントごとの交渉事項ではありません。
公開前に
よくある質問
モデル
各リンクはそのモデルシリーズのページに移動します。入力、上限、コンテンツ方針、単位あたりの現在価格をそこで確認できます。