tagru video
AI で動画を生成します。生成には数分から数十分かかるため、開始(create)と、進み具合・完成した動画の URL の確認(get / list)を分けています。 生成する動画は、TAGRU の画面の動画生成(プレミアム)と同じもので、画面の履歴にも出ます。
tagru video [list] [--status <queued|running|done|error|cancelled>] [--limit <n>] [--cursor <id>] [--active] [--workspace <id>] [--target <prod|test|localhost>] [--json]
tagru video get <job-id> [--workspace <id>] [--target <prod|test|localhost>] [--json]
tagru video models [--workspace <id>] [--target <prod|test|localhost>] [--json]
tagru video estimate [--seconds <60|90|120>] [--model <id>] [--resolution <値>] [--aspect-ratio <値>] [--sound] [--workspace <id>] [--target <prod|test|localhost>] [--json]
tagru video create <実現したいこと> [--seconds <60|90|120>] [--model <id>] [--resolution <値>] [--aspect-ratio <値>] [--sound] [--max-jpy <円>] [--request-id <id>] [--yes] [--workspace <id>] [--target <prod|test|localhost>] [--json]使える条件と料金
動画生成の機能が有効なアカウントだけで使えます。個人ではご本人、ワークスペースではオーナーに有効になっていれば、メンバーも使えます
有効になっていないときは、どのサブコマンドも見積・開始の前に止まり、次のエラー(
403・forbidden)になります。料金は発生しません。お問い合わせページから申請してくださいエラー(403): Video generation is not enabled for this account. Please apply from the contact page: https://tag-ru.com/contact No charges were made. (…)生成は従量課金です。
createは開始の前に上限見積を出して確認します(--max-jpy <円>か--yesで省略)カード決済のアカウントは、デポジット(前払い)の残高から支払います。ワークスペースではオーナーの残高を使います。開始時に上限見積の全額を残高から引き、完成後に実際の金額との差額を戻します。残高が上限見積に足りないときは、開始せずにエラーで終わります(料金は発生しません)。TAGRU の画面の「プラン」ページでチャージしてから実行し直してください
請求書払いのアカウントは、デポジットを使わず月ごとに請求します
サブコマンド
| サブコマンド | 内容 |
|---|---|
list(省略可) | 動画のジョブの履歴(作成日時の新しい順)。状態で絞り込み、--cursor で続きをたどれます。tagru video は tagru video list と同じです |
get <job-id> | ジョブ 1 件の進み具合。完成していれば動画の URL |
models | 使えるモデルと、指定できる解像度・縦横比・音声 |
estimate | 上限見積とデポジットの残高を出す(開始しない。料金は発生しません) |
create <実現したいこと> | 動画の生成を開始する(書き込み・料金が発生します)。完成は待ちません |
オプション
| オプション | 内容 |
|---|---|
--status <状態> | その状態のジョブだけを出す(queued / running / done / error / cancelled)。list のみ |
--limit <n> | 1 回に出す件数(既定 20、100 まで)。list のみ |
--cursor <id> | 前の一覧の続きから出す(nextCursor / 続きの案内に出る ID)。list のみ |
--active | 生成中(待機中・生成中)のジョブをすべて出す(--status / --limit / --cursor とは一緒に使えない)。list のみ |
--seconds <60|90|120> | 尺の上限(秒)。既定は 60。内容に合わせて短くなることがあります。create / estimate |
--model <id> | モデル(tagru video models の ID)。省略すると既定のモデル。create / estimate |
--resolution <値> | 解像度(モデルが対応しているときだけ。省略するとモデルの既定)。create / estimate |
--aspect-ratio <値> | 縦横比(モデルが対応しているときだけ。省略するとモデルの既定)。create / estimate |
--sound | 音声付きで生成する(モデルが対応しているときだけ。省略すると音声なし)。create / estimate |
--max-jpy <円> | 了承した料金の上限(円)。上限見積がこれ以下なら確認なしで開始し、超えたら開始しません。サーバーにも渡すので、開始の直前に見積が上がったときもサーバーが止めます(409)。create のみ |
--request-id <id> | 開始のリクエスト ID(8〜128 文字の英数字・-・_)。開始が時間切れ・5xx で終わったときに案内された値を付けて実行し直すと、開始済みならそのジョブを返し、二重に生成・課金しません。省略すると実行のたびに新しく作ります。create のみ |
--yes | 開始前の確認を省く(金額は確かめない)。create のみ |
--workspace <id> | ワークスペース(tagru use で保存した値より優先) |
-t, --target <name> | 接続先 |
--json | JSON で出力する |
- ワークスペースを選んでいない(
tagru useも--workspaceも無い)ときは、個人の動画を表示・生成します - 一覧(履歴)は作成日時の新しい順です。続きがあると
続きがあります。…--cursor <ID>…と出るので、同じ--status/--limitを付けて--cursorで次をたどります - 進み具合は TAGRU の画面では自動で更新されますが、CLI では
get/listを実行したときの状態を返します(画面と同じ保存済みの状態)。数分おきに確かめてください
動画の生成(create)
tagru video create "新商品のコーヒー豆を、焙煎から一杯になるまで紹介する" --seconds 60- 実現したいこと(1,000 文字まで)・尺・モデルの指定を確かめます(合わなければ通信せずに
usage_error) - モデルの一覧と上限見積を取得します。デポジットの残高が上限見積に足りなければ、ここで止まります
- 上限見積を見せて確認します(
y/N)。--max-jpyを付けたときは確認せず、上限見積が--max-jpyを超えたら開始せずに終わります(usage_error。料金は発生しません)。端末でない環境(スクリプト・AI エージェントなど)では--max-jpyか--yesが無いと失敗します(終了コード1) - 生成を開始し、ジョブ ID を出して終わります。進み具合と完成した動画の URL は
tagru video get <ジョブ ID>で確認します
動画の生成には料金が発生するため、開始前に見積を確認します。確認できない環境では、`tagru video estimate` で出した上限見積を --max-jpy <円> に付けるか、--yes を付けて実行してください。- 上限見積は、尺を使い切った場合の金額です。実際の請求は、生成された尺に応じてこれ以下になることがあります
- 開始の素材(スタート画像・素材画像)は CLI からは指定できません。実現したいことから、AI がスタート画像を作ります。素材を使うときは TAGRU の画面から生成してください
- 書き込みのコマンドです。読み取りだけのログインだと
エラー(403): この操作には書き込みの権限がありません。…になります。tagru login --writeでログインし直し、同意画面で書き込みを許可してください - 開始のたびにリクエスト ID を作って送ります。サーバーは同じリクエスト ID の開始を新しく作らず、開始済みのジョブを返します
- 開始は 120 秒で打ち切ります。タイムアウト(
network_error)・サーバーのエラー(5xx)のときは、同じリクエスト ID で 1 回だけ自動でやり直します(開始済みならそのジョブを受け取るので、二重に生成・課金しません)。それでも失敗したときは、サーバーでは開始していることがあるため、エラーのメッセージで--request-id <id>を案内します。同じ内容にその--request-idを付けて実行し直してください(開始済みならそのジョブを返します)。--request-idでの実行し直しでは、手元での残高の確認は行わず、サーバーが確かめます - 同じ
--request-idを内容(実現したいこと・尺・モデル・--max-jpyなど)の違う開始に使うと、新しくは開始せずにエラー(409)になります。このときも、その--request-idのジョブは開始済みです。メッセージのジョブ ID をtagru video getで確かめてください(--request-idを外して開始し直すと二重に課金されます) - 前に開始したジョブが返ったときは、そう表示します(
--jsonではitem.reusedがtrue)。ジョブが作られていても開始の処理が終わったことを確かめられないときは、成功とせずにエラーで終わります(数分おいてtagru video getで確かめてください) - やり直し・取り消しは CLI からはできません(TAGRU の画面から行ってください)
出力例
$ tagru video create "新商品のコーヒー豆を紹介する" --seconds 90
動画を生成します(モデル: sample/video-a、最大 90 秒)。
料金が発生します。上限見積: ¥1,200(尺を使い切った場合の金額で、実際の請求はこれ以下になることがあります)。
デポジットの残高: ¥5,000(開始時に上限見積の全額を残高から引き、完成後に実際の金額との差額を戻します)
よろしいですか? [y/N] y
ワークスペース: ws-xxxx
動画の生成を開始しました。
ジョブ ID: job-0003
状態: 待機中
モデル: sample/video-a
尺: 最大 90 秒
上限見積: ¥1,200
デポジットの残高(開始前): ¥5,000
開始時に上限見積の全額を残高から引き、完成後に実際の金額との差額を戻します。
生成には数分から数十分かかります。`tagru video get job-0003` で進み具合と、完成した動画の URL を確認できます。確認で y / yes 以外(空行を含む)を答えると、開始せずに 生成を取りやめました。料金は発生していません。 と出して終了コード 0 で終わります。 確認の文言は標準エラー出力に出します。
端末でない環境(AI エージェントなど)では、先に estimate で上限見積を確かめて利用者の了承を得てから、その金額を create の --max-jpy に付けて開始します(条件を変えて見積が上がったときは開始しません)。
$ tagru video estimate --seconds 90
ワークスペース: ws-xxxx
モデル: sample/video-a
尺: 最大 90 秒
上限見積: ¥1,200
デポジットの残高: ¥5,000
上限見積は尺を使い切った場合の金額で、実際の請求はこれ以下になることがあります。見積だけでは料金は発生しません。$ tagru video get job-0001
ワークスペース: ws-xxxx
ID: job-0001
状態: 生成中(1 / 4 区切り)
進み具合: 2 本目を生成しています
モデル: sample/video-a
尺: 最大 60 秒
上限見積: ¥1,200
作成日時: 2026-09-01 00:00
更新日時: 2026-09-01 00:05
実現したいこと: 新商品の紹介
まだ完成していません。数分おいてから `tagru video get job-0001` で確認してください。完成すると 状態: 完成 になり、動画の URL と確定した 請求額 が加わります。失敗したときは 失敗の理由 が出ます。
$ tagru video
ワークスペース: ws-xxxx
ID 作成日時 状態 尺 実現したいこと
job-0001 2026-09-01 00:00 生成中 最大 60 秒 新商品の紹介
job-0002 2026-09-01 00:00 完成 最大 60 秒 店舗の紹介
`tagru video get <ID>` で進み具合と、完成した動画の URL を表示できます。別のワークスペースのジョブ ID を指定すると、動画のジョブが見つかりません: … のエラー(404)になります。
--json
tagru video --json は一覧の外枠(items)に、続きを読むときに --cursor に渡す nextCursor(続きが無ければ null)を足して出します。tagru video get --json は詳細の外枠(item)で出します。
{
"target": "prod",
"workspaceId": "ws-xxxx",
"item": {
"id": "job-0002",
"status": "done",
"phase": "finalizing",
"targetSeconds": 60,
"modelId": "sample/video-a",
"intent": "店舗の紹介",
"createdAt": "2026-09-01T00:00:00+00:00",
"updatedAt": "2026-09-01T00:05:00+00:00",
"progressMessage": "",
"completedSegments": 4,
"totalSegments": 4,
"estimateJpy": 1200,
"claimJpy": 900,
"videoUrl": "https://api.example.com/file/object/sample/final.mp4",
"errorMessage": ""
}
}| 項目 | 型 | 内容 |
|---|---|---|
id | string | ジョブの ID(tagru video get に渡す) |
status | string | queued(待機中)/ running(生成中)/ waiting_input(回答待ち。今は使われておらず、古いジョブにだけ残る)/ done(完成)/ error(失敗)/ cancelled(取り消し済み) |
phase | string | 生成の段階(analyzing / planning / generating / concatenating / finalizing など) |
targetSeconds | number | null | 尺の上限(秒) |
modelId | string | モデルの ID |
intent | string | 実現したいこと |
createdAt | string | null | 作成日時(ISO 8601) |
updatedAt | string | null | 更新日時(ISO 8601) |
progressMessage | string | 進み具合の説明(get のみ) |
completedSegments | number | null | 生成済みの区切りの数(計画が決まる前は null。get のみ) |
totalSegments | number | null | 区切りの数(計画が決まる前は null。get のみ) |
estimateJpy | number | null | 開始時の上限見積(円。get のみ) |
claimJpy | number | null | 確定した請求額(円。完成の後に入る。get のみ) |
videoUrl | string | null | 完成した動画の URL(完成するまでは null。get のみ) |
errorMessage | string | 失敗したとき・TAGRU が自動で取り消したときの理由(get のみ) |
tagru video models --json は一覧の外枠(items)で出します。
| 項目 | 型 | 内容 |
|---|---|---|
id | string | モデルの ID(create の --model に渡す) |
label | string | モデルの名前 |
isDefault | boolean | --model を省いたときに使うモデルか |
resolutionOptions | string[] | --resolution に指定できる値(空なら指定できない) |
aspectRatioOptions | string[] | --aspect-ratio に指定できる値(空なら指定できない) |
supportsSound | boolean | --sound を指定できるか |
tagru video estimate --json は詳細の外枠(item)で出します。
| 項目 | 型 | 内容 |
|---|---|---|
modelId | string | 見積に使ったモデルの ID |
targetSeconds | number | 尺の上限(秒) |
estimateJpy | number | null | 上限見積(円) |
depositRequired | boolean | デポジットの残高から支払うか(請求書払いは false) |
depositBalanceJpy | number | null | デポジットの残高(円。デポジットを使わないときは null) |
depositSufficient | boolean | 残高が上限見積に足りるか(デポジットを使わないときは true)。false なら create は開始せずに止まります |
tagru video create --json は詳細の外枠(item)で、開始の結果だけを出します。進み具合は tagru video get <jobId> --json で取得してください。
{
"target": "prod",
"workspaceId": "ws-xxxx",
"item": {
"started": true,
"jobId": "job-0003",
"status": "queued",
"requestId": "3f2b8c1e-5d4a-4b6f-9c2e-7a1d0e8f6b5c",
"reused": false,
"createdAt": "2026-09-01T00:00:00+00:00",
"modelId": "sample/video-a",
"targetSeconds": 90,
"estimateJpy": 1200,
"depositRequired": true,
"depositBalanceJpy": 5000
}
}| 項目 | 型 | 内容 |
|---|---|---|
started | boolean | 開始したか(確認で取りやめたら false) |
jobId | string | null | 開始したジョブの ID(取りやめたら null) |
status | string | null | 開始直後の状態(取りやめたら null) |
requestId | string | null | 開始に使ったリクエスト ID(取りやめたら null)。同じ値を --request-id に渡すと、二重に開始せずに同じジョブを返します |
reused | boolean | このリクエスト ID で前に開始したジョブを返したか(true なら新しくは開始・課金していません。status と createdAt で確かめてください) |
createdAt | string | null | ジョブの作成日時(取りやめたら null)。reused のときは前に開始した日時 |
modelId | string | 使ったモデルの ID |
targetSeconds | number | 尺の上限(秒) |
estimateJpy | number | null | 上限見積(円) |
depositRequired | boolean | デポジットの残高から支払うか(請求書払いは false) |
depositBalanceJpy | number | null | 開始前のデポジットの残高(円。デポジットを使わないときは null) |
エラー
| メッセージ | 対処 |
|---|---|
エラー(403): Video generation is not enabled for this account. … | 動画生成の機能が有効になっていません(または参加していないワークスペースです)。料金は発生していません。お問い合わせページから申請してください |
デポジットの残高が足りません(…)。動画の生成は開始していません。… | 料金は発生していません。TAGRU の画面の「プラン」ページでチャージしてから実行し直してください(api_error) |
エラー(402): デポジットの残高が足りないため、動画の生成を開始できませんでした。… | 見積の後に残高が減った場合です。料金は発生していません。チャージしてから実行し直してください |
エラー(409): 開始の直前に取り直した上限見積が --max-jpy を超えたため… | 料金は発生していません。tagru video estimate で見積を確かめ直し、利用者の了承を得てから実行し直してください |
エラー(503): … サーバーでは生成を開始している可能性があります … --request-id … を付けて実行してください。…(または network_error) | 自動のやり直しも失敗しました。サーバーでは開始していることがあります。案内された --request-id を付けて同じ内容で実行し直してください(開始済みならそのジョブを返し、二重に生成・課金しません) |
エラー(409): この --request-id では動画の生成が既に開始されています… | この --request-id のジョブは開始済みです(括弧内にジョブ ID)。同じ動画のつもりなら、新しく開始せずに tagru video get <ジョブ ID> で確かめてください(新しく開始すると二重に課金されます)。別の動画を作るときだけ --request-id を付けずに実行してください |
このリクエスト ID のジョブ(…)は、開始に失敗して終わっています… / …取り消されて終わっています… | そのリクエスト ID のジョブは、開始の前に終わっています(失敗で終わったときは課金されていません。取り消されたときは、課金の有無は TAGRU の画面で確かめてください)。同じ --request-id では同じジョブが返るだけなので、作り直すときは --request-id を付けずに実行してください(api_error) |
このリクエスト ID のジョブ(…)は作られていますが、開始の処理が終わったことを確かめられません… | 新しく開始せず、数分おいて tagru video get <ジョブ ID> で確かめてください。開始の処理が途中で止まっていた場合は、しばらくすると TAGRU が自動で取り消し(status が cancelled になり、理由は errorMessage に入ります)、デポジットから引かれていた分は確かめたうえで返金します。お問い合わせは要りません。取り消された後に作り直すときは、--request-id を付けずに実行してください(api_error) |
エラー(403): この操作には書き込みの権限がありません。… | tagru login --write でログインし直し、同意画面で書き込みを許可してください |