video-generation-gateways について
fal.ai、Replicate、WaveSpeedなどのホスト型動画生成ゲートウェイを選定・運用するスキルです。接続方法、非同期ジョブ、スキーマ探索、バージョン管理、費用制御、フェイルオーバー、出力のライセンスを扱います。
主な機能
- 01ゲートウェイの選定とルーティング
- 02非同期ジョブとWebhookの処理
- 03モデルスキーマの探索
- 04バージョン固定と廃止対応
- 05費用上限とフェイルオーバー
- 06出力ライセンスの検討
活用シーン
- 01複数の動画モデルへのリクエスト振り分け
- 02Webhookを使う生成パイプラインの構築
- 03送信前のモデル入力の検証
- 04ゲートウェイの切替と費用制御の計画
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ calesthio/ generative-media-skills --skill video-generation-gatewaysインストール後、Claude Code で/video-generation-gatewaysを入力して読み込まれたか確認します。
同梱ファイルEVAL.md
詳細
動画生成ゲートウェイ
動画生成ゲートウェイとは、多数のサードパーティ製動画モデル(Veo、Kling、Seedance、Hailuo/MiniMax、Luma、Wan、LTX-Video、Pika など)を、単一のアカウント、単一の API 規約、単一の請求で再販する、ホスト型の推論アグリゲーターです。プロンプトとパラメーターをゲートウェイが所有するエンドポイントに送信すると、ゲートウェイが独自のインフラストラクチャ上で基盤モデルを実行し、ホストされた結果の URL を返します。このスキルでは、代表的なゲートウェイとして fal.ai、Replicate、WaveSpeed を取り上げ、このカテゴリに共通する本番環境での判断について説明します。
このスキルの対象は、アートディレクションではなく、ルーティングと運用です。モデル固有または制作技法固有のスキルで扱うのは、プロンプトの作成、ショット設計、特定モデル向けのモーションディレクションです。ここで取り上げるのは、どのゲートウェイを選ぶか、そもそもゲートウェイを利用するか、非同期ジョブの契約がどう機能するか、モデルのスキーマをどう調べるか、バージョンをどう固定するか、費用をどう上限管理するか、どうフェイルオーバーするか、出力にどのライセンスが適用されるか、といった問いです。
ゲートウェイを利用すべき場合(利用すべきでない場合)
次のような場合はゲートウェイを利用します(本番環境での判断基準)。
- 複数の動画モデルを単一の連携で利用する必要がある場合。たとえば、プレミアムなショットには Veo、大量生成には Kling/Seedance のティア、同じパイプラインでは音声モデルやアップスケールモデルを使いたいものの、ベンダーごとに個別の契約、キー、請求関係、SDK を用意して保守するのは避けたい場合です。
- ベンダーごとに異なる独自の長時間ジョブプロトコルを習得する代わりに、単一の非同期ジョブ契約(送信 → ポーリング/Webhook → 取得)を利用したい場合です。
- モデルを比較検討したり A/B テストしたりするために、認証、ストレージ、結果処理を再構築せずにモデル ID を切り替えたい場合です。
- 入力のアップロードと出力メディアをゲートウェイの CDN でホストしたい場合。自前で構築する必要がなくなります。
- 直接のエンタープライズ契約を結ぶほどの利用量がまだない場合、またはモデルにファーストパーティの公開 API がなく、再販業者経由でしか利用できない場合です。
直接利用する(または見直す)場合:
- ゲートウェイが公開していないファーストパーティの機能が必要な場合。再販業者が提供していないパラメーター、解像度、リージョン、プライベートモデルのホスティング、SLA などです。ゲートウェイが公開するのは、各モデルが提供する機能のうち厳選された一部です。
- ゲートウェイが基盤ベンダーから引き継げない契約上のデータ処理条件、HIPAA/リージョン内データ保管、または締結済みの DPAが必要な場合です。
- 非常に多く、安定した利用量があり、呼び出しごとに再販業者のマージンを支払うより、直接の利用量コミット契約のほうが有利な場合です。
- ゲートウェイが追加するモデレーション層ではなく、プロバイダー独自のモデレーション方針が必要な場合です(「コンテンツの安全性」を参照)。
- レイテンシの大部分が、調整できないゲートウェイのキュー待ちやコールドスタートによるもので、直接 API ならプロビジョニング済みスループットを利用できる場合です。
このスキルの対象外:モデルプロバイダーの直接 API(Google Vertex/Gemini Veo、Kling 独自の API、Runway など)、ローカル/セルフホスト型の推論、トレーニングやファインチューニング、画像専用のゲートウェイ利用。
3つの主要ゲートウェイの概要
以下の変動する情報は2026-07-10に確認済みです。公開前にモデル ID、料金、制限を再確認してください。カタログや料金表は頻繁に更新されます。
| 項目 | fal.ai | Replicate | WaveSpeed |
|---|---|---|---|
| 位置付け | 生成メディア(画像/動画/音声/3D)を主軸とし、低レイテンシーを重視 | 汎用モデルマーケットプレイス(コミュニティ製モデルと厳選された「公式」モデル)で、最も幅広いカタログを提供 | メディア向けに速度とレイテンシーを最適化した推論 |
| カタログ規模(自己申告) | 1,000以上のモデル | 公式モデルが100以上、大規模なコミュニティカタログも提供 | 700~1,000以上のモデル |
| ジョブ送信エンドポイント | https://queue.fal.run/{model-id} | https://api.replicate.com/v1/predictions(コミュニティ製)または .../v1/models/{owner}/{name}/predictions(公式) | https://api.wavespeed.ai/api/v3/{model-id} |
| 非同期ジョブの状態 | IN_QUEUE → IN_PROGRESS → COMPLETED | starting → processing → succeeded/failed/canceled | created → processing → completed/failed |
| 同期オプション | キューが主な実行方法です。短時間で実行できるモデルには run エンドポイントもあります | Prefer: wait ヘッダー(デフォルトは60秒)を使った同期実行 | ポーリングまたはWebhookで結果エンドポイントを利用 |
| 課金基準 | 出力単位(動画は秒単位または動画単位)。代替としてGPU秒単位 | 公式モデルは出力単位、コミュニティ製モデルはGPU実行秒数単位 | モデルごとの実行単位。解像度/時間/件数に応じて変動 |
| 残高モデル | 前払いクレジット | 前払いクレジット(新規アカウントは残高が0ドルに達すると利用上限) | 前払いクレジット(有効期限なし) |
| 失敗時の課金 | いいえ。成功した出力に対してのみ課金 | コミュニティ製モデルはモデルエラー時もGPU実行時間分を課金。公式モデルは出力単位で課金 | 使用量に応じて課金。モデルごとの仕様を確認してください |
| スキーマの確認方法 | expand=openapi-3.0 を指定した Model-endpoints API | モデルバージョンオブジェクトの openapi_schema | モデルごとのプレイグラウンド/API の例 |
出典:fal のキューおよび料金に関するドキュメント、Replicate の HTTP API および料金に関するドキュメント、WaveSpeed の予測および料金に関するドキュメント(「Sources」を参照)。
表の読み方: 3つのサービスは呼び出せるモデルの種類が大きく重複しており、代表的な同じモデル(Veo、Kling、Seedance)はすべてにあります。そのため、差別化の中心は運用上の仕様です。課金の粒度、失敗時に料金が発生するかどうか、スキーマの確認方法、バージョンの固定方法などが該当します。カタログは必要条件ですが、それだけでは十分ではありません。インテグレーションの成否を左右するのは運用上の仕様です。
非同期ジョブの仕様(すべてのゲートウェイの中核)
動画生成には数秒から数分かかるため、どのゲートウェイも基本的には非同期ジョブキューです。動画の完成までブロックする同期リクエストを前提に構築しないでください。タイムアウトが発生し、処理が失われます。一般的な流れは次のとおりです。
- ジョブを送信し、ジョブ ID/リクエスト ID をすぐに受け取ります。
- Webhook(推奨)またはポーリング(代替)で完了を待ちます。
- 結果(ホストされたメディア URL)を取得し、有効期限が切れる前にダウンロードして保存します。
fal.ai キュー
- 送信: ヘッダー
Authorization: Key $FAL_KEYを指定してPOST https://queue.fal.run/{model-id}を実行します。request_id、response_url、status_url、cancel_url、queue_positionが返されます。 - 状態:
GET https://queue.fal.run/{model-id}/requests/{request_id}/status(ランナーのログを取得するには?logs=1を追加)。状態はIN_QUEUE、IN_PROGRESS、COMPLETEDです。 - 結果:
GET https://queue.fal.run/{model-id}/requests/{request_id}。 - キャンセル:
PUT .../requests/{request_id}/cancelを実行します。キュー内のジョブはすぐに削除され、実行中のジョブにはベストエフォートでキャンセル信号が送られます。 - ドキュメントに記載された保証:「キュー内のリクエストが破棄されることはありません。」
- fal のキューに関するドキュメントに基づき、2026-07-10に確認済みです。
Replicate の予測
- 送信(コミュニティ):
POST https://api.replicate.com/v1/predictionsにversionフィールドを指定します。送信(公式):POST https://api.replicate.com/v1/models/{owner}/{name}/predictions(version は不要です)。 - 同期ショートカット:
Prefer: wait(またはPrefer: wait=5)を追加すると、HTTP 接続を最大 60s 保持し、高速なモデルでは出力をインラインで返します。数分かかる動画には適していません。 - 期限:
Cancel-Afterヘッダー(5s〜24h)は予測自体を自動キャンセルします(HTTP の待機時間だけを制限するPrefer: waitとは異なります)。 - ステータス/結果:
succeededまたはfailedになるまでurls.getの URL をポーリングします。完了するまでoutputは null です。ウェブのデバッグ表示はurls.webにあります。 - Replicate の HTTP/create-prediction ドキュメントに基づき、2026-07-10 に確認済み。
WaveSpeed の予測
- 送信:
POST https://api.wavespeed.ai/api/v3/{model-id}→ タスク/予測 ID が返されます。 - 結果:
GET https://api.wavespeed.ai/api/v3/predictions/{id}/result。 状態:created、processing、completed、failed。outputsに結果の URL が格納され、timings.inferenceに所要時間がミリ秒単位で示されます。 - データ保持期間:予測は7 日間利用できます(2026-07-10 に確認済み)。出力は速やかに保存してください。
- WaveSpeed の get-result ドキュメントに基づき、2026-07-10 に確認済み。
Webhook とポーリング(本番環境での指針)
動画ではWebhookを優先してください。数分にわたるポーリングループはリクエストを浪費し、レート制限のリスクも高めます。また、接続を開いたままにする方法は不安定です。公開 HTTPS エンドポイントを公開できない場合(ローカル開発、制限の厳しいネットワーク)に限り、ポーリングに切り替えてください。ポーリングする場合は、間隔を徐々に広げます。画像タスクでは約 2 秒、動画タスクでは約 5 秒から始めてください(WaveSpeed のドキュメントに記載された指針であり、どこでも妥当なデフォルト値です)。単一のジョブを 1 秒間に複数回ポーリングしないでください。
すべての Webhook ハンドラーは冪等になるように設計してください。ゲートウェイは配信を再試行するため、同じジョブ ID に対して複数回配信することがあります。
Webhook のセキュリティと信頼性
Webhook のペイロードはパブリックインターネット経由で届くため、検証してください。
fal.ai は Webhook に ED25519 署名を付けます。検証手順(2026-07-10 に確認済み):
- ヘッダー
X-Fal-Webhook-Request-Id、X-Fal-Webhook-User-Id、X-Fal-Webhook-Timestamp、X-Fal-Webhook-Signature(hex)を読み取ります。 https://rest.fal.ai/.well-known/jwks.jsonから JWKS を取得し、最大 24h キャッシュします。- タイムスタンプが現在時刻から ±300s(5 分)を超えてずれている場合は拒否します。
- 署名対象のメッセージ(リクエスト ID + ユーザー ID + タイムスタンプ + 生の本文の SHA-256 を改行で連結)を再構成し、JWKS の ED25519 公開鍵で署名を検証します。
- 必要に応じて、
https://api.fal.ai/v1/metaのwebhook_ip_rangesを使用して IP 許可リストを設定します。
fal の配信/再試行(2026-07-10 に確認済み):初回配信のタイムアウトは 15s です。失敗すると、2 時間にわたって 10 回再試行します。成功ペイロードには status: "OK"、結果、seed が含まれます。リクエストエラーの場合は status: "ERROR" が含まれます。シリアライズに失敗すると、payload: null と payload_error が設定されます。request_id は再試行の間も変わらず、gateway_request_id は最新の試行を示します。
Replicate では webhook_events_filter を使って、発生させるイベントを絞り込めます(例:["completed"])。start と completed は常に送信されます。Replicate は署名シークレットによる Webhook 署名検証に対応しています。ペイロードを信頼する前に検証してください。(リリース前に Replicate の Webhook ドキュメントで現行の仕組みを確認してください。概念については 2026-07-10 に確認済み。)
WaveSpeed は id、model、input、outputs(completed 時)、urls.get、status、error(失敗時)を含む POST を送信します。署名の詳細に依存する前に、WaveSpeed の Webhook ドキュメントで現行の仕様を確認してください。
モデルごとのスキーマ検出
モデルごとに入力項目は異なります(解像度の列挙値、長さの上限、画像・動画参照スロット、音声の切り替え、シード、ネガティブプロンプトなど)。前提をハードコードしてはいけません。スキーマを検出し、連携側で入力を検証するとともに、モデルの更新に応じて適応できるようにします。
- fal.ai: モデルエンドポイント API は
expand=openapi-3.0を受け付け、エンドポイントの完全な OpenAPI 3.0 スキーマをopenapiフィールドで返します。endpoint_id(例:fal-ai/veo3)を指定してクエリすると、すべての入力パラメーターの JSON Schema を取得できます。リスト/検索モードを使うと、カタログを列挙できます。(2026-07-10 検証済み。) - Replicate:
/v1/models/{owner}/{name}/versions/{version_id}でモデルバージョンオブジェクトを取得し、openapi_schema.components.schemasからInputとOutputのスキーマを読み取ります。(2026-07-10 検証済み。) - WaveSpeed: 各モデルのページ/プレイグラウンドではパラメーターセットを確認でき、Python/JS/cURL の例が自動生成されます。2026-07-10 時点では、カタログ全体を対象とする単一の OpenAPI エクスポートは文書化されていません。モデルごとのドキュメントを信頼できる情報源として扱ってください。
ヒューリスティック: 検出したスキーマを (model-id, version) ごとにキャッシュし、バージョンが変わったとき、または初回の 422/検証エラーが発生したときに再取得します。ゲートウェイの前段に小規模なスキーマ検証レイヤーを構築すると、失敗したジョブに費用をかける前にパラメーター形式の破損を検知できます。
バージョンの固定と非推奨化
バージョンを考慮すべき理由は再現性にあります。ひそかに更新されたモデルでは、同じプロンプトでも動き、構図、品質が異なる結果になることがあります。
- Replicate は最も明示的なモデルを採用しています。コミュニティモデルは
{owner}/{model}:{64-char-version-hash}で指定します。ハッシュを固定すると、時間が経過しても動作が同一であることを保証できます。一方、ハッシュを省略した場合(またはハッシュなしの{owner}/{model}で指定する公式モデルを使う場合)は、Replicate によって最新の保守対象バージョンが使われます。トレードオフ: 再現性を確保し、予期しない動作変更を避けるにはハッシュを固定します。自動アップグレードと保守負担の軽減を優先する場合は、バージョンを固定しない公式モデルの形式を使います。Replicate は、再現性を高めるベストプラクティスとしてバージョンの固定を推奨しています。(2026-07-10 検証済み。) - fal.ai と WaveSpeed では、安定した文字列 ID(例:
fal-ai/veo3、またはfal-ai/kling-video/v2/...のようなバージョン付き ID)でモデルを指定します。バージョンの粒度は、ベンダーが公開する ID に含まれています。新しい ID や古い ID の非推奨化を把握するため、変更履歴を確認してください。
ゲートウェイにおける非推奨化は、仮定上のリスクではなく、実際の運用リスクです。 基盤となるモデルは廃止されたり、後継モデルに置き換えられたりします(Kling/Veo/Seedance の新バージョンが公開され、古いエンドポイントが終了するなど)。対策(ヒューリスティック):
- 各ゲートウェイの変更履歴を追跡し、利用可能な場合は明示的なバージョン付き ID を固定します。
- 設定駆動のモデルマップ(インライン文字列ではなく、env/設定ファイル)を用意しておくと、非推奨 ID の変更をコード内で探し回らず、1 行の修正で済ませられます。
- CI にカタログ/ヘルスプローブを追加し、依存する各モデル ID を解決して、解決できなくなった場合やスキーマが変わった場合にアラートを出します。
- 能力レベルごとに名前付きフォールバックモデルを用意し、終了したエンドポイントの代わりに代替モデルを使ってパイプラインが失敗しないようにします。
支出管理
動画は呼び出しごとの生成モダリティの中で最も高額であり、再試行や不適切なループによってゲートウェイの支出が急増することがあります。管理方法には大きな違いがあります。
- fal.ai: 主な上限は前払いクレジットです。残高を超えて支出することはできません。成功した出力に対してのみ課金され、サーバーエラー(HTTP 500 以上)やキュー内での待ち時間は課金対象になりません。2026-07-10 時点で、fal の公式ドキュメントにはプロジェクト単位の予算アラートは掲載されていません。請求/プラットフォーム API から独自に支出を集計してください。
- Replicate:****月間支出上限は廃止されました(2025 年 7 月 1 日)。現在のハード上限は前払いクレジットで、残高が 0 ドルになると処理が停止します(2025 年 7 月 16 日以降、新規アカウントでは前払いクレジットが適用されます)。廃止後は標準の予算アラートがないため、残高低下の通知は独自に実装するか、サードパーティ製ツールに任せる必要があります。失敗時の課金に非対称性がある点にも注意してください。コミュニティモデルはモデルがエラーになっても GPU の利用秒数分が課金されるため、クラッシュループに陥ったコミュニティモデルでも費用が発生します。公式モデルは出力ごとに課金されます。(2026-07-10 確認済み。)
- WaveSpeed:****有効期限のない前払いクレジットを使用します。モデルごとの従量課金で、解像度、時間、出力数に応じて費用が変動します。実行前に費用の見積もりが表示され、料金 API からも確認できます。承認済みアカウント/エンタープライズアカウントには月間クレジット枠があります。(2026-07-10 確認済み。)
本番環境でのコスト管理の指針:
- 利用可能な残高を少額に保ち、必要に応じて慎重に補充してください。前払い残高は、3 つすべてのゲートウェイで実質的なサーキットブレーカーとなります。
- 送信前に見積もりを確認してください。動画の費用は**時間 × 解像度 × 出力数(モデルによっては × 音声)**に応じて増加します。音声付きの 8 秒の 1080p Veo クリップは、5 秒の 720p Kling クリップより大幅に高額です。単価を把握してください。例(fal、2026-07-10 確認済み):Veo 3.1 は音声なしの場合 720p/1080p で約 $0.20/秒、音声ありの場合は約 $0.40/秒です。Kling 2.5 Turbo Pro は約 $0.07/秒です。料金は変わるため、再確認してください。
- 独自のコードで同時実行数と再試行回数に上限を設けてください。失敗するモデルに対する無制限の再試行ループは、前払い式ゲートウェイ全般で典型的な支出急増の原因です。
- 検証時には、失敗時に課金されないゲートウェイ/モデルを優先してください。ジョブの待ち時間が予測できない場合は、GPU の利用秒数ごとの課金より出力ごとの課金を優先してください。
- ジョブごとのコストを計測してください(ジョブ ID → モデル → パラメーター → 請求額)。費用の把握とアラートに活用し、ゲートウェイからの警告に頼らないでください。
リトライとゲートウェイ間のフェイルオーバー
リトライ。 一時的な障害(429 レート制限、5xx、容量不足/コールドスタートによるタイムアウト)は起こり得ます。指数バックオフとジッター、自分で管理する冪等性キー、そして上限(試行回数と合計費用の両方)を設定してリトライしてください。送信済みで処理に時間がかかっているジョブは、失敗したジョブとは異なるため、「送信に失敗した」(安全にリトライ可能)状態と「ジョブの実行が遅い」(ポーリング/完了を待つ。再送信しない — 二重請求になります)状態を区別してください。Retry-After がある場合は、その値に従ってください。
ゲートウェイ間のフェイルオーバー。 同じ主要モデルが複数のゲートウェイで提供されているため、ゲートウェイは代替可能なルートです。これは、アグリゲーターパターンを採用する最も強力な運用上の根拠です。フェイルオーバーするには、次のようにします。
- ゲートウェイ固有の呼び出しではなく、機能インターフェース(
generateVideo(prompt, tier, constraints))の背後で抽象化し、ルーターがプロバイダーとモデルを選択するようにします。 - 2 つ以上のゲートウェイにわたって、機能ティアごとのモデルマップを管理します(例:「プレミアムなシネマティック」→ fal または Replicate の Veo、「大量処理」→ WaveSpeed の Seedance または fal の Kling)。
- 境界部分で正規化します。各ゲートウェイは認証、送信形式、ステータスの表記、パラメーター名、結果の JSON がそれぞれ異なります。入力と出力を標準形式に変換しなければ、フェイルオーバーは機能しません。
- 出力の差異に注意します。 同じモデルでも、ゲートウェイが異なれば、公開されるパラメーター、デフォルトの解像度、モデレーション、さらにはパイプラインの細かな仕様まで異なる場合があります。フェイルオーバーで維持されるのは可用性であり、必ずしも同一の出力ではありません。フェイルオーバーの結果は完全に同一の出力ではなく、近似的な代替として扱い、品質が重要なショットは再確認してください。
- バックアップ側の残高不足でフェイルオーバーが妨げられないよう、各ゲートウェイで別々のプリペイド残高とキーを確保してください。
コンテンツセーフティの挙動はゲートウェイによって異なります
モデレーションは 2 層で適用されます。基盤モデル独自の安全性機能と、ゲートウェイが追加するモデレーションです。これらはゲートウェイによって異なるため、同じモデルに対する同じプロンプトでも、あるゲートウェイでは受け入れられ、別のゲートウェイではブロックされることがあります。
- fal.ai はリアルタイムのフィルタリングに OpenAI の Omni moderation API を統合し、NSFW コンテンツポリシーを維持するとともに、NCMEC/Thorn(CSAM)および StopNCII(NCII)と提携しています。一部の画像モデルには
enable_safety_checkerの切り替えオプション(デフォルトはオン)があります。動画モデルのモデレーション方針はモデルによって異なります。ユーザーは fal の利用規定に引き続き従う必要があります。(2026-07-10 確認。) - Replicate は自社の利用規約と基盤モデルの制限を適用します。モデレーションの厳しさは、主に各モデルの仕様に準じます。
- WaveSpeed は各モデルに独自の利用規約を適用します。
ヒューリスティクス: (1) モデレーションの挙動は一度だけでなく、ゲートウェイごとにテストしてください。プライマリで許可されたプロンプトがフェイルオーバー先では拒否され、可用性に関する想定が崩れることがあります。(2) モデレーションによる拒否は一時的なエラーと区別して処理してください。これは確定的なため、同じプロンプトをリトライしたりフェイルオーバー先に送ったりしても、失敗するか二重請求になる可能性があります。その場合は、拒否をユーザーに示す、プロンプトを調整する、または異なるポリシーを持つモデルにルーティングしてください。(3) ゲートウェイが、直接 API と同じ方法で透かし、C2PA/来歴シグナル、または安全フィルターを削除または追加するとは限りません。必ず確認してください。
データガバナンスと商用利用権の引き継ぎ
**確認すべき点は2つです。**データの保存場所と、出力を商用利用できるのは誰かです。
データの保持/保存場所:
- fal.ai:入力ファイルと出力メディアは fal の CDN(
v3.fal.media/...)に保存されます。保持期間はX-Fal-Object-Lifecycle-Preferenceヘッダー(expiration_duration_seconds、または期限なしの場合はnull)で制御できます。リクエスト/レスポンスの JSON は、デフォルトで30日間保存されます。期限切れになる前に出力をダウンロードしてください。期限切れのファイルは復元できません。(2026-07-10に確認。) - Replicate:API で作成された予測では、入力パラメーター、出力、ログはデフォルトで約1時間後に自動削除されます。そのため、出力はご自身で保存する必要があります。(2026-07-10に確認。)
- WaveSpeed:予測は7日間保持されます。(2026-07-10に確認。)
出力は一時的なため、必要なものは必ずダウンロードして別の場所でホストしてください。長期保存が必要なコンテンツについて、エンドユーザーにゲートウェイの CDN URL を直接案内してはいけません。規制対象データを扱う場合は、ゲートウェイが DPA や地域内での処理を提供できるか確認してください。ほとんどの再販フローでは、入力データがサードパーティのモデルインフラに送信されます。
**商用利用権の引き継ぎ(ガバナンス上の重要なポイント):**ゲートウェイがそのサービスの出力に対する権利を付与しても、基盤モデルのライセンスに優先するものではありません。権利はゲートウェイではなく、モデルに基づいて決まります。
- Replicate の利用規約では、商用利用を含め、出力に対する「すべての権利、権原および利益」が付与されますが、**使用したモデルによって定められる第三者の規約に明示的に従う必要があります。**Stable Diffusion のような寛容なモデルの中には、所有権を主張しないものもありますが、商用利用を制限するモデルもあります。(2026-07-10に確認。)
- fal と WaveSpeed にも同じ考え方が当てはまります。モデルカード/基盤となるベンダーのライセンスによって、クリップを商用利用できるか、帰属表示が必要か、ベンダーが入力データに対して学習または利用に関する権利を主張するかが決まります。
**判断の目安:**ゲートウェイで生成した動画を商用利用する前に、ゲートウェイの ToS だけでなく、基盤モデルのライセンスとモデル提供元の規約を確認してください。プレミアムモデル(Veo、Kling)には、提供元固有の商用利用規約やクリップごとの制限が頻繁に適用されます。ゲートウェイがこれらのモデルを再販していても、そうした規約が緩和されるわけではありません。後日、紛争やモデルの切り替えが発生した場合に監査できるよう、利用するモデルごとに商用利用の根拠となるライセンスを記録してください。
トラブルシューティング
| 症状 | 考えられる原因 | 対処方法 |
|---|---|---|
| 送信はすぐに完了するが、動画がない | 想定どおりの動作です。非同期処理のため、結果ではなくジョブ ID が返されています | status/result をポーリングするか、Webhook を待ちます。送信レスポンスを出力として扱わないでください |
| Webhook が届かない | エンドポイントが公開 HTTPS ではない、ハンドラーの処理が遅い(fal では 15 秒超)、または署名チェックで有効なペイロードが拒否されている | 接続可能性を確認し、すばやく応答してから非同期で処理します。署名ロジックを確認し、ポーリングに切り替えます |
| 結果が重複して処理される | ゲートウェイが配信を再試行した | ジョブ ID/リクエスト ID をキーにして、ハンドラーを冪等にします |
422/検証エラー | このモデル/バージョンでパラメーターの形式が間違っている | モデルスキーマを再取得します(fal は openapi-3.0、Replicate は openapi_schema)。送信前に入力を検証します |
| 課金されたが、使える出力がない | エラー時もコミュニティモデルの GPU 時間に対して課金される(Replicate)、またはダウンロード前に出力の有効期限が切れた | 不安定な処理には出力ごとの従量課金モデルを優先します。出力はすぐにダウンロードし、保持期間を確認します |
| モデル ID が解決されなくなった | バージョンが非推奨になった/提供終了した | 設定で管理するモデルマップを新しいバージョン付き ID に更新するか、ティアのフォールバックに切り替えます |
| あるゲートウェイではプロンプトがブロックされ、別のゲートウェイでは問題ない | モデレーションレイヤーの構成が異なる | これを確定的な動作として扱います。プロンプトを調整するか、ポリシーの異なるモデルにルーティングします。むやみに再試行しないでください |
| 支出が際限なく増える | 再試行が無制限、またはプリペイド残高に対する不適切なループ | 再試行回数と同時実行数を制限し、残高を少額に保ち、ジョブごとのコストを計測します |
| 「何も変えていない」変更の後で出力が変わった | バージョンが固定されておらず、気付かないうちに更新された | 明示的なバージョンのハッシュ/ID を固定し、CI にスキーマ/動作プローブを追加します |
| 結果 URL が後で 404 になる | ゲートウェイ CDN の保持期間が過ぎた | コンテンツを永続的にホストします。ゲートウェイの生 URL をエンドユーザーに配信しないでください |
完全な例(説明用 — 使用前に ID/価格を確認してください)
例 A — 短いソーシャルクリップの一括生成でルートを選択する
目的: 1 日あたり 5 秒、720p、縦型のクリップを 500 本生成します。コストを重視し、一部のプロンプトはコンテンツポリシーの境界に近く、固定された 1 日の予算を超えてはなりません。
考え方: 生成量とコスト重視の要件から、失敗時に課金されず、かつプリペイドの上限を厳密に設定できるゲートウェイ上の、秒単位/実行単位のモデルが適しています。Veo ではなく、中位ティアのモデル(たとえば Kling/Seedance の turbo ティア)を選びます。1 つのゲートウェイ上の単一モデルが 1 日 500 本の生成時に利用可能である保証はないため、フェイルオーバー用に同じ機能ティアの第 2 ゲートウェイを用意します。
計画: プライマリには fal queue.fal.run の送信と ED25519 検証済み Webhook を使用し、サーキットブレーカーとして、プリペイド残高を 1 日の予算に合わせて設定します。セカンダリには、別途入金した残高を持つ WaveSpeed 上の同じティアのモデルを使用します。ルーターは健全性とキューの深さに基づいて選択します。ジョブごとのコストをログに記録します(ジョブ ID → モデル → パラメーター → 課金額)。モデレーションによる拒否はレビュー用キューに送り、再試行しません。
期待される結果: クリップは非同期で配信され、予算はプリペイド残高によって上限が設定されます。一方のルートが提供終了または停止しても、もう一方に切り替わります。失敗モード: バックアップ残高への入金を忘れる(フェイルオーバーが気付かないうちに失敗する)、モデレーションによる拒否をむやみに再試行する(費用の無駄)、後で 404 になる CDN の生 URL を配信する。
例 B — Replicate で再現可能なシネマティックモデルを固定する
目的: マーケティングのワークフローで、ヒーローショットを数か月にわたって同一にレンダリングする必要があり、商用利用が必須です。
手順:
- 正確なバージョンを特定します。
GET /v1/models/{owner}/{name}/versionsを呼び出してハッシュを選び、{owner}/{name}:{version_hash}を設定に保存します。 - 固定した
version、webhook、webhook_events_filter: ["completed"]を指定してPOST /v1/predictionsを送信し、支出を抑えるためにCancel-Afterの期限を設定します。 - 送信前に
openapi_schema.components.schemas.Inputを参照し、入力を確認して検証します。 - 完了したら、約1時間の保持期間内に動画をダウンロードして再ホストします。
- 権利を確認: 公開前に、基盤となるモデルの Third-Party Terms で商用利用が認められていることを確認し、その根拠を記録します。
この構成にする理由: ハッシュを固定することで再現性を確保できます。スキーマを確認することで、パラメーターの変化によって出力が気づかないうちに変わるのを防げます。保持期間を考慮してダウンロードすることで、結果の消失を防げます。権利を確認することで、モデルのライセンスが商用利用を禁じているクリップの公開を防げます。失敗要因: 固定されていない公式モデルの形式を使う(自動アップグレードによって再現性が失われます)。Replicate による権利付与がモデルの制限的なライセンスに優先すると考える。
例 C — 統合前にモデルのスキーマを確認する(fal)
目的: まだ使ったことのない動画モデルを統合するにあたり、長さの上限、解像度の列挙値、画像参照を受け付けるかどうかが分かりません。
手順: fal のモデルエンドポイント API を呼び出し、endpoint_id にモデル(例:fal-ai/veo3)を設定して、expand=openapi-3.0 を指定します。返された openapi フィールドの JSON Schema から入力オブジェクトを確認します。そこからリクエストの型定義と検証レイヤーを生成し、モデル ID をキーにキャッシュします。最初の 422 エラーが発生したとき、または変更履歴でバージョンアップが告知されたときに再取得します。
理由: パラメーターの追加や名前の変更に対応できる自己記述的で堅牢な統合になります。現在のスキーマに追随していないブログ記事を参考に、推測したリクエスト本文をハードコードして次回のモデル更新で壊れるのを防げます。失敗要因: スキーマの確認を省き、現在のスキーマより古いブログ記事からコピーしたパラメーターをハードコードする。
出典
すべての URL は 2026-07-10 に確認済みです。
- fal.ai キュー API — https://fal.ai/docs/model-apis/model-endpoints/queue
- fal.ai Webhook(ED25519、再試行、JWKS)— https://fal.ai/docs/model-apis/model-endpoints/webhooks
- fal.ai 料金/プリペイドクレジット/成功時のみ課金 — https://fal.ai/docs/documentation/model-apis/pricing and https://fal.ai/pricing
- fal.ai モデル検索/OpenAPI スキーマの検出 — https://fal.ai/docs/platform-apis/v1/models and https://docs.fal.ai/model-apis/model-endpoints
- fal.ai データ保持/メディア有効期限ヘッダー — https://fal.ai/docs/documentation/model-apis/media-expiration
- fal.ai Trust & Safety(OpenAI Omni モデレーション、NCMEC/Thorn/StopNCII)— https://fal.ai/legal/trust-and-safety
- fal.ai 利用規定 — https://fal.ai/legal/acceptable-use-policy
- Replicate prediction の作成(同期/非同期、Prefer、Cancel-After、webhook_events_filter)— https://replicate.com/docs/topics/predictions/create-a-prediction
- Replicate HTTP API リファレンス(バージョン形式、openapi_schema、レート制限、約 1 時間の保持)— https://replicate.com/docs/reference/http
- Replicate モデルバージョン(固定、再現性)— https://replicate.com/docs/topics/models/versions
- Replicate 公式モデル — https://replicate.com/docs/topics/models/official-models
- Replicate 料金(GPU ハードウェアの秒単位料金、公式モデルの出力単位料金)— https://replicate.com/pricing
- Replicate 請求(利用上限の廃止、プリペイドクレジット)— https://replicate.com/docs/topics/billing
- Replicate レート制限 — https://replicate.com/docs/topics/predictions/rate-limits
- Replicate 利用規約(出力の所有権、第三者の規約)— https://replicate.com/terms
- WaveSpeed prediction/結果の取得(エンドポイント、状態、7 日間の保持)— https://wavespeed.ai/docs/get-result and https://wavespeed.ai/docs/what-are-predictions
- WaveSpeed 料金(モデルごとの料金、クレジット)— https://wavespeed.ai/docs/how-pricing-works and https://wavespeed.ai/pricing
- WaveSpeed Webhook — https://wavespeed.ai/docs/docs-api/webhooks (リリース前に現在の署名と再試行の詳細を確認してください)
モデル固有の価格(Veo 3.1 は解像度/音声に応じて約 $0.20~0.60/秒、Kling 2.5 Turbo Pro は約 $0.07/秒)は、2026-07-10 に確認した fal の料金ページに基づいています。価格は変動するため、必ず最新の料金表を再確認してください。