使用ガイド
Grok Imagine Quality の画像から画像生成をEC商品画像に活用
hiapi API の grok-imagine-quality/image-to-image を使って、1枚のスタジオ写真を完全な商品カタログに変換する
新しい掲載アングル、季節ごとのバナー、マーケットプレイスのテンプレートごとに商品を撮り直すのは、時間もコストもかかります。grok-imagine-quality/image-to-image は、より狭いながらも実用的な問題を解決します。きれいな参照写真とテキストプロンプトを渡すと、その商品そのもの——同じ形状、同じ色、同じ比率——を新しいシーンに配置します。1枚のスタジオ写真が、2度目の実撮影なしでライフスタイル写真、フラットレイ写真、使用中の写真に変わります。
このガイドでは、hiapi API 上の実際のECワークフローをたどります。ベースとなる商品写真を生成し、grok-imagine-quality/image-to-image で3回のシーン変換を実行し、同じパターンを商品カタログ全体にバッチ適用します——実行可能なコードと現在の料金付きで。
前提条件:
- ダッシュボードから hiapi API キーを取得する
- Python 3.9+ と
requests(または直接curl) - ベースの商品画像が公開 URL でホストされていること——タスク API はアップロードではなく URL 経由で
image_urlsを取得します
なぜ2度目の撮影ではなく画像から画像生成なのか
テキストから画像生成のモデルは、見栄えのするコーヒードリッパーを生成できますが、あなたのコーヒードリッパー——顧客がすでに商品画像から認識している正確な輪郭、釉薬の色、注ぎ口の角度——を生成することはできません。grok-imagine-quality/image-to-image はその正確な物体を参照として扱い、新しい環境に再レンダリングします。これが「1枚の商品写真」と「私たちの商品の写真」の違いです。
これにより、ECの反復的なニーズに適しています。SKUごとに1枚のメイン画像、そしてN個のバリエーション(ライフスタイルシーン、フラットレイ、使用中、季節の背景)を商品ギャラリー、広告、マーケットプレイスの掲載用に——そのたびに撮影スタジオを予約する必要はありません。
ワークフロー:ベース写真1枚、シーン編集3回
ここでのベース写真は gpt-image-2/text-to-image で生成されています(1Kで1枚あたり$0.03)——清潔で十分な明るさの商品写真であれば、すでにお持ちの実写真も含めて参照として使用できます:

この単一の画像 URL が、3回の grok-imagine-quality/image-to-image 呼び出しで繰り返し使用され、それぞれ1つのターゲットシーンに対応します:



3つの結果すべてで、ドリッパーの比率、釉薬の色、ハンドルの形状はまったく同じまま——周囲のシーンだけが変わります。この一貫性こそが、シーンごとに独立した t2i 生成ではなくここで i2i を使用する最大の価値であり、前者では見た目の異なる3つの商品が得られてしまいます。
リクエスト構造と料金
grok-imagine-quality/image-to-image は小さく厳格な入力スキーマを受け付けます——strength やシードのような余分なフィールドは拒否されます:
| フィールド | 必須 | 説明 |
|---|---|---|
prompt |
はい | 新しいシーンを記述する;参照画像の形状/色/比率を保つようモデルに明示的に指示する |
image_urls |
はい | 1〜3個の公開 URL。複数の参照画像を使用する場合、出力フレームは最初の URL に従う |
resolution |
いいえ | 1k または 2k(小文字) |
aspect_ratio |
いいえ | auto(デフォルト、入力フレームに従う)または 16:9、1:1、9:16 などの固定比率 |
2026-08時点の料金(hiapi の料金ページで確認済み):grok-imagine-quality/image-to-image は 1Kで1枚あたり$0.09、2Kで1枚あたり$0.11。gpt-image-2/text-to-image のベーススタジオ写真は1Kで$0.03。上記のような4枚の画像セット——ベース写真1枚とシーン編集3回——の総コストは $0.30 です。
コード:タスクの送信とポーリング
hiapi 上のすべての生成は同じ非同期タスクのライフサイクルに従います——送信し、status が success になるまで GET /v1/tasks/{id} をポーリングし、その後すぐに output[0].url をダウンロードします(URL は期限切れになります)。完全な契約は非同期タスク API リファレンスを参照してください。以下は i2i 呼び出しの具体的な例です:
import requests
import time
API_BASE = "https://api.hiapi.ai/v1/tasks"
HEADERS = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}
def edit_product_scene(base_image_url: str, prompt: str) -> str:
payload = {
"model": "grok-imagine-quality/image-to-image",
"input": {
"prompt": prompt,
"image_urls": [base_image_url],
"resolution": "1k",
},
}
resp = requests.post(API_BASE, headers=HEADERS, json=payload, timeout=60)
task_id = resp.json()["data"]["taskId"]
while True:
task = requests.get(f"{API_BASE}/{task_id}", headers=HEADERS, timeout=30).json()["data"]
if task["status"] == "success":
return task["output"][0]["url"]
if task["status"] == "fail":
raise RuntimeError(task.get("error"))
time.sleep(5)
一貫性は実際にはプロンプトから生まれます——strength や参照ウェイトのパラメーターは存在しないため、言い回しがその役割を担う必要があります:
Place this ceramic pour-over coffee dripper on a rustic wooden kitchen
countertop, warm morning sunlight streaming in from the left, a few
coffee beans scattered near the base, shallow depth of field, lifestyle
e-commerce photography, keep the dripper's shape, color and proportions
identical to the reference
その末尾の節——「keep the shape, color and proportions identical to the reference」(形状、色、比率を参照画像と同一に保つ)——はテストで測定可能な差を生みました。これを外すと、モデルは参照画像をより緩く扱い、比率を描き直し、やや汎用的なディテールを混ぜ込みます。
1つ注意点があります。正確なポーズ制御は期待しないでください。シーン置換時に「同じアングル」を要求しても厳密には守られません——物体の向きは新しいシーンに合うよう自然に再調整されることがよくあります。正確な向きが重要な場合は、保持節の中で明示してください(例:「注ぎ口を左に向けたままにする」)。
カタログ全体へのバッチ処理
同じ呼び出しはそのままカタログジョブに拡張できます——1つの商品をハードコードする代わりに、(SKU, ベース画像, シーンプロンプト) のタプルをループします:
CATALOG = [
{"sku": "dripper-ceramic-01", "base_url": "https://cdn.example.com/dripper-01-base.jpg"},
{"sku": "kettle-gooseneck-02", "base_url": "https://cdn.example.com/kettle-02-base.jpg"},
# ...
]
SCENE_PROMPTS = {
"lifestyle": "Place this product on a rustic wooden kitchen countertop, warm morning "
"sunlight, lifestyle e-commerce photography, keep shape, color and "
"proportions identical to the reference",
"flatlay": "Place this product on a white marble countertop, top-down flat lay, soft "
"diffused daylight, keep shape, color and proportions identical to the reference",
}
results = []
for item in CATALOG:
for scene_name, prompt in SCENE_PROMPTS.items():
url = edit_product_scene(item["base_url"], prompt)
results.append({"sku": item["sku"], "scene": scene_name, "url": url})
# download + upload to your own storage here — output URLs expire
タスク API にはネイティブの idempotency_key フィールドがないため、バッチジョブをクラッシュ後に安全に再実行する必要がある場合は、API が重複を検出することに頼るのではなく、独自のストレージで (sku, scene_name) ごとに重複排除してから再送信してください。
1枚あたり$0.09で計算すると、200 SKUのカタログでそれぞれ3つのシーンバリエーションがある場合、合計 $54 かかります——これだけ多くのシーン写真を撮影するスタジオのコストと比較する価値があります。特に季節ごとに作り直されるカタログではなおさらです。
よくある質問
grok-imagine-quality/image-to-image は1回の呼び出しでバッチまたは複数画像の出力をサポートしていますか?
いいえ——1回の image_urls 送信(1〜3枚の参照画像)でタスクごとに1枚の出力画像が生成されます。上記のように、個別のタスク呼び出しをループしてシーンをバッチ処理してください。
出力の正確なカメラアングルを制御できますか? 直接はできません——カメラ/ポーズのパラメーターはありません。向きは新しいシーンに合うよう再調整されることがよくあります。特定のアングルが重要な場合は、「形状/色/比率を保持」の指示とともにプロンプトで明示してください。
これはベーシック層の grok-imagine/image-to-image とどう違いますか?
Quality 層はコストが高くなりますが(ベーシック層に対して$0.09〜$0.11)、より大きなシーン変化の中で商品の同一性をより確実に保ちます。単純な背景置換であれば、ベーシック層のECワークフローガイドでより安価な方法を扱っています——シーン変換がより劇的な場合(例:背景だけでなくスタジオからライフスタイルへ)に Quality を選んでください。
元の写真がまだ公開 URL 上にない場合はどうすればよいですか?
まず任意のオブジェクトストレージまたは CDN にアップロードしてください——タスク API はサーバー側で URL を取得して image_urls を解決するため、ローカルファイルパスやデータ URI は機能しません。
自分で試してみる
完全なリクエスト/レスポンス構造、ライブプレイグラウンド、現在の料金は grok-imagine-quality/image-to-image モデルページにあります。タスク API にまだ慣れていない場合は、ステップバイステップの統合ガイドで認証、ポーリング、エラー処理をより詳しく説明しています。