概要
VEO 3.1 Official は、Google Veo 3.1 向けの APIYI の 公式リレーチャネル です。Google AI Studio のveo-3.1-generate-preview / veo-3.1-fast-generate-preview 非同期エンドポイントへの透過的なパススルーで、モデル ID、レスポンスフィールド、制約は上流と同一です。リクエストごとの課金、Default グループで利用可能 で、現在利用できる中で最も導入しやすい公式品質の Veo 3.1 チャネルです。
Default グループ + リクエストごとの課金または従量課金の Priority Tokens(専用グループは不要です。純粋な従量課金はサポートされません)。広告用ショート、EC 素材、SNS コンテンツ、製品デモ など、公式品質を最も簡単に導入したい用途に適しています。テキストから動画への API
POST /v1/videos、テキストのみから動画を生成します — JSON リクエストボディ、最もシンプルな入口です。画像から動画への API
POST /v1/videos + input_reference の multipart アップロードで、静止画をクリップにアニメーション化します。公式 vs リバース
ビジュアル API テスト
非同期タスクの検索 / ダウンロード
APIYI の VEO 3.1 公式版を使う理由
Google 公式 / Vertex AI チャネルのドロップイン代替で、導入時の手間, 安定性, コスト にまたがる本番シナリオ向けに最適化されています:公式パススルー · 同一の Model IDs
veo-3.1-generate-preview / veo-3.1-fast-generate-preview)は上流と完全に一致し、リクエストとレスポンスのフィールドおよび制約も 1 対 1 で対応しています。手間のない導入 · グループ切り替え不要
Default グループ で動作し、Pay-per-request または Pay-as-you-go Priority Tokens を利用できます(純粋な Pay-as-you-go はサポートされません)。専用のグループ切り替えは不要で、既存の Pay-per-request Tokens をそのまま使えます。Veo 3.1 における、最も手間の少ない公式品質チャネルです。無制限の同時実行数 · 本番スケール
リクエスト単位の料金 · Google より 60%以上安い
veo-3.1-fast-generate-preview $0.3/req、veo-3.1-generate-preview $1.2/req で、4/6/8 秒および 720p/1080p/4k で一律です。Google の公式 8秒 1080p と比べて 62~68% 節約でき、チャージ特典 を組み合わせるとさらにお得になります。失敗したタスクは課金されません。グローバルな手間なしアクセス
api.apiyi.com に直接接続できます。Google AI Studio / Vertex AI の越境設定は一切不要です。専門サポート · エンタープライズ導入
主な機能
ネイティブ同期オーディオ
4 / 6 / 8 秒の柔軟な長さ
seconds 文字列 enum: "4" / "6" / "8". 1リクエストごとの課金で、長さは価格に影響しません。1080p / 4k ティアには "8" が必要です。3 つの解像度ティア
720p / 1080p / 4k、1リクエストごとの一律料金。横向き(16:9)と縦向き(9:16)を自由に切り替えられます。正確な指示追従
画像から動画へ (input_reference)
非同期タスクモデル
task_id を返します。ステータスは個別にポーリングし、最終動画をダウンロードできます。バッチ管理や失敗時の再開フローに最適です。OpenAI互換プロトコル
base_url=https://api.apiyi.com/v1 + Bearer 認証。生の HTTP または OpenAI SDK の低レベル client.post() で動作します。失敗は無料
status=completed のタスクのみ課金対象です。料金
APIYIはリクエストごとの従量課金です — サポート対象の継続時間/解像度の組み合わせ内では定額で、長時間出力や高解像度出力でも追加料金はありません。ai.google.dev/gemini-api/docs/pricingの公開料金によると、Googleの公式Veo 3.1は秒単位で課金されます。以下の割引は8秒動画で計算しています。
- モデル名ごとにリクエスト単位で課金され、継続時間(4/6/8秒)、解像度(720p/1080p/4k)、または
input_referenceの有無に関係ありません — 4Kを選んでも720pと同じ料金です - 非同期モードでは、生成失敗 / コンテンツポリシーによる拒否 / 容量エラーのいずれも課金されません
- Top-Up Promotions のチャージ特典ティアにより、実質コストはさらに下がります
- 4Kはレンダリングが4〜6倍遅く、ファイルは約10倍大きくなります — 日常利用では1080pをデフォルトにしてください
- Googleの公式4K料金は $0.30/sec(fast)/ $0.60/sec(standard)で、8秒あたり $2.40 / $4.80 です(出典:
ai.google.dev/gemini-api/docs/pricing)
グループ設定
VEO 3.1 Official はDefault グループ(1x)で動作し、専用のグループ切り替えは不要です。Token の課金モードは Pay-per-request または Pay-as-you-go Priority である必要があります。純粋な Pay-as-you-go はサポートされていません(必要に応じて console で Token モードを切り替えてください)。
技術仕様
API エンドポイント
主要パラメータ
seconds(動画の長さ)
長さフィールドの名前は seconds であり(duration ではありません)、文字列でなければなりません("4" / "6" / "8")。数値を渡すと、次のようになります:
metadata.durationSeconds > seconds > 8
metadata.resolution(解像度ティア)
metadata.resolution > size > 720p
⚠️ generateAudio を渡さないでください
Veo 3 / 3.1 は標準で音声対応ですが、generateAudio パラメータは渡してはいけません。上流側で INVALID_ARGUMENT によって拒否されます。音声を制御するには、意図を prompt に書き込んでください:
「海岸の灯台、夕暮れ時。波、遠くの海鳥、弱い風の音、映画のような雰囲気」
Best Practices
用途に応じてモデルを選ぶ
- イテレーション / バッチプレビュー →
veo-3.1-fast-generate-preview($0.3/request) - 最終納品 / 4K →
veo-3.1-generate-preview($1.2/request) - 同じ prompt + シードで両方を実行し、見た目で選びます
まず4秒で検証する
seconds: "4"から始めてカメラの方向とスタイルを検証します(60–90秒のレンダリング、$0.3)。見た目が固まったら、8秒または1080pにスケールアップしてください。同期待機ではなく、非同期ポーリングを使う
task_id を受け取り → GET /v1/videos/{task_id} を8〜10秒ごとにポーリングして status: "completed" になるまで待機 → /content からダウンロードします。webhook はありません。ポーリングのみです。ティアごとにクライアントのタイムアウトを設定する
- 720p / 1080p: 3分のハードタイムアウト
- 4K: 10分のハードタイムアウト
- POST 送信(multipart): 30秒の最小タイムアウト
完了したらすぐにダウンロードする
status が completed に変わったら、自前の OSS / CDN にすぐダウンロードしてください — リモートの task_id に長期依存しないでください。/content エンドポイントは、status が切り替わった直後に 400 を返すことがあります。4秒後に再試行してください(サンプルクライアントにはこれが組み込み済みです)。音声の意図を prompt に埋め込む
generateAudio は渡さないでください(INVALID_ARGUMENT が返ります)。環境音、セリフ、BGM を指定する場合は、prompt に「波、遠くの海鳥、弱い風の音」と書いてください。そちら側でレート制限をかける
エラーコードと再試行
- POST送信タイムアウト: 30秒(multipart アップロードではさらに長く必要になる場合があります)
- ポーリング間隔: 8~10秒; 最大待機時間 720p/1080p 3分, 4K 10分
- 5xx と
failedに対して指数バックオフで再試行(1~2回の試行を推奨) /contentを 4秒間隔で 3~5回再試行してください
FAQ
Official と Reverse チャネルの違いは何ですか? Reverse チャネルはまだ使えますか?
Official と Reverse チャネルの違いは何ですか? Reverse チャネルはまだ使えますか?
veo-3.1-generate-preview / veo-3.1-fast-generate-preview)と一致し、リクエストごとに $0.3 / $1.2、非同期エンドポイントのみです。Reverse(既存の VEO 3.1): Google Flow へのリバースエンジニアリングされたアクセスです。Model IDs は veo-3.1-fast / veo-3.1 / -fl 系で、リクエストごとに $0.15 からと安価です。ストリーミング同期 と非同期モードの両方に対応し、さらに フレームから動画(先頭/末尾フレーム)も使えます。完全版の Official と Reverse の判断マトリクス をご覧ください。両チャネルは共存しているため、ビジネス要件で選んでください。length フィールドは秒数ですか、それとも継続時間ですか? それと、なぜ文字列でなければならないのですか?
length フィールドは秒数ですか、それとも継続時間ですか? それと、なぜ文字列でなければならないのですか?
seconds です(string "4" / "6" / "8")。duration と名付けても認識されず、静かに破棄されて length はデフォルトの 4 秒にフォールバックします。これが「8s を送ったのに 4s しか返らない」問題の根本原因です。なぜ文字列でなければならないかというと、バックエンドの Go 構造体では、このフィールド(内部名 duration)を string と定義しているため、数値はデコーダ層で parse_request_failed: cannot unmarshal number into Go struct field ... duration of type string により拒否されます(そのエラー内の duration はバックエンド内部のフィールド名で、リクエスト自体はまだ seconds を送っています)。覚えておいてください: seconds を送り、値は引用符で囲んでください: "4" / "6" / "8"。ダイアログ / 環境音 / BGM を追加するにはどうすればよいですか? generateAudio を渡せますか?
ダイアログ / 環境音 / BGM を追加するにはどうすればよいですか? generateAudio を渡せますか?
generateAudio パラメータは渡してはいけません(上流は INVALID_ARGUMENT を返します)。音を制御したい場合は、意図を prompt に書き込んでください:「海岸の灯台の夕景。波音、遠くの海鳥、弱い風の音、映画のような雰囲気」
fast と standard はどちらを選ぶべきですか? fast は本当に速いのですか?
fast と standard はどちらを選ぶべきですか? fast は本当に速いのですか?
- 同等のパラメータでは、レンダリング時間はほぼ同じです(720p 8 秒の実測: fast 83 秒、standard 78 秒)。fast は速いのではなく、安いだけです($0.3 対 $1.2)
- デフォルトは
veo-3.1-fast-generate-previewにしてください - 最終納品時や、ディテールの忠実度 / 物理的一貫性が重要なときは
veo-3.1-generate-previewに切り替えてください - 本番で A/B テストする場合は、同じ prompt + seed で両方を実行し、見た目で選んでください
4K は使う価値がありますか?
4K は使う価値がありますか?
- リクエストあたりの価格が同じなので魅力的に見えます
- しかしレンダリングは 4〜6 倍遅い です(720p 80 秒 → 4K 350 秒)
- ファイルサイズは約 10 倍大きくなります(720p 4MB → 4K 40MB)— 帯域とストレージのコストも倍増します
- 1080p であれば、ほとんどの再生シナリオで見た目は十分です
veo-3.1-generate-preview を使い、seconds="8" を設定し(必須)、client timeout を 10 分以上にし、バックグラウンドの非同期タスクとして実行してください。タスクはいつ完了しますか? webhook はありますか?
タスクはいつ完了しますか? webhook はありますか?
- webhook はありません。
GET /v1/videos/{task_id}のポーリングのみです - 推奨ポーリング間隔: 8 秒(実測で十分で、レート制限には触れません)
- 実測時間: 720p / 1080p で 60〜115 秒、4K で 5〜6 分
- client timeout: 720p/1080p は 3 分、4K は 10 分
なぜ GET /content が 400 を返すのですか?
なぜ GET /content が 400 を返すのですか?
status が completed に切り替わった直後は、上流 CDN の同期遅延のため、/v1/videos/{task_id}/content を呼ぶと 400 が返ることがあります。4 秒待って 1 回再試行すると、たいてい解消します(サンプルクライアントは 4 秒間隔で 3〜5 回リトライします)。動画の CDN URL を取得できますか? フロントエンドからエンドポイントを直接叩けますか?
動画の CDN URL を取得できますか? フロントエンドからエンドポイントを直接叩けますか?
video_url / data.url / その他の直接配布可能なリンクもありません。動画を取得する唯一の方法: status: "completed" の後に GET /v1/videos/{task_id}/content を呼び出して、MP4 バイナリストリーム を取得します(Authorization: Bearer ヘッダーが必要です)。標準的な本番運用パターン:- バックエンドがタスク完了後すぐに MP4 をダウンロード → 自前の OSS / CDN に送信
- エンドユーザーには自分の CDN URL を返す
- フロントエンドの
<video>タグは/contentを直接指してはいけません — ブラウザは認証ヘッダーを付けられないため、リクエストは 401 になります
動画はサーバーにどのくらい保持されますか? すぐにダウンロードする必要がありますか?
動画はサーバーにどのくらい保持されますか? すぐにダウンロードする必要がありますか?
task_id を長期的に当てにしないでください。/content は期限切れ後、いずれ 404 になります。なぜ進捗が 50% のままなのですか?
なぜ進捗が 50% のままなのですか?
progress フィールドは粗い粒度で、0 / 50 / 100 の間しか動きません。パーセンテージの進捗バーには使わないでください。スピナーを使うか、「経過 / 想定」を自分で計算してください。失敗した生成も課金されますか?
失敗した生成も課金されますか?
status=completed のタスクのみです。failed / キャンセル済み / content-policy による拒否 / パラメータエラーはすべて無料です。実際の動画出力がなければ課金なしです。seed で完全に同じ動画を再現できますか?
seed で完全に同じ動画を再現できますか?
88888)+ 同じパラメータで fast を 2 回実行すると、ファイルサイズは 9.81 MB と 9.25 MB、md5 も完全に異なり、レンダリング時間も異なりました。ただし seed は飾りではありません。同じ seed の出力はまとまりやすく(5 回テストで、同一グループ内のファイルサイズ差は 6% のみ)、異なる seed は体系的にずれます(グループ間の差は +36.8%)。含意は次のとおりです:- 「安定した見た目」にしたい → seed を固定する
- 「バリエーションを探りたい」 → prompt をいじるより seed を変える
- 「完全再生」をしたい → 諦めて mp4 を保存する
複数の参照画像を渡せますか? 先頭/末尾フレームはどうですか?
複数の参照画像を渡せますか? 先頭/末尾フレームはどうですか?
input_reference で固定、さらに file または Base64 のみで、リモート URL は使えません。Google upstream の Veo 3.1 は multi-reference / first-last-frame / video extension に対応していますが、このチャネルは対応していません。先頭/末尾フレームが必要なら、VEO 3.1 (Reverse) -fl 系列を使ってください。同時実行数の制限はありますか? QPS の上限は?
同時実行数の制限はありますか? QPS の上限は?
動画には透かしや provenance メタデータが入りますか?
動画には透かしや provenance メタデータが入りますか?
- 目に見える透かしはありません
- ただし、MP4 メタデータ内に Google C2PA Content Credentials(Google C2PA Media Services により発行、形式
urn:c2pa:...)が埋め込まれています。エンドユーザーには見えませんが、C2PA ツール(例: Adobe Content Authenticity)で「Veo によって生成された」ことを検証できます - 再配布シナリオでは留意してください。通常は再生に影響しません
公式 OpenAI SDK を直接使えますか?
公式 OpenAI SDK を直接使えますか?
Bearer 認証 + /v1/...)に従っていますが、OpenAI 公式 SDK には videos.create メソッドがありません(/v1/videos はカスタムパスです)。OpenAI SDK の低レベルな client.post() か、生の HTTP を使ってください。生の HTTP が最も簡単です。コード例は テキストから動画の Playground を参照してください。関連ドキュメント
- Text-to-Video Playground —
POST /v1/videos(JSON) インタラクティブなデバッガー + 5言語のコードサンプル - Image-to-Video Playground —
POST /v1/videos(multipart) +input_referenceの利用方法 - Official vs Reverse の判断マトリクス — VEO 3.1 (Reverse) との違い
- チャージ特典 — ボーナス階層と対象チャネル
- API マニュアル — 一般的な呼び出し規約、タイムアウトと再試行のガイダンス
- Google 公式モデルページ:
ai.google.dev/gemini-api/docs/models/veo-3.1-generate-preview - Google の動画生成ドキュメント:
ai.google.dev/gemini-api/docs/video