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

ライブ動画

見ている間も続いていく終わりのない動画 —— POST /v1/videos/live が約 5 秒ずつの動画をストリーミングし、各チャンクは直前のチャンクの続きから始まります。次に起こることはいつでも変えられます。イベント、操作、料金、制限。

POST /v1/videos/live はライブ動画を開始します。数秒ごとに新しい約 5 秒の mp4 チャンクを届けるサーバー送信イベント(SSE)のストリームです。各チャンクは直前のチャンクの最後の 1 秒から——静止画だけでなく動きごと——続くので、続けて再生すると一つの連続したショットになります。動画は常に現在のプロンプトに従い、プロンプトは実行中いつでも変更できます。開始フレームと、監督——次のショットを毎回書き、再生中にあなたの指示を受け取るチャットモデル——を指定できます。コードなしで Playground から試せ、画像モデルで最初のフレームを描くこともできます。

モデル#

モデル料金生成内容
ltx-live生成した動画 1 秒あたり $0.019、1 セッション最低 $0.42LTX-2.5、横 704×384 または縦 384×704、24 fps、音声付き。実時間より速く生成します:5 秒のチャンクを約 3 秒で。最初のフレームの人物と場所をストリームの最後まで保ちます。

当社の GPU 上で creative-hosted チャネルグループとして動作し、LTX 規約の対象です。すべてのリクエストで consent: true を設定し、規約とその順守の責任を受け入れます。

ストリームを開始する#

curl -N https://lovelyrouter.com/v1/videos/live \
  -H "Authorization: Bearer $LOVELY_API_KEY" \
  -H "content-type: application/json" \
  -d '{"model": "ltx-live", "prompt": "A fox trots through fresh snow at dusk, the camera tracking beside it", "seconds": 120, "consent": true}'

リクエストボディ(JSON、または image をファイルで送る multipart)

modelstring必須

ltx-live。

promptstring必須

画面に映るもの・起こること:被写体、動き、場所、光、カメラ。最大 1,000 文字。短いプロンプトほど速く生成されます。

secondsnumberデフォルト 60

生成する動画の最大秒数、5〜600。そこでストリームは終わります。停止や接続の切断で早めに終わることもあります。

sizestringデフォルト 704x384

704x384(横)または 384x704(縦)。

imagefile or string

開始フレーム:ファイル、http(s) URL、または data: URL。PNG・JPEG・WebP、最大 15 MB。size に合わせて中央から切り抜かれます。任意の画像モデルで作って渡せます。このフレームはストリーム全体の参照にもなり、どれだけ続いても顔・服装・部屋がこのフレームのまま保たれます(指定しない場合は最初のチャンクが参照になります)。

directorstring or object

各チャンクのプロンプトを書くチャットモデル:モデル ID、またはスタイルや物語のメモ付きの {"model": "…", "instructions": "…"}(最大 2,000 文字)。監督を参照。

voicefile or string

話者の声:音声クリップ(WAV、MP3、M4A、Ogg、FLAC、WebM、最大 15 MB)をファイル、http(s) URL、data: URL で。最初の約 5 秒の話し声を使い、すべてのチャンクがその声で話します。声を参照。

keep_voicebooleanデフォルト true

voice がないとき:話し声のある最初のチャンクの声を以降のすべてのチャンクで保ちます。false:チャンクごとに声を作ります。

camerastringデフォルト free

fixed で固定アングルのワンショット:カメラは動かず切り替わらず、場所もそのまま。固定カメラを参照。

seedinteger

再現可能なチャンク:チャンク n は seed + n を使います。

consentboolean必須

true:LTX 規約に同意します。

イベント#

イベントタイミングデータ
session最初セッションオブジェクトと seconds_per_chunk、price_per_second、price_min(1 セッションの最低料金)
statusGPU の起動中(state: "starting")、監督の執筆中("directing")、チャンクの生成に時間がかかるとき("rendering")、約 10 秒ごと。監督が失敗したとき 1 回("director_error"、動画は直前のプロンプトのまま)state、chunk、waiting_s、error
next監督が次のチャンクのプロンプトを書いたときindex、prompt、by
chunk動画約 5 秒ごとに 1 つindex、url(mp4)、prompt(従ったプロンプト)、by(director または you)、seconds、total_seconds、render_s、charge_usd(ここまで)
end最後reason(max_seconds、stopped、client_left、insufficient_quota、error)、error、seconds、charge_usd

温まった GPU がないときは最初のチャンクに時間がかかります。GPU の起動に最大 1 分ほどかかり、その間 status イベントが届きます。その後は再生より少し速くチャンクが届きます。2 つバッファしてから再生を始め、1 つ終わるたびに次を再生してください —— 2 つの <video> 要素を入れ替えれば途切れません。

チャンクの URL に API キーは不要で(それぞれ推測できないパスを持ちます)、7 日間保存されます。

監督#

director を指定すると、チャットモデルがすべてのチャンクのプロンプトを書きます。あるチャンクの生成中に、「続けて」と言われたように次のプロンプトを書きます。あなたの prompt(物語)、ここまでの映像(直近最大 15 ショット、あなたの指示は出した位置に)、その後のあなたの指示から——同じ人物、場所、雰囲気を保ち、ショットごとに少しずつ展開を進めます。各プロンプトには、画面に何が映り、何が起き、カメラがどう動き、何が聞こえるかを書きます——モデルは音も生成します。台詞は誰が話すかを添えて引用符に入れ、1 チャンクあたり約 10 語(約 5 秒で話せる量)。長い話は前の台詞が止まったところから次のチャンクへ続けます。呼び出しは通常のチャット呼び出しと同じくあなたのキーで行われ、そのモデルの料金で課金され、ログに記録されます。速くて安いモデルで十分です。1 回の呼び出しで 2 ショットを書き、1 回あたり約 10 秒(2 チャンク分)の余裕があります。遅いと書き終わるまで映像が止まります——claude-haiku-5.5 は約 6 秒です。数チャンク先までしか書きません:完成したチャンクが再生待ちの間は、そのチャンクの再生が始まるまで次の呼び出しを待ち、新しい指示があればまだ撮っていないショットをすぐに書き直すので、指示は数秒で映像に反映されます。

cURL
curl -N https://lovelyrouter.com/v1/videos/live \
  -H "Authorization: Bearer $LOVELY_API_KEY" -H "content-type: application/json" \
  -d '{"model": "ltx-live", "prompt": "A woman walks home through a rainy city at night", "seconds": 300,
       "director": {"model": "claude-haiku-5.5", "instructions": "Slow, moody, film noir"}, "consent": true}'

再生中に次に起こってほしいことを伝えます:

cURL
curl https://lovelyrouter.com/v1/videos/live/LIVE_ID/direct \
  -H "Authorization: Bearer $LOVELY_API_KEY" -H "content-type: application/json" \
  -d '{"message": "A stray dog starts following her"}'

指示は次に書かれるプロンプトに反映されます。その後はここまでの映像の中の指示を出した位置に残るので、変化(新しい場所、雰囲気、言語)は続き、出来事は一度だけ起こります。プロンプトが書かれた後に届いた指示は、そのチャンクが始まる前にプロンプトを書き直して反映します。1 セッションの指示は最大 100 件で、セッションオブジェクトに一覧されます。

固定カメラ#

"camera": "fixed" にすると、配信全体が固定アングルのワンショットになります——カメラに向かって話す人、部屋、窓など。監督には、物語や指示が何を言っても、カメラは動かず切り替わらず、場所も変わらず、動くのは人だけだと伝えます。モデルに送るプロンプト(監督のものも、POST …/prompt によるあなた自身のものも)には、すでに書かれていない限り末尾に "Static camera, locked-off shot." が付きます。chunk イベントは実際に送ったプロンプトを報告します。

長い固定ショットは少しずつ背景が劣化します:各チャンクは前のチャンクが終わったところから始まるので、小さな劣化が積み重なります。固定カメラでは、各チャンクの開始フレームを整えます——人物と変化した部分はそのまま、それ以外は最初に保存したきれいな部屋の画像から。映像そのものには手を加えないので、部屋の自然な動きは残ります。構図が変わったら、きれいな画像を取り直します。

声#

各チャンクは音を個別に作るので、話す人の声が数秒ごとに変わってしまいます。デフォルトでは、話し声のある最初のチャンクの声を保ちます:以降のすべてのチャンクに、そのクリップを話者の声として渡します。voice を送れば自分で選べます——はっきりした話し声を約 5 秒、話者は 1 人。"keep_voice": false でオフにします。

次に起こることを変える#

cURL
curl https://lovelyrouter.com/v1/videos/live/LIVE_ID/prompt \
  -H "Authorization: Bearer $LOVELY_API_KEY" -H "content-type: application/json" \
  -d '{"prompt": "It starts to snow harder; the fox stops and looks up"}'

次に生成が始まるチャンクは新しいプロンプトをそのまま使います(生成中のチャンクはそのまま)。監督がいる場合は、そこから続きを書きます。LIVE_ID は session イベントの id、またはレスポンスヘッダー x-lovely-request-id です。

POST /v1/videos/live/LIVE_ID/stop は生成中のチャンクの後でセッションを終えます。接続を閉じても終わります。

セッション#

GET /v1/videos/live/LIVE_ID はセッションオブジェクトを返します:id、object: "video.live"、model、status(live、stopping、ended)、prompt、size、seconds(ここまでの生成秒数)、max_seconds、chunks(ここまでの全チャンク URL)、camera、voice(keep、upload、off)、director、directions、end_reason、error、charge_usd(終了後)。

料金#

生成した動画の秒数に応じて課金され、1 セッションごとに最低料金があります(ltx-live は $0.42、動画約 22 秒分:GPU を起動して待機させる費用です)。監督の呼び出しはチャット呼び出しとして別途課金されます。セッション開始時に、かかりうる最大額 —— seconds × 単価(最低料金以上) —— を残高から確保します。残高が少ない場合は確保額も少なくなり、使い切った時点でストリームは insufficient_quota で終わります。セッション終了時に確保は解除され、生成した秒数が 1 回の呼び出しとしてログに記録されます。当社のエラーで終わったセッションは、最低料金なしで、生成した動画の分だけ課金されます。

制限#

  • 進行中のセッションは 1 アカウントにつき 1 つ。最初のセッションが終わるまで、2 つ目は 429 で拒否されます。
  • 各モデルは少数の GPU で提供されます。すべて使用中のとき、新しいセッションは 503 と retry-after を受け取ります。
  • セッションは最長 600 秒。続けたい場合は新しいセッションを開始し、最後のチャンクの最終フレームを image として渡せば同じショットの続きになります。