Grok Imagine 2.0 Ext
Grok Imagine 2.0 Ext レイヤー・範囲編集
segment でオブジェクトレイヤーと高精度マスクを取得し、region_edit でポリゴン、矩形、検出オブジェクトを編集します。
POST
segment と region_edit は既存の非同期画像エンドポイントを使用します。返された task_id を保存し、タスクステータスを取得 をポーリングしてください。作成リクエストは最終レイヤーや画像を直接返しません。操作の概要
source_task_id と image_id は交換できません。segment は元タスク ID、region_edit は画像アセット ID を使用します。編集後の画像を再分割する場合は、完了した region_edit のタスク ID を次の source_task_id にします。リクエストヘッダー
Authorization: Bearer <APIMART_API_KEY>、Content-Type: application/json、Accept: application/json を使用します。
Idempotency-Key は任意ですが、有料の region_edit では強く推奨します。1~191 文字の可視 ASCII を使用でき、UUID を推奨します。新しい論理操作ごとに新しい Key を使い、同じリクエストのネットワーク再試行では元の Key と同一の body を再利用してください。結果が不確定な場合、新しい Key で自動再送しないでください。
非同期タスクフロー
作成成功時は HTTP200 と data[0].task_id が返ります。GET /v1/tasks/{task_id}?language=ja を 2 秒間隔から最大 5 秒までバックオフし、全体を 10 分で打ち切ります。元画像の切り替え時は古いポーリングを停止します。
segment
リクエストパラメータ
segment に prompt は不要です。image_id、image_index、billing_model_name、n、size、response_format を送信しないでください。cache_only=true と refresh=true は同時に使えません。
リクエスト例
- レイヤーを取得
- キャッシュ確認
cache_status または from_cache を使用し、cached から命中を推測しないでください。
完了レスポンス
segment の data.result は分割結果そのものであり、images には包まれません。
有効な
mask_rle または mask_url がないオブジェクトは、矩形近似編集のみ使用できます。
mask_rle のデコード
mask_rle.counts は COCO 圧縮カウント文字列で、Base64 や zlib ではありません。列優先で展開され、最初が背景、その後は前景と背景が交互になります。
次の TypeScript でブラウザ向けの行優先バイナリマスクへ変換できます。
mask_rle.counts をログ、分析、URL、エラー報告へ送らないでください。
マスクを高精度選択範囲へ変換
0–1 に正規化します。各リングは 3 個以上の異なる点、非ゼロ面積、自己交差なしが必要です。1 レイヤー最大 16 領域、1 リング最大 400 点にします。
元画像や mask_url のピクセル読取には CORS が必要です。src より先に crossOrigin = "anonymous" を設定するか Blob を取得します。mask_rle の直接デコードなら不要です。
範囲編集:region_edit
リクエストパラメータ
selection_regions、boxes、object_indices の少なくとも 1 つを空でない値にします。API は併用可能ですが、フロントエンドでは 1 リクエスト 1 方式を推奨します。
選択方式
- 高精度ポリゴン
- 正規化ボックス
- ピクセルボックス
- オブジェクトインデックス
points は平坦配列または座標ペアで指定できます。全値は有限な 0–1 で、各リングに 3 ペア以上必要です。完了レスポンス
result.images[0].items[0] を優先します。旧応答は配列長が一致するときだけ url[0] と image_ids[0] を対応付けます。HTTP(S) URL と新しい image_id の両方を得てから続行してください。
URL 期限は expires_at を基準にし、固定時間を実装しないでください。長期利用するアセットは保存します。
連続編集
編集完了後、表示 URL、現在のアセット ID、元タスク ID を同時に更新し、古いレイヤーとポーリング状態を消去します。- 再分割:今回の
region_editタスク ID をsource_task_idに使用 - 再編集:新しく返された
image_idを使用 image_idをsegmentに渡さず、以前の画像 ID の編集も続けないでください。
エラー処理
課金
segmentは無料でcost=0、credits_cost=0ですが、認証と有効な元タスクが必要です。region_editは有料です。完了タスクのcostとcredits_costを使い、価格をフロントエンドへ固定しないでください。- 内部フィールド
billing_model_nameは送信しません。
フロントエンド確認事項
- API Key はバックエンドまたは BFF のみに保存する。
segmentにはsource_task_idだけを送り、image_idとimage_indexは送らない。region_editには segment のimage_idと少なくとも 1 つの選択方式を使う。- 高精度編集には
selection_regionsを使い、object_indicesは矩形近似とする。 mask_sizeは常に[height,width]として表示倍率と余白を補正する。- 同じネットワーク再試行では元の冪等 Key を再利用し、URL と新しい
image_idの両方を検証する。