メインコンテンツまでスキップ
備考
このページで説明している機能はベータ版です。

動画生成 API

リクエスト 1 本で動画になります。キャラクター名を書けば、画像 API と同じようにその見た目を保ちます。

生成する​

curl -X POST https://api.aicu.ai/v1/video/generate \
-H "Authorization: Bearer $AICU_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "wan3.0-video",
"prompt": "@MeiSoleil が夕暮れの海辺でカメラに手を振る",
"resolution": "720p",
"seconds": 5
}'
{
"id": "5f9c…",
"status": "processing",
"ap_cost": 7000,
"status_url": "https://api.aicu.ai/v1/video/status/5f9c…",
"url": "https://api.aicu.ai/v1/video/file/5f9c…"
}

生成は HTTP の 1 往復より長くかかるので、呼び出しはすぐ 202 と id を返します。status_url を completed になるまでポーリングして、url を取ってください。

curl "https://api.aicu.ai/v1/video/status/$ID" -H "Authorization: Bearer $AICU_API_KEY"
# {"id":"5f9c…","status":"completed","ap_cost":7000,"url":"https://api.aicu.ai/v1/video/file/5f9c…"}

curl -L "https://api.aicu.ai/v1/video/file/$ID" -H "Authorization: Bearer $AICU_API_KEY" -o out.mp4

status は processing / completed / failed の 3 つ。10 秒おきで十分です。5 秒の動画なら 1〜5 分で出ます。

モデルを選ぶ​

model で動画のモデルを選びます。省略すると gemini-omni-1.1-flash になるので、これまでの呼び出しはそのまま動きます。

model提供元解像度秒数向いていること
gemini-omni-1.1-flash(既定)Google360p / 720p / 1080p5〜10(モデルが決める)720p で価格を抑えたいとき。実際にできた長さで精算します
wan3.0-videoAlibaba480p / 720p / 1080p2〜10品質重視。音つき。参照画像 1 枚でキャラクターを保ちます
wan3.0-video-primeAlibaba480p / 720p / 1080p2〜10同じ品質を、標準の 3 分の 1〜半分の時間で

最新の一覧と、モデルごとの範囲・単価は、いつでも GET /v1/models(type: "video")にあります。範囲外のモデル・解像度・秒数は、黙って丸めずに 400 を返します。

パラメータ​

項目意味
model上の表を参照。既定は gemini-omni-1.1-flash
prompt何が起きるか。本文のどこかに @名前 と書くとそのキャラクターが選ばれ、その部分はプロンプトから取り除かれます
character@名前 と同じことを別項目で書く形。登録済みキャラは参照画像を自前で持ちます。自分のキャラクター名なら reference_image が要ります
reference_imageキャラクターの参照画像(base64)。約 8MB まで
first_frame動画の最初のコマにする画像(base64)。絵コンテから動かすとき。reference_image とは同時に使えません
last_frame動画の最後のコマにする画像(base64)。first_frame と組で使うと、そのあいだの動きをモデルが作ります
resolutionモデルによります(上の表)。既定は 720p。価格はここで決まります
secondsモデルによります(上の表)。既定は 5。価格はここで決まります
aspect_ratio16:9(既定)/ 9:16 / 1:1(モデルが対応しているもの)。first_frame を使うときは画像の形に従います
visibilitypublic は権利表記つきで掲載、private は何も残しません

最初と最後のコマを指定する​

始まりと終わりを渡して、そのあいだをモデルに任せます。

{
"model": "wan3.0-video",
"first_frame": "<最初のカットの base64>",
"last_frame": "<最後のカットの base64>",
"prompt": "彼女が窓のほうへ振り向くあいだに、カメラがゆっくり引いていく",
"seconds": 5
}

下のコンタクトシートから 2 コマを選ぶと、光もキャラクターも揃ったまま、時間だけが違う組になります。

料金​

出来上がった動画の秒数 × モデル × 解像度です。1 USD = 10,000 AP。最新の単価は料金ページと GET /v1/models(type: "video")にあります。単価の変更は 7 日前にお知らせで告知します。

**AP は生成開始時に確保し、失敗・タイムアウトのときは全額返します。**失敗した生成は無料です。長さをモデルが決める場合は、上限の長さぶんを確保し、できた長さで精算して差額を返します。1 つの鍵で同時に走らせられるのは 3 本までです。

スコープ​

動画には video スコープが要ります。以前に発行した鍵には付いていません。画像のために発行した鍵が、動画の単価で使われてよいはずがないからです。鍵の管理画面で足すか、新しく発行してください(新規の鍵には公開済みの全スコープが付きます)。

無いまま呼ぶと 403 forbidden_scope(本文に required_scope: "video")が返ります。

キャラクター​

登録済みキャラクターは、名前だけで呼べます。

{ "prompt": "@SakiNoire が夜のネオンの路地を歩く", "seconds": 5 }

自分のキャラクターは、絵を 1 枚添えます(Character API と同じ作法です)。

{ "character": "luc4", "reference_image": "<base64>", "prompt": "カフェでノート PC を打っている" }

参照画像 1 枚から生成した LuC4

この静止画を生んだのと同じ参照画像が、動画ではフレーム間の一貫性を保ちます。プロンプトは「キャラクターの公式プロンプトの外見語 → 場面」の順に。見た目の全体は参照画像が、細部は言葉が支えます。

良い最初の 1 コマを作る​

動画の出来は、出発点の画像で決まります。画像 API がすぐ隣にあるので、そこで作れます。よく効くのがコンタクトシートを作って、それを動画モデルに渡す方法です。

curl -X POST https://api.aicu.ai/v1/images/generations \
-H "Authorization: Bearer $AICU_API_KEY" -H "Content-Type: application/json" \
-d '{"model":"gpt-image-2.5-flare","size":"1024x1536","quality":"medium",
"prompt":"子どもが撮影した写真の数々、3x3、9:16。ローアングル、足元、飼い犬の顔のアップ、空、手のひら、親の顔の下から、床に落ちたおもちゃ。日常の生活感。写真以外の文字やロゴは入れない。"}'

「子どもが撮った写真」と頼むとローアングルが出ます。子どもの目線がそこにあるからです。「素人の失敗写真」と頼むと手ブレ、指の写り込み、逆光の黒つぶれが出ます。そこまで書かなくても出ます。

子どもが撮影した写真素人の失敗写真キャラクターのスナップ
子どもが撮影した写真のコンタクトシート素人の失敗写真のコンタクトシートキャラクターのスナップのコンタクトシート

シートの 1 コマ 1 コマが、そのまま使える最初のフレームです。1 枚を reference_image に渡し、prompt に動きを書いてください。

エラー​

StatusCodeどうするか
400invalid_parametermodel / resolution / seconds / 画像の大きさを確認
402insufficient_apチャージしてください。生成は始まっていません
403forbidden_scope鍵に video スコープを足す
429rate_limited既に 3 本走っています。1 本終わるのを待ってください
5xxgeneration_failed再試行を。確保した AP は返却済みです

サポート​

© 2026 AICU Inc.