概要
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 グループ + リクエスト単位課金または従量課金優先トークン(専用グループは不要、純粋な従量課金は非対応)。広告ショート動画、EC 用アセット、ソーシャルメディアコンテンツ、製品デモなど、最もシンプルな導入方法で公式水準の品質を必要とする用途に適しています。テキストからの動画生成 API
POST /v1/videos。テキストのみから動画を生成します — JSON リクエストボディを使用する、最もシンプルなエントリーポイントです。画像からの動画生成 API
POST /v1/videos + input_reference のマルチパートアップロードにより、静止画像をアニメーション化してクリップにします。公式 vs リバース
ビジュアル API テスト
非同期タスク照会 / ダウンロード
AI Agentにインテグレーションを任せる
このpromptをコピーしてCodex / Claude Code / Cursorに貼り付けてください
まずこのページのプレーンテキスト版を取得し(任意のドキュメントURLの末尾に.mdを追加)、プロジェクト独自の技術スタックでコードを記述します。非同期ポーリング、MP4を自身で取得する必要があること、段階的なタイムアウト、厳格な4Kの制約条件はすでに要件に組み込まれています。
このプロジェクトにVEO 3.1 Officialのテキストからの動画生成および画像からの動画生成を統合 / トラブルシューティングしてください。
コードに触れる前にドキュメントを読んでください:このページのプレーンテキスト版を取得するには https://docs.apiyi.com/en/api-capabilities/veo-3-1-official/overview.md を取得します。より詳細なパラメータについては、同様にテキストからの動画生成と画像からの動画生成のページの末尾に
.mdを追加してください…
- 同期待機ではなく、3ステップの非同期フローを使用してください。このチャネルは非同期専用です:
POST /v1/videosでジョブを送信してtask_idを取得し、その後ポーリングします…
合計10項目の要件があります。以下のボタンを使用して完全なpromptをコピーしてください。
このpromptが防いでくれる問題
このpromptが防いでくれる問題
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 に書き込んでください:
「海岸の灯台、夕暮れ時。波、遠くの海鳥、弱い風の音、映画のような雰囲気」
ベストプラクティス
用途に応じたモデルの選択
- イテレーション/一括プレビュー →
veo-3.1-fast-generate-preview($0.3/リクエスト) - 最終納品/4K →
veo-3.1-generate-preview($1.2/リクエスト) - 両方を同じ prompt + seed で実行し、目視で選択します
まずは4秒で検証
seconds: "4" から開始してカメラワークとスタイルを検証します(レンダリング時間:60〜90秒、$0.3)。見た目が確定したら、8秒または1080pにスケールアップします。同期待機ではなく非同期ポーリングを使用
task_id を取得 → status: "completed" になるまで8〜10秒ごとに GET /v1/videos/{task_id} をポーリング → /content からダウンロードします。webhook はサポートされておらず、ポーリングのみとなります。ティア別クライアントタイムアウトの設定
- 720p / 1080p: ハードタイムアウト3分
- 4K: ハードタイムアウト10分
- POST 送信(multipart): 最低30秒
完了後は速やかにダウンロード
status が completed に切り替わったら、直ちに独自の OSS / CDN にダウンロードしてください。リモート側のコピーは約24時間しか保持されないため、リモートの task_id に長期間依存しないでください。/content エンドポイントは、status が切り替わった直後に時々 400 を返すことがあります。その場合は4秒後に再試行してください(サンプルクライアントにはこの処理が組み込まれています)。同じエンドポイントからの 502 はプロバイダーがファイルを取得できないことを意味するため、再試行しても解決しません。音声の意図を prompt に記述
generateAudio は渡さないでください(INVALID_ARGUMENT が返されます)。環境音、セリフ、BGM については、prompt 内で「waves, distant seabirds, low wind sounds」のように指定してください。クライアント側でのレート制限
エラーコードとリトライ
- POST送信タイムアウト: 30秒(multipartアップロードではさらに時間が必要な場合があります)
- ポーリング間隔: 8〜10秒、最大待機時間 720p/1080p は 3分、4K は 10分
- 5xx および
failedに対する指数バックオフリトライ(1〜2回の試行を推奨) /contentから400が返された場合は、最大約30秒間、4秒ごとにリトライ/contentからの400と502は区別して処理:400はリトライで解消されますが、502は解消されません — 2回試行した後に停止し、タスクを失敗としてマークしてtask_idを保持してください
FAQ
公式チャンネル vs リバースチャンネル — 何が違いますか?リバースチャンネルはまだ使えますか?
公式チャンネル vs リバースチャンネル — 何が違いますか?リバースチャンネルはまだ使えますか?
veo-3.1-generate-preview / veo-3.1-fast-generate-preview)、リクエストあたり $0.3 / $1.2 で、非同期エンドポイントのみに対応しています。リバース(既存の VEO 3.1):Google Flowへのリバースエンジニアリングによるアクセスです。モデルIDは veo-3.1-fast / veo-3.1 / -fl シリーズで、リクエストあたり $0.15 からと安価であり、ストリーミング同期モードと非同期モードの両方に加え、フレーム・トゥ・動画(最初/最後のフレーム)にも対応しています。完全な公式 vs リバースの判定マトリクスをご覧ください。両方のチャンネルは共存しているため、ビジネスニーズに合わせて選択してください。length フィールドは秒数ですか、それとも duration ですか?なぜ文字列である必要があるのですか?
length フィールドは秒数ですか、それとも duration ですか?なぜ文字列である必要があるのですか?
seconds です(文字列 "4" / "6" / "8")。duration という名前にしても認識されず、サイレントに破棄されて長さはデフォルトの4秒にフォールバックします。これが「8秒で送信したのに4秒しか得られなかった」根本的な原因です。なぜ文字列でなければならないかというと、バックエンドの 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 内に意図を記述してください:“Coastal lighthouse at dusk; waves, distant seabirds, low wind sounds, cinematic atmosphere”
fast vs standard — どちらを選ぶべきですか?fast は実際に速いですか?
fast vs standard — どちらを選ぶべきですか?fast は実際に速いですか?
- 同等のパラメータでは、レンダリング時間はほぼ同じです(720p 8秒の実測値:fast 83秒、standard 78秒)。fast は高速という意味ではなく、より安価です($0.3 vs $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" を設定(必須)、クライアントのタイムアウトを10分以上に設定し、バックグラウンドの非同期タスクとして実行してください。タスクはいつ完了しますか?webhook はありますか?
タスクはいつ完了しますか?webhook はありますか?
- webhook はありません。
GET /v1/videos/{task_id}をポーリングするのみです - 推奨ポーリング間隔:8秒(実測で十分であり、レート制限にも引っかかりません)
- 実測時間:720p / 1080p は 60〜115秒、4K は 5〜6分
- クライアントタイムアウト:720p/1080p は 3分、4K は 10分
GET /content が 400 または 502 を返します — これらは全く異なる処理が必要です
GET /content が 400 または 502 を返します — これらは全く異なる処理が必要です
400:待つだけで解決します。 status が completed に切り替わった直後は、動画ファイルの同期がまだ完了していないため、/v1/videos/{task_id}/content を呼び出すと一時的に 400 が返されることがあります。このウィンドウは最大約20秒間続くため、約30秒間、4秒ごとにリトライしてください(サンプルのクライアントはすでにこの処理を行っています)。curl の場合、デフォルトでは --retry は 400 をリトライしない点に注意してください — -f --retry-all-errors を追加してください。502:リトライしても解決しません。 レスポンスボディは {"error":{"message":"Upstream service returned status 502"}} のようになります。生成自体は成功しており — GET /v1/videos/{task_id} は引き続き status: "completed" と progress: 100 を返します — しかしプロバイダーがその動画ファイルを取得できません。弊社の実測では数時間後も 502 のままであるため、自動的に回復することはありません。これを無制限のリトライループとして記述しないでください。対処法:- 最大2回リトライします。それでも 502 の場合は、そのタスクを失敗としてマークします
task_idを控えてお問い合わせください — その生成はすでに課金されているため、弊社側で確認して対応いたします- 新しいタスクとして再送信すれば通常は動画が生成されます。prompt を変更する必要はありません
completed と報告される前に動画ファイルが取得可能かどうかがチェックされます。ファイルを取得できない場合、タスクは status: "failed"(理由は error.message に記載)となり、料金は自動的に返金されるため、取得できない動画に対して課金されることはなくなりました。ただし完全に排除できるわけではありません — GET /v1/videos/{task_id} が completed を返すことは、動画が取得可能であることを意味しません。 これらは2つの独立した成功確認として扱ってください。動画の直接URLを取得できますか?フロントエンドから直接エンドポイントを叩けますか?
動画の直接URLを取得できますか?フロントエンドから直接エンドポイントを叩けますか?
video_url(認証不要の直接リンク)と expires_at(完了から約24時間後のタイムスタンプ)が含まれている場合があります。これはすべてのタスクで保証されているわけではなく、有効期限が切れると機能しなくなるため、恒久的なアドレスとして配布しないでください。動画を取得する標準的な方法:status: "completed" の後、GET /v1/videos/{task_id}/content を呼び出して MP4 バイナリストリームを取得します(Authorization: Bearer ヘッダーが必要です)。これはすべてのタスクで機能します。標準的な本番パターン:- タスク完了後すぐにバックエンドで MP4 をダウンロード → 独自の OSS / CDN にプッシュ
- エンドユーザーには自社の CDN URL を提供
- フロントエンドの
<video>タグは/contentを直接参照してはいけません — ブラウザは認証ヘッダーを含めることができず、リクエストは 401 になります。video_urlが存在する場合は、即時プレビュー用に使用できます
動画はサーバーにどのくらいの期間保持されますか?すぐにダウンロードする必要がありますか?
動画はサーバーにどのくらいの期間保持されますか?すぐにダウンロードする必要がありますか?
expires_at フィールドによると約24時間です(このフィールドがない場合は24時間と想定してください)。完了後すぐにダウンロードしてローカルに保存することを強く推奨します — リモートの task_id や video_url に長期的に依存しないでください。期限切れ後はどちらも利用できなくなります。進捗状況(progress)が飛ぶのはなぜですか?
進捗状況(progress)が飛ぶのはなぜですか?
progress フィールドは大まかな粒度となっており、いくつかの固定ステップ間でのみジャンプします(0 / 10 / 30 / 50 / 100 など)。パーセンテージのプログレスバーには使用しないでください。スピナーを使用するか、ご自身で「経過時間 / 想定時間」を計算してください。失敗した生成には課金されますか?
失敗した生成には課金されますか?
status=completed のタスクのみです。failed / キャンセル / コンテンツポリシー違反による拒否 / パラメータエラーはすべて無料です。実際の動画が出力されなければ課金されません。seed でまったく同一の動画を再現できますか?
seed でまったく同一の動画を再現できますか?
88888)+ 同一のパラメータで fast を2回実行した場合 — ファイルサイズは 9.81 MB vs 9.25 MB、md5 は完全に異なり、レンダリング時間も異なります。ただし seed は無意味ではありません:同一 seed の出力はまとまった傾向を示し(5回実行テストでグループ内ファイルサイズのばらつきはわずか6%)、異なる seed では体系的に変化します(グループ間のばらつき +36.8%)。つまり:- 「安定したルック」が欲しい場合 → seed を固定
- 「バリエーションを探索」したい場合 → prompt をいじるのではなく seed を変更
- 「完全な再現」が欲しい場合 → あきらめて mp4 を保存
複数の参照画像を渡せますか?最初/最後のフレームは使えますか?
複数の参照画像を渡せますか?最初/最後のフレームは使えますか?
input_reference に固定されており、ファイルまたは Base64 のみで、リモート URL には対応していません。Google 上流の Veo 3.1 は複数参照 / 最初と最後のフレーム / 動画の延長をサポートしていますが、このチャンネルでは対応していません。最初/最後のフレームを使用する場合は、VEO 3.1 (リバース) の -fl シリーズをご利用ください。同時実行数の制限は?QPS の上限はありますか?
同時実行数の制限は?QPS の上限はありますか?
動画に透かし(ウォーターマーク)や出所のメタデータは含まれますか?
動画に透かし(ウォーターマーク)や出所のメタデータは含まれますか?
- 目に見えるウォーターマークはありません
- ただし、MP4 のメタデータ内に埋め込まれた Google C2PA コンテンツクレデンシャル(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 が最もシンプルです — Text-to-Video 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