使用ガイド
AI画像・動画APIのコスト管理:ティア、バッチ処理、モデル選択
同じタスクでも最安モデルと最高額モデルでは34〜50倍の差。コスト管理の鍵は、各ティアがいつ元を取れるかを理解することに尽きます。
劇的な1回のAPI呼び出しでAIメディア予算を使い果たす人はいません。支出は3つの習慣を介して静かに漏れていきます。すなわち、使い捨ての下書きに高い料金を支払うこと、実際に何の単位で課金されるかを把握していないこと、そしてワークフローが「まず安価に広くバリエーションを生成してから」という設計になっていないために高額モデルの上で直列に反復することです。
このガイドでは、hiapi で画像や動画を生成する際に本当に重要なコストレバーを整理します。課金単位、品質ティア、動画の尺、下書き→昇格のワークフロー、そして非同期タスクAPIによるバッチ処理です。以下の価格はすべて2026年7月時点のライブ価格ページからのものです。スナップショットとして扱い、予算を立てる前に最新の価格を確認してください。
何に対して支払うのかを正確に把握する
hiapi はメディアモデルに対して固定の出力単位ごとに課金します。逆算が必要なトークン計算は一切ありません。
- 画像モデルは画像1枚あたりで課金されます。プロンプトがどれほど複雑でも変わりません。
- 動画モデルは生成された出力の1秒あたりで課金されます。
- 音声モデル(例:
elevenlabs/text-to-dialogue-v3)は入力テキスト1,000文字あたりで課金されます。
以下がテキスト→画像製品ラインの画像1枚あたりの価格一覧です:
| モデル | 画像1枚あたりの価格 |
|---|---|
flux-schnell/text-to-image |
$0.005 |
gpt-image-2/text-to-image@ext |
$0.007 |
z-image |
$0.008 |
gpt-image-2/text-to-image@beta |
$0.02 |
qwen-image-2.0 |
$0.025 |
gpt-image-2/text-to-image |
$0.03 |
nano-banana |
$0.05 |
flux-1.1-pro |
$0.05 |
flux-2/text-to-image |
$0.05 |
nano-banana-2 |
$0.051 |
wan2.7-image/text-to-image |
$0.08 |
nano-banana-pro |
$0.17 |
そして動画の1秒あたりの価格です:
| モデル | 1秒あたりの価格 |
|---|---|
grok-imagine(テキスト→動画 / 画像→動画) |
$0.0114 |
kling-3.0-omni(テキスト→動画 / 画像→動画) |
$0.129 |
seedance-2.0 |
$0.136 |
seedance-2.0-mini |
$0.147 |
wan2.7-video@pro(テキスト→動画 / 画像→動画) |
$0.167 |
happyhorse-1.0 |
$0.168 |
happyhorse-1.1(全エンドポイント) |
$0.21 |
seedance-2.0-fast |
$0.2357 |
veo-3.1-fast |
$0.25 |
veo-3.1 |
$0.57 |
記憶に値する数字が2つあります。画像製品ラインは最安から最高額まで34倍($0.005 → $0.17)、動画は50倍(1秒あたり$0.0114 → $0.57)に達します。モデル選択はチューニングノブではありません。あなたが下す最大の単一予算判断なのです。
ひとつ警告です。モデル名から価格を推測してはいけません。Veoファミリーでは、-fast バリアントは安価なティア($0.25/s 対 $0.57/s)ですが、seedance-2.0-fast は上位の高速化ティアであり、ベースの seedance-2.0 よりも1秒あたりのコストが高くなります($0.2357 対 $0.136)。価格表を読みましょう。決して仮定してはいけません。

価格ティアを細則ではなく機能として扱う
ほとんどのモデルファミリーはティア別にリリースされており、ティアの存在意義は、すべての作業にフラッグシップ価格を支払わずに済むようにすることです:
- 下書きティア($0.005〜$0.008):
flux-schnell、z-image、そして gpt-image-2 の@extチャネル。プロンプトの反復、構図テスト、そして人間が一度見て捨てるだけのあらゆる用途に。 - 標準ティア($0.02〜$0.05):
gpt-image-2/text-to-image、qwen-image-2.0、nano-banana、flux-2。ブログのカバー、商品画像、UIアセットの本番品質に。 - 上位ティア($0.08〜$0.17):
wan2.7-imageとnano-banana-pro。細部と指示への追従が決定的に重要な最終キービジュアル資産に温存。
同じ論理がチャネルバリアントにも当てはまります。価格ページでは gpt-image-2/text-to-image の @beta と @ext バージョンがそれぞれ $0.02 と $0.007、標準チャネルが $0.03 と記載されています。ワークロードがプレビューチャネルの規約を許容できるなら、同じプロンプトで20%〜77%を節約できます。画像1枚あたりのコストと解像度・再試行率の相互作用については、最も安価な画像生成API:画像1枚あたりの真のコストを比較する方法でより深く掘り下げています。
動画では尺が乗数になる
動画コストは レート × 秒数 です。つまり、疑問を投げかけなかったあらゆるデフォルト値が増幅されます。同じ8秒のクリップのコストは:
| モデル | 8秒のクリップ |
|---|---|
grok-imagine/text-to-video |
$0.09 |
kling-3.0-omni/text-to-video |
$1.03 |
veo-3.1-fast/text-to-video |
$2.00 |
veo-3.1/text-to-video |
$4.56 |
ここから直接2つの習慣が導かれます:
- ショットを満たす最短の尺をリクエストする。veo-3.1 のクリップを8秒から5秒に切り詰めれば$1.71を節約できます。クリップごとに、毎回です。
- 安いモデルで反復し、高いモデルでレンダリングする。
grok-imagineで4秒の下書きを6回反復しても総額約$0.27です。veo-3.1の出力0.5秒分より安いのです。そこでプロンプトの実験を消費し、$4.56は一度だけ払いましょう。
安価な下書き、上位モデルでの仕上げ
最も効果の大きい単一のワークフロー変更は、探索と納品を分離することです。商品画像の実例:
z-imageで20回の下書き反復、1回$0.008 = $0.16nano-banana-proで3回の最終レンダリング、1回$0.17 = $0.51- 合計:$0.67
23回の生成すべてを nano-banana-pro で実行すると$3.91かかります。同じAPI呼び出し数、同じ最終資産で、支出は約83%削減されます。しかも下書きループは高速です。下書きティアのモデルは数秒で返ってくるからです。
唯一の注意点:プロンプトはファミリー間で完全には移行しません。最後の1〜2回の反復では、下書きループを最終仕上げに使うモデル上に保ちましょう。そうすれば、上位モデルの予算を投入する前にファミリー特有の癖を発見できます。

非同期タスクAPIによるバッチ処理
hiapi のすべてのメディアモデルは非同期タスクエンドポイントで動作します。POST /v1/tasks は即座にタスクIDを返し、その後で結果をポーリングします。バッチ処理にリクエストごとの割引はありません。利点はアーキテクチャ上のものです。送信と完了が分離されているため、各生成を直列に待つのではなく、下書きバッチ全体を一度に配布できます。これこそが下書き→昇格ループを実用的にする仕組みです:
import requests, time
API = "https://api.hiapi.ai/v1/tasks"
HEADERS = {"Authorization": "Bearer YOUR_API_KEY"}
def create_task(model: str, prompt: str) -> str:
r = requests.post(API, headers=HEADERS, json={
"model": model,
"input": {"prompt": prompt, "aspect_ratio": "1:1"},
})
r.raise_for_status()
return r.json()["data"]["taskId"]
def wait_task(task_id: str, timeout: int = 600) -> str:
deadline = time.time() + timeout
while time.time() < deadline:
task = requests.get(f"{API}/{task_id}", headers=HEADERS).json()["data"]
if task["status"] == "success":
return task["output"][0]["url"] # expiring URL — download it now
if task["status"] == "fail":
raise RuntimeError(task.get("error"))
time.sleep(5)
raise TimeoutError(task_id)
# Fan out 12 draft variations on a $0.008 model: ~$0.10 for the whole batch
variations = [f"studio product shot of a ceramic mug, camera angle {i}" for i in range(12)]
task_ids = [create_task("z-image", p) for p in variations]
urls = [wait_task(t) for t in task_ids]
12個すべてを先に送信してからポーリングします。タスクはプラットフォーム側で並行生成され、あなたのコードは一度だけ待機します。prompt 以外の入力フィールドはモデルによって異なります(resolution を受け付けるものもあれば、aspect_ratio のみのものもあります)。バッチ処理の前にモデルのパラメータ表を確認してください。gpt-image-2 のウォークスルーではこのパターンをエンドツーエンドで示しています。
配布を大規模化する際は、プラットフォームの並行処理上限を守ってください。429を引き起こすバーストは再試行の遅延を増やすだけです。画像生成APIのレート制限を理解するでは、制限の動作とクリーンなバックオフ方法を解説しています。
10行の予算ガードは「支出に注意を払う」を真の不変条件に変えます:
PRICES = {"z-image": 0.008, "gpt-image-2/text-to-image": 0.03, "nano-banana-pro": 0.17}
BUDGET_USD = 5.00
spent = 0.0
def spend(model: str, images: int = 1) -> None:
global spent
cost = PRICES[model] * images
if spent + cost > BUDGET_USD:
raise RuntimeError(f"budget cap: ${spent + cost:.2f} would exceed ${BUDGET_USD:.2f}")
spent += cost
各 create_task の前にこれを呼び出せば、暴走したループは来月の請求書に現れるのではなく、$5で大きな音を立てて失敗します。
同じ出力に二度払いしない
より巧妙なコスト漏れは再生成です。すでに所有している出力に正価を支払うことです:
- 結果をすぐにダウンロードする。タスク出力URLには時間制限があります。ファイルではなくホットリンクを保存していてリンクが期限切れになれば、唯一の解決策は有料の再生成です。詳細とダウンロードパターンはこちら。
- 「タスクの失敗」と「ポーリングを諦めた」を区別する。クライアントのタイムアウト後に成功したタスクは、誰も回収しない出力に使ったお金です。ポーリングのタイムアウトはモデルの実際の完了時間よりはるかに長く設定してください。失敗と見なす前に、こちらでハングしたタスクの診断方法を確認してください。
- 自分のライブラリを再利用する。5回目に「白背景のクリーンなスタジオ写真」を生成する前に、すでに支払い済みの資産を確認してください。検索可能なプロンプトを持つ共有バケットは、あなたのスタックで最も安いモデルです。
コスト管理チェックリスト
- モデルのネイティブ単位で予算を立てる:画像1枚、1秒、1,000文字あたり。
- メディアタイプごとに下書きティアと納品ティアのモデルを1つずつ選び、作業フェーズでルーティングする。
- 動画ではあらゆる尺のデフォルト値に疑問を投げかける。秒数は乗数だから。
/v1/tasksで下書きを配布し、勝者だけを上位レンダリングに昇格する。- ハードな支出上限をコードで強制する。毎週確認するダッシュボードではなく。
- すべての出力をすぐにダウンロードする。期限切れになるURLを決して保存しない。
モデル価格は新バージョンのリリースに伴って変動するので、ライブ価格ページから始め、モデルカタログから下書きティアと納品ティアを選び、上記の配布パターンをパイプラインに組み込んでください。最初に実行するタスクのバッチが、利用可能なすべての資産の本当のコストを正確に教えてくれます。