使用ガイド
EC製品画像向け FLUX 1.1 Pro:hiapi API ガイド
オンラインで商品を販売しているなら、この計算はすでにご存じでしょう。商品詳細ページには白背景画像が1枚、ライフスタイル画像が1枚、できれば多角度の画像セットが1つ——SKUごと、カラーバリエーションごとに必要です。スタジオ撮影では1日で10商品しかこなせませんが、画像APIなら1,000商品をこなせます。
flux-1.1-pro(Black Forest Labs の FLUX.1.1 [pro])は hiapi 上の写実系主力モデルです。ヘアライン金属、ガラス、布地、柔らかなボケといった説得力のある質感を描画でき、料金は1枚あたり $0.05で統一されています。本ガイドはすぐに実践できるEC向けレシピです。以下の各画像は、その上にそのまま記載されたプロンプトで生成されており、コピー&ペーストでそのまま使える同じ /v1/tasks 呼び出しを使用しています。さらに実際のパラメータ範囲も記録しました——存在するはずなのに送信すると400が返るパラメータも含みます。

60秒でわかるAPI
hiapi 上では、flux-1.1-pro は非同期タスクエンドポイントで動作します。タスクを作成し、ポーリングし、結果をダウンロードします:
# 1. Create the task
curl -X POST https://api.hiapi.ai/v1/tasks \
-H "Authorization: Bearer $HIAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "flux-1.1-pro",
"input": {
"prompt": "Studio packshot of an unbranded stainless steel wristwatch...",
"aspect_ratio": "1:1",
"output_format": "jpg",
"seed": 6607
}
}'
# => {"code":200,"data":{"taskId":"tk-hiapi-01KWK3JG..."},"message":"success"}
# 2. Poll until status is "success" (typically 10–40s for flux-1.1-pro)
curl https://api.hiapi.ai/v1/tasks/tk-hiapi-01KWK3JG... \
-H "Authorization: Bearer $HIAPI_API_KEY"
# 3. Download output[0].url — it carries an expireAt timestamp,
# so save the file to your own storage immediately.
本題に入る前に、運用上の注意点を2つ覚えておきましょう:
- 出力URLは一時的です。タスクが成功したらすぐにダウンロードして自身で転送保存してください——詳しくはhiapi の出力URLが期限切れになったときに何が起こるかをご覧ください。
- タスクが想定より長く
processing状態にとどまる場合、やみくもに再送信しないでください。ここに停止またはタイムアウトしたタスクの診断ガイドがあります。
実際のパラメータ範囲(および当て推量でぶつかる400)
他のプラットフォームでFLUXモデルを使ったことがあるなら、steps と guidance を調整したくなるでしょう。しかし hiapi の flux-1.1-pro 向けタスクスキーマでは、これらのフィールドは存在しません——APIは入力を厳密に検証し、未知のプロパティを拒否します:
{
"code": 400,
"error_code": "INVALID_REQUEST",
"message": "invalid input: <root>: additional properties 'steps', 'guidance' not allowed"
}
これはバグではありません。FLUX 1.1 [pro] はホスト型エンドポイントとして提供され、サンプリングの内部機構は提供元側で固定されています。以下は本番スキーマで検証済みの、送信できる内容です:
| フィールド | 型 | 許容値 / 範囲 |
|---|---|---|
prompt |
string | 必須 |
aspect_ratio |
string | 1:1、16:9、9:16、3:2、2:3、4:3、3:4、4:5、5:4、custom |
width、height |
integer | 256–1440 px(アスペクト比の代わりに使用、または custom アスペクト比と組み合わせて使用) |
seed |
integer | 任意の整数——再現性のために構図を固定 |
output_format |
string | jpg、png、webp |
prompt_upsampling |
boolean | バックエンドにプロンプトを書き換え/拡張させる |
safety_tolerance |
integer | 0–6 |
製品画像における実用的なデフォルト値:output_format: "jpg"、配置先に応じて明示的な aspect_ratio を指定(1:1 はモールのグリッド用、4:5 はフィード/ライフスタイル用、3:2 または 1440×960 はバナー用)、SKUシリーズごとに seed を固定し、prompt_upsampling はオフにしてください——ECでは、モデルが勝手に付け加えるのではなく、あなたの表現に厳密に従うことを望むはずです。
レシピ1 —— クリーンな白背景画像
最も基本的な画像:製品が1つ、シームレスな背景、柔らかなキーライト。背景色を明示し、床面の反射を要求し、そして——あらゆる写実モデルにとって重要なことですが——必ず「ブランドなし、ロゴなし、文字なし」と書いてください。文字盤やラベルこそ、FLUX が勝手に商標らしき落書きを生成しがちな場所であり、そうでなければ後から修正する羽目になります。
Studio packshot of an unbranded stainless steel wristwatch with a plain deep green dial and brushed metal bracelet, the dial completely clean with simple baton hour markers and no logo, no brand name, no text or numerals anywhere, standing upright on a seamless light grey background, centered composition, soft diffused key light from the upper left, subtle reflection beneath the watch, photorealistic e-commerce product photography

送信時は aspect_ratio: "1:1"、seed: 6607 を使用します。ヘアライン金属の質感と柔らかな床面の反射こそ、プロ向けの $0.05 で手に入る価値です——安価なモデルはまさにこうしたディテールを平坦化してしまいます。
レシピ2 —— ライフスタイル画像
モールのグリッドには白背景画像が必要ですが、商品ページやソーシャルプラットフォームではシーンがコンバージョンを生みます。製品をシーンに配置し、ラベルは空白のままにし、浅い被写界深度で「高級感」を伝えます。4:5 はフィードのクロップに一致します。
A lit soy candle in a clear glass jar with a plain blank kraft-paper label, on a rustic oak nightstand next to a stack of two linen-bound books, warm evening window light, softly blurred bedroom background, cozy lifestyle product photography for an online store, photorealistic

送信時は aspect_ratio: "4:5"、seed: 7301 を使用します。空白ラベルが保たれていることに注目してください——これが後で実際のブランドグラフィックを合成するキャンバスになります。
レシピ3 —— 固定seedによるカラーバリエーション
これはカタログ制作で最もコストを節約できるテクニックです。seed はノイズの初期化を固定するため、seedとプロンプト構造を完全に一致させ、色の単語だけを変えれば、新しいカラーで同じ構図が得られます——再撮影もimg2imgフローも不要です。
以下の2枚はどちらも seed: 5150、aspect_ratio: "1:1" を使用し、プロンプトはちょうど2語だけ異なります(navy blue → coral pink):
A single insulated stainless steel water bottle in matte navy blue, standing on a round travertine stone slab against a soft warm beige studio background, centered, soft diffused lighting, minimalist e-commerce product photo, photorealistic


同じボトルの輪郭、同じ石板、同じ構図で、異なるSKU。これが固定seedプロンプトがバリエーション撮影1日分の仕事を代替するということです。
バッチ:SKUごとにカタログ全体をレンダリング
以下は実際に私たちが実行したパターンです:送信、ポーリング、ダウンロード、リトライ。本番運用で明らかになった、事前に計画すべき点が1つあります:flux-1.1-pro のタスクは時折、汎用的な {"code": "TASK_FAILED"} で失敗します——これは一時的なもので、同じ入力を再送信すれば通常は成功します。画像ごとに最大3回の試行を確保してください(料金は正常にレンダリングされた画像にのみ発生します)。
import json, time, requests
API = "https://api.hiapi.ai/v1/tasks"
HEADERS = {"Authorization": "Bearer YOUR_HIAPI_KEY",
"Content-Type": "application/json"}
CATALOG = [
{"sku": "bottle-navy", "colour": "matte navy blue"},
{"sku": "bottle-coral", "colour": "matte coral pink"},
{"sku": "bottle-sage", "colour": "matte sage green"},
]
TEMPLATE = ("A single insulated stainless steel water bottle in {colour}, "
"standing on a round travertine stone slab against a soft warm "
"beige studio background, centered, soft diffused lighting, "
"minimalist e-commerce product photo, photorealistic")
def render(prompt, seed, retries=3):
for attempt in range(retries):
task = requests.post(API, headers=HEADERS, json={
"model": "flux-1.1-pro",
"input": {"prompt": prompt, "aspect_ratio": "1:1",
"output_format": "jpg", "seed": seed},
}).json()
task_id = task["data"]["taskId"]
while True:
state = requests.get(f"{API}/{task_id}", headers=HEADERS).json()["data"]
if state["status"] == "success":
return requests.get(state["output"][0]["url"]).content
if state["status"] == "fail": # transient TASK_FAILED happens;
break # resubmit with the same input
time.sleep(5)
raise RuntimeError(f"gave up after {retries} attempts")
for item in CATALOG:
img = render(TEMPLATE.format(colour=item["colour"]), seed=5150)
with open(f"{item['sku']}.jpg", "wb") as f:
f.write(img) # re-host immediately; task URLs expire
print(item["sku"], "done")
数百のSKUを処理する場合は、送信のペースを制御してください——画像APIのレート制限の詳細では、レート制限の挙動と適切な同時実行数について説明しています。
料金と flux-1.1-pro を選ぶべきタイミング
hiapi の料金ページで確認済み:
| モデル | 1枚あたりの価格 | 適用シーン |
|---|---|---|
flux-schnell/text-to-image |
$0.005 | 下書き、レイアウト構図、大量のサムネイル |
flux-1.1-pro |
一律 $0.05 | 写実的な白背景画像とライフスタイル画像、最大1440pxの任意解像度 |
flux-2/text-to-image |
$0.0375–$0.125(MP単位) | 最高のプロンプト追従性、画像内文字が鮮明 |
一律価格は地味な強みです。1440×960のメインビジュアルバナーも512×512のサムネイルも同じく$0.05ですが、flux-2 はメガピクセル単位で課金されます。ワークロードが「写実的な製品画像、サイズ混在」であれば、flux-1.1-pro がコスト予測可能なデフォルトの選択肢です。正確な物体数や画像内で読める印刷文字が必要なら、flux-2 にアップグレードしてください——ここで同じECレシピを使って実行しました。
5枚構成のPDP(メイン画像、白背景画像、ライフスタイル画像、カラー2種)は製品あたり合計$0.25。200 SKUのカタログを更新するなら:$50、半日、スクリプト1本。
まとめ
hiapi 上の flux-1.1-pro は、2回の呼び出しによる非同期ワークフローで写実的な製品画像を提供します:厳密だがシンプルなパラメータ範囲(アスペクト比、サイズ、seed、フォーマット——steps/guidance をいじる必要はありません)、固定seedによるカラーバリエーション、そしてカタログ予算を極めて予測しやすくする一律$0.05の料金です。APIキーを取得し、flux-1.1-pro モデルページから始めて、上記のcurl呼び出しで最初の白背景画像をレンダリングしてください——コーヒーが冷める前に、PDPにそのまま使える画像が手に入ります。