Lovely Routerドキュメント
キーを取得
モデル API

動画

Videos API によるキャラクター置き換え。動画と新しいキャラクターの画像を送ると、動き・構図・声はそのままに、同じショットがそのキャラクターで返ってきます。キャラクターとシーンをタグ付けしたプロンプトからの動画ショットも。リクエスト、ポーリング、料金、利用地域、制限を説明します。

Lovely Router は OpenAI と同じ形の Videos API で動画を作ります。POST /v1/videos でジョブを開始すると動画オブジェクトが返るので、completed になるまでポーリングし、/v1/videos/{id}/content から mp4 をダウンロードします。コードを書かずに試すなら Playground を使ってください。動画をアップロードするか X で探し、画像をアップロードするか好きな画像モデルに描かせ、選んだチャットモデルにキャラクターとシーンのプロンプトを改善させられます。各ステップは対応する API 呼び出しと同じく残高から課金されます。

見ている間も続いていく動画はライブ動画を、曲からミュージックビデオを作るにはミュージックビデオをご覧ください。

モデル#

モデル料金内容
minimax-h3-character-swap生成された動画 1 秒あたり $0.10動画を新しいキャラクターで撮り直します。顔・髪・体型・服装は画像から、動き・構図・カメラワーク・音声は動画から取ります。1 本あたり最大 10 秒。
minimax-h3-aftermidnight生成された動画 1 秒あたり $0.12同じキャラクター置き換えに、成人向けシーン用の NSFW LoRA(AfterMidnight)を加えたもの。より豊かで親密な背景、無修正の身体。1 本あたり最大 10 秒。
minimax-h3-videoレンダリング 1 秒あたり $0.13、2 枚目以降の画像 1 枚ごとに 1 秒あたり $0.06 追加キャラクターとシーンをタグ付けしたプロンプトから、音とセリフ付きの動画ショットを作ります。ショットは無料で 1 本につなげられます。1 ショット 5〜15 秒。

いずれも MiniMax H3 を使ったモデルで、creative-hosted チャネルグループとして自社の GPU で動いています。MiniMax H3 規約が適用され、すべてのリクエストで consent: true を指定し、規約(EU・英国・韓国・米国で利用しないことを含む)とその順守の責任に同意する必要があります。

キャラクターを置き換える#

元の動画を video、新しいキャラクターの画像を input_reference として送ります。ファイル(multipart)でも URL(http(s) または data:。JSON でも multipart のテキストフィールドでも可)でもかまいません。

curl https://lovelyrouter.com/v1/videos \
  -H "Authorization: Bearer $LOVELY_API_KEY" \
  -F model=minimax-h3-character-swap \
  -F video=@clip.mp4 \
  -F input_reference=@character.png \
  -F prompt="In front of a weathered concrete wall, soft window light" \
  -F consent=true

5 秒の動画のレンダリングには約 1 分、10 秒の動画には 2〜3 分ほどかかります(画面が大きいほど時間がかかります)。しばらく使われていなかった場合は、GPU の起動にさらに 1 分ほどかかります。接続が切れてもジョブは続きます。

リクエストのフィールド#

ボディパラメータ

modelstring必須

minimax-h3-character-swap。

videofile必須

元の動画。MP4、MOV、WebM で最大 80 MB。ファイルまたは http(s) / data: URL で指定します。動き・構図・カメラワーク・音声はそのまま残り、start から最大 10 秒が使われます。

input_referencefile

新しいキャラクターの画像。PNG、JPEG、WebP で最大 20 MB。ファイルまたは URL で指定します。1 人だけが写り、顔が見え、均一な光で無地の背景のものが最適です。

character_idstring

input_reference の代わりに、あなたのアカウントの保存したキャラクターを使います:そのターンアラウンドシートが画像になります。どちらか一方だけを送ります。

consentboolean必須

true にすると、MiniMax H3 規約とその順守の責任(地域条項を含む)に同意し、動画と画像に写るすべての人が 18 歳以上で、この肖像の使用に同意していることを確認したことになります。

promptstring

シーン。場所、光、雰囲気を書きます(最大 4,000 文字)。引き継がれるのは動画の動きだけなので、説明したシーンがそのまま見た目になります。指定しない場合は、モデルが無地の背景を選びます。

secondsnumber

動画のうち使う最大秒数(3〜10)。デフォルトは動画全体(最大 10 秒)。

startnumber

動画の何秒目から使うか(0〜3600。Playground のトリミングツールが設定します)。デフォルトは 0。

backgroundstring

new(デフォルト):引き継ぐのは動画の動きだけで、場所は prompt で指定します。keep:動画の背景・物・光をそのまま残し、人物だけを置き換えます。prompt は不要です。料金は同じです。

seedinteger

同じシードを使うと同じレンダリングを再現できます(0〜2147483647)。デフォルトはランダム。

POST に ?wait=0–300 を付けると、動画が完成するまでリクエストを保持し(完成すれば 200)、時間内に終わらなければ順番待ちのオブジェクトとともに 202 を返します。

保存したキャラクターを使う#

新しいキャラクターは、呼び出しごとに送ることも、保存したキャラクターから使うこともできます:

  • 1 回限り: input_reference——画像。ファイルまたは URL で指定します(上記)。
  • 保存済み: character_id——POST /v1/characters で保存したキャラクター。そのターンアラウンドシートが画像になります。動画オブジェクトの character_id に表示されます。
cURL
curl https://lovelyrouter.com/v1/videos \
  -H "Authorization: Bearer $LOVELY_API_KEY" \
  -F model=minimax-h3-character-swap \
  -F video=@clip.mp4 \
  -F character_id=chr_3b9e1f0c7a2d4e58b6c1a9f2 \
  -F consent=true

両方を送った場合や、あなたのものでない character_id は拒否されます(400 / 404)。

動画まるごと#

POST /v1/videos/replacements は動画をまるごと受け付けます——最長3分、カットや複数の人物があっても大丈夫です。まずショットと登場人物を検出し(1 秒あたり $0.01)、次に各人物をキャラクターに割り当てて(またはそのまま残して)、人物全体か頭部(顔、髪、頭に身につけているもの)だけかを選びます。入れ替える人物がいるショットを再レンダリングし、元の音声に合わせてつなぎ直します。料金は入れ替えた秒数で決まります(SFW モデルは FastH3 Omni でレンダリングし1秒あたり $0.20、AfterMidnight は $0.12)。流れの全体は動画置き換えのエンドポイントを参照してください。Playground は長さに関係なくすべての動画でこれを使います。

動画ショット#

minimax-h3-video はゼロから動画を作ります:POST /v1/videos/shots は、保存したキャラクターとシーンをタグ付けしたプロンプト(@Mia_Wong、@[Night Café])を受け取り、タグ付けされたものがそれぞれ参照画像になります——1 ショット最大 9 枚。引用符の中の言葉は、その直前に最後にタグ付けされたキャラクターが話します。物語のショットを 1 つずつレンダリングし、POST /v1/videos/joins でつなげます(無料)。すべてのフィールド、料金、Playground が絵コンテに使うプロジェクト API は動画ショットのエンドポイントにあります。声のあるキャラクターはその声で話します(1 ショット最大 3 つの声)。レンダリング前に、セリフの外の代名詞は正しいタグに置き換えられます(プロンプトの整理)。

cURL
curl https://lovelyrouter.com/v1/videos/shots \
  -H "Authorization: Bearer $LOVELY_API_KEY" \
  -H "content-type: application/json" \
  -d '{"model": "minimax-h3-video", "consent": true, "seconds": 5,
       "prompt": "In @[Night Café], @Leo looks up as @Mia_Wong sits down: \"You came.\"",
       "characters": ["chr_3b9e1f0c7a2d4e58b6c1a9f2", "chr_1e4b7d0a9c3f2e5b8a6d0c1f"],
       "scenes": ["scn_5b2d9e0c1a7f4b3e8d6c2a1f"]}'

動画オブジェクト#

Response
{
  "id": "video_4f9d0c2b8e1a47d6a3c5b7e2",
  "object": "video",
  "model": "minimax-h3-character-swap",
  "status": "completed",
  "progress": 100,
  "created_at": 1792915200,
  "completed_at": 1792915288,
  "expires_at": 1793520088,
  "seconds": "5.17",
  "size": "768x1376",
  "prompt": "In front of a weathered concrete wall, soft window light",
  "character_id": null,
  "error": null,
  "url": "https://lovelyrouter.com/v1/videos/video_4f9d0c2b8e1a47d6a3c5b7e2/content",
  "charge_usd": 0.3875,
  "powered_by": "MiniMax H3"
}

status は queued、in_progress、completed、failed、cancelled のいずれかです。失敗した動画には error: {code, message} が付き、課金されません。size は元の動画の向きに合わせ、短辺が 768 ピクセルになります。フレームレートは 24 fps です。

エンドポイント#

リクエスト内容
POST /v1/videos動画を開始。
GET /v1/videos/{id}動画オブジェクト。?wait=1–300 を付けると、queued/in_progress から変わるか時間切れになるまで待ちます。
GET /v1/videos/{id}/contentmp4 ファイル(Range リクエストに対応しているので、プレーヤーでシークできます)。7 日間保存。
GET /v1/videos最近の動画(新しい順)。?limit=1–100、次のページは ?after=<id>。
DELETE /v1/videos/{id}順番待ちの動画をキャンセル(課金なし)、または完了した動画のファイルを削除。

料金#

生成された動画の秒数で課金され、1 本あたり 3〜10 秒です(3 秒未満の結果は 3 秒分として課金)。5.2 秒の動画なら $0.52 です。動画を開始すると、かかりうる最大額($1.00、または seconds × 単価)が残高から確保され、完了時に差額が戻ります。失敗・キャンセルした動画は課金されません。

きれいに仕上げるコツ#

  • 動画:1 人がはっきり写り、自然なペースで動いているもの。速い動きや、体が大きく隠れる場面は苦手です。音声はそのまま残って口の動きを導くので、話している場面でも口元がずれません。
  • 画像:その人だけが写り、顔が見え、均一な光で無地の背景のもの。画像の照明や背景はコピーされませんが、強い色の光は映り込むことがあります。キャラクターシート(同じ人の正面・斜め前・側面・背面を 1 枚にしたもの)は、カメラが人物の周りを動く場面で特に効果的です。描かれるのは 1 人だけです。
  • シーン:prompt で場所を説明すると、元の動画に近い見た目になります。例:「a weathered concrete wall, soft window light」。
  • 髪の形は動画に従い(動画で三つ編みなら三つ編みのまま)、髪の色・顔・服装は画像に従います。

エラー#

ステータスcode / type理由
400consent_requiredconsent が true ではなかった。
400invalid_request_errorファイルがない・読み取れない、ファイルが大きすぎる、seconds が範囲外、input_reference と character_id の両方。
402insufficient_quota残高が確保額に足りない。
404not_found_error存在しないモデルや動画、動画を作らないモデル、またはあなたの保存したキャラクターではない character_id。
429rate_limit_exceededアカウントですでに 5 本の動画が順番待ちかレンダリング中、またはキーのレート制限に達した。

不正利用は /report から報告できます。