メインコンテンツへスキップ

概要

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 チャネルです。
🎬 ハイライト: Google AI Studio への透過的なパススルー + ネイティブ同期オーディオ + 柔軟な 4 / 6 / 8 秒の動画長 + 3段階の解像度ティア(720p / 1080p / 4k)+ $0.3 からのリクエスト単位課金 + Default グループ + リクエスト単位課金または従量課金優先トークン(専用グループは不要、純粋な従量課金は非対応)。広告ショート動画、EC 用アセット、ソーシャルメディアコンテンツ、製品デモなど、最もシンプルな導入方法で公式水準の品質を必要とする用途に適しています。
⚠️ /content 経由でダウンロードし、自身で再ホストしてください: status: "completed" になったら、エンドユーザーに配信する前に GET /v1/videos/{task_id}/content を呼び出して MP4 バイナリを取得し、ご自身の OSS / CDN に保存してください。完了レスポンスには video_url(認証不要の直接リンク)が含まれる場合もありますが、これは約24時間後に期限切れとなり(expires_at を参照)、すべてのタスクで保証されているわけではありません。そのため、一時的なプレビューにのみ使用し、永続的なアドレスとしては決して使用しないでください。詳細は以下の API エンドポイント を参照してください。

テキストからの動画生成 API

POST /v1/videos。テキストのみから動画を生成します — JSON リクエストボディを使用する、最もシンプルなエントリーポイントです。

画像からの動画生成 API

POST /v1/videos + input_reference のマルチパートアップロードにより、静止画像をアニメーション化してクリップにします。

公式 vs リバース

既存の VEO 3.1 (リバースチャネル) との比較・選定マトリクスです。

ビジュアル API テスト

iCover ビジュアルテストツールでこのエンドポイントを直接デバッグできます — コードは不要です。

非同期タスク照会 / ダウンロード

送信された動画タスクの表示と動画リンクのダウンロードを APIYI コンソールで行えます — 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を追加してください…

  1. 同期待機ではなく、3ステップの非同期フローを使用してください。このチャネルは非同期専用です:POST /v1/videosでジョブを送信してtask_idを取得し、その後ポーリングします…

合計10項目の要件があります。以下のボタンを使用して完全なpromptをコピーしてください。

APIYI の VEO 3.1 公式版を使う理由

Google 公式 / Vertex AI チャネルのドロップイン代替で、導入時の手間, 安定性, コスト にまたがる本番シナリオ向けに最適化されています:

公式パススルー · 同一の Model IDs

Google AI Studio の Veo 3.1 非同期エンドポイントへの透過的なパススルーです。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 のアカウントごとのティア上限はありません。

リクエスト単位の料金 · 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 の越境設定は一切不要です。

専門サポート · エンタープライズ導入

当社チームは動画生成に深い知見があります: prompt engineering、解像度選定、バッチ制作、後処理まで対応します。企業のお客様向けに、PoC から本番までの技術サポートをフルで提供します。

主な機能

ネイティブ同期オーディオ

Veo 3.1 は 同期オーディオ付きの動画(環境音、会話、音楽)をネイティブに出力します。別途オーディオのポストプロダクションは不要です。プロンプトで音声の意図を指定してください。

4 / 6 / 8 秒の柔軟な長さ

seconds 文字列 enum: "4" / "6" / "8". 1リクエストごとの課金で、長さは価格に影響しません。1080p / 4k ティアには "8" が必要です。

3 つの解像度ティア

720p / 1080p / 4k、1リクエストごとの一律料金。横向き(16:9)と縦向き(9:16)を自由に切り替えられます。

正確な指示追従

Veo 3.1 は、カメラの動き、物体物理、キャラクター表現の忠実度でこのティアをリードします。豊富なカメラ言語キーワード(push/pull/pan/dolly、low/high angles)に対応しています。

画像から動画へ (input_reference)

1 枚の画像を視覚的なアンカーとしてアップロードし、静止コンテンツをアニメーション化します。画像から動画へ を参照してください。

非同期タスクモデル

submit はすぐに 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 モードを切り替えてください)。
導入時の手間が少ない: VEO 3.1 Official は Default グループで動作し、Pay-per-request と Pay-as-you-go Priority の両方を受け付けます。専用グループの設定も不要です — 既存の Pay-per-request Token をそのまま使い、base_url を変更するだけの「ゼロ設定」導入に最適です。

技術仕様

1080p / 4k 解像度では、seconds は "8" である必要があります — "4" または "6" はアップストリームで拒絶されます。720p では3種類すべての時間がサポートされています。

API エンドポイント

⚠️ /content 経由でダウンロードしてください。video_url は一時的なプレビュー専用です動画を取得する標準的な方法は GET /v1/videos/{task_id}/content であり、MP4バイナリストリームを返します(Authorization: Bearer ヘッダーが必要です)。留意事項:
  • 完了時のレスポンスには video_url(認証不要の直接リンク)および expires_at(約24時間後)が含まれる場合がありますが、すべてのタスクで保証されているわけではないため、コード側で存在しない場合を処理する必要があります
  • フロントエンドでは /content エンドポイントを <video> タグに直接設定できません。認証ヘッダーのないブラウザリクエストは401になります。期限切れになるまでは、video_url を一時的なプレビューに使用できます
  • status: "completed" になったら直ちにMP4をダウンロードし、独自のOSS / CDNに保存した上で、エンドユーザーには自社のURLを提供してください
  • リモート側のコピーは約24時間保持されます。動画の取得において、リモートの task_id や video_url に長期的に依存しないでください
エンドポイントの選択: プライマリは api.apiyi.com です。バックアップゲートウェイ b.apiyi.com も同一の動作をします。

主要パラメータ

⚡ パラメータの完全リファレンス: model / prompt / seconds / size / metadata.* の型、デフォルト値、制約を含む完全な表は、テキストから動画 - パラメータリファレンス へ移動してください。このセクションでは、特に落とし穴になりやすい 3 つのパラメータ のみを解説します。

seconds(動画の長さ)

長さフィールドの名前は seconds であり(duration ではありません)、文字列でなければなりません("4" / "6" / "8")。数値を渡すと、次のようになります:
よくある落とし穴: フィールド名を duration にしても、黙って無視されます。 duration はこのチャンネルでは認識されないため → 破棄されるため → 長さはデフォルトの 4 秒 にフォールバックします:
  • 720p(および 4 秒を許可する他のティア)では: エラーにはなりませんが、4 秒しか取得できません(これがまさに「8s を送ったのに 4s になった」ケースです)
  • 1080p / 4k では: 4 秒は不正なので、Resolution 1080p requires duration seconds to be 8 seconds, but got 4 でエラーになります
正しい使い方: 値 "8"(文字列)を持つ seconds フィールドを送信してください。
パラメータの優先順位: metadata.durationSeconds > seconds > 8

metadata.resolution(解像度ティア)

パラメータの優先順位: metadata.resolution > size > 720p

⚠️ generateAudio を渡さないでください

Veo 3 / 3.1 は標準で音声対応ですが、generateAudio パラメータは渡してはいけません。上流側で INVALID_ARGUMENT によって拒否されます。音声を制御するには、意図を prompt に書き込んでください:
「海岸の灯台、夕暮れ時。波、遠くの海鳥、弱い風の音、映画のような雰囲気」

ベストプラクティス

1

用途に応じたモデルの選択

  • イテレーション/一括プレビュー → veo-3.1-fast-generate-preview ($0.3/リクエスト)
  • 最終納品/4K → veo-3.1-generate-preview ($1.2/リクエスト)
  • 両方を同じ prompt + seed で実行し、目視で選択します
2

まずは4秒で検証

新しい prompt ごとに、まずは seconds: "4" から開始してカメラワークとスタイルを検証します(レンダリング時間:60〜90秒、$0.3)。見た目が確定したら、8秒または1080pにスケールアップします。
3

同期待機ではなく非同期ポーリングを使用

公式チャンネルは非同期のみです。POST で送信して task_id を取得 → status: "completed" になるまで8〜10秒ごとに GET /v1/videos/{task_id} をポーリング → /content からダウンロードします。webhook はサポートされておらず、ポーリングのみとなります。
4

ティア別クライアントタイムアウトの設定

  • 720p / 1080p: ハードタイムアウト3分
  • 4K: ハードタイムアウト10分
  • POST 送信(multipart): 最低30秒
5

完了後は速やかにダウンロード

status が completed に切り替わったら、直ちに独自の OSS / CDN にダウンロードしてください。リモート側のコピーは約24時間しか保持されないため、リモートの task_id に長期間依存しないでください。/content エンドポイントは、status が切り替わった直後に時々 400 を返すことがあります。その場合は4秒後に再試行してください(サンプルクライアントにはこの処理が組み込まれています)。同じエンドポイントからの 502 はプロバイダーがファイルを取得できないことを意味するため、再試行しても解決しません。
6

音声の意図を prompt に記述

generateAudio は渡さないでください(INVALID_ARGUMENT が返されます)。環境音、セリフ、BGM については、prompt 内で「waves, distant seabirds, low wind sounds」のように指定してください。
7

クライアント側でのレート制限

同時実行数の上限は公開されていませんが、実際には10件の同時送信がすべて正常にキューに入りました。本番環境では処理中のリクエスト(in-flight)数を10件以下に制限し、429 / 5xx に対しては指数バックオフを適用することをお勧めします。

エラーコードとリトライ

推奨されるクライアント設定:
  • 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

公式(本ページ):Google AI Studioの上流エンドポイントへの透過的なパススルーです。モデルIDはGoogle上流と一致し(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 リバースの判定マトリクスをご覧ください。両方のチャンネルは共存しているため、ビジネスニーズに合わせて選択してください。
リクエストフィールドは 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"。
Veo 3 / 3.1 はネイティブで音声に対応した動画モデルですが、generateAudio パラメータは渡してはいけません(上流が INVALID_ARGUMENT を返します)。サウンドをコントロールするには、prompt 内に意図を記述してください:
“Coastal lighthouse at dusk; waves, distant seabirds, low wind sounds, cinematic atmosphere”
  • 同等のパラメータでは、レンダリング時間はほぼ同じです(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 で両方を実行し、視覚的に選定してください
ほとんどのユースケースでは推奨されません:
  • リクエストごとの価格が同じなのは魅力的に見えます
  • しかし、レンダリングが 4〜6倍遅くなります(720p 80秒 → 4K 350秒)
  • ファイルサイズが約10倍になります(720p 4MB → 4K 40MB)— 帯域幅とストレージのコストが跳ね上がります
  • ほとんどの再生シナリオでは、視覚的に 1080p で十分です
4K がどうしても必要な場合:veo-3.1-generate-preview を使用し、seconds="8" を設定(必須)、クライアントのタイムアウトを10分以上に設定し、バックグラウンドの非同期タスクとして実行してください。
  • webhook はありません。GET /v1/videos/{task_id} をポーリングするのみです
  • 推奨ポーリング間隔:8秒(実測で十分であり、レート制限にも引っかかりません)
  • 実測時間:720p / 1080p は 60〜115秒、4K は 5〜6分
  • クライアントタイムアウト:720p/1080p は 3分、4K は 10分
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 のままであるため、自動的に回復することはありません。これを無制限のリトライループとして記述しないでください。対処法:
  1. 最大2回リトライします。それでも 502 の場合は、そのタスクを失敗としてマークします
  2. task_id を控えてお問い合わせください — その生成はすでに課金されているため、弊社側で確認して対応いたします
  3. 新しいタスクとして再送信すれば通常は動画が生成されます。prompt を変更する必要はありません
これは現在では稀です:ほとんどのタスクは completed と報告される前に動画ファイルが取得可能かどうかがチェックされます。ファイルを取得できない場合、タスクは status: "failed"(理由は error.message に記載)となり、料金は自動的に返金されるため、取得できない動画に対して課金されることはなくなりました。ただし完全に排除できるわけではありません — GET /v1/videos/{task_id} が completed を返すことは、動画が取得可能であることを意味しません。 これらは2つの独立した成功確認として扱ってください。
可能な場合もありますが、一時的なものにすぎません。完了したレスポンスには video_url(認証不要の直接リンク)と expires_at(完了から約24時間後のタイムスタンプ)が含まれている場合があります。これはすべてのタスクで保証されているわけではなく、有効期限が切れると機能しなくなるため、恒久的なアドレスとして配布しないでください。動画を取得する標準的な方法:status: "completed" の後、GET /v1/videos/{task_id}/content を呼び出して MP4 バイナリストリームを取得します(Authorization: Bearer ヘッダーが必要です)。これはすべてのタスクで機能します。標準的な本番パターン:
  1. タスク完了後すぐにバックエンドで MP4 をダウンロード → 独自の OSS / CDN にプッシュ
  2. エンドユーザーには自社の CDN URL を提供
  3. フロントエンドの <video> タグは /content を直接参照してはいけません — ブラウザは認証ヘッダーを含めることができず、リクエストは 401 になります。video_url が存在する場合は、即時プレビュー用に使用できます
レスポンスの expires_at フィールドによると約24時間です(このフィールドがない場合は24時間と想定してください)。完了後すぐにダウンロードしてローカルに保存することを強く推奨します — リモートの task_id や video_url に長期的に依存しないでください。期限切れ後はどちらも利用できなくなります。
progress フィールドは大まかな粒度となっており、いくつかの固定ステップ間でのみジャンプします(0 / 10 / 30 / 50 / 100 など)。パーセンテージのプログレスバーには使用しないでください。スピナーを使用するか、ご自身で「経過時間 / 想定時間」を計算してください。
いいえ。課金されるのは status=completed のタスクのみです。failed / キャンセル / コンテンツポリシー違反による拒否 / パラメータエラーはすべて無料です。実際の動画が出力されなければ課金されません。
バイト単位で同一にはなりません。実測値:同一の prompt + 同一の seed(88888)+ 同一のパラメータで fast を2回実行した場合 — ファイルサイズは 9.81 MB vs 9.25 MB、md5 は完全に異なり、レンダリング時間も異なります。ただし seed は無意味ではありません:同一 seed の出力はまとまった傾向を示し(5回実行テストでグループ内ファイルサイズのばらつきはわずか6%)、異なる seed では体系的に変化します(グループ間のばらつき +36.8%)。つまり:
  • 「安定したルック」が欲しい場合 → seed を固定
  • 「バリエーションを探索」したい場合 → prompt をいじるのではなく seed を変更
  • 「完全な再現」が欲しい場合 → あきらめて mp4 を保存
現時点ではどちらもサポートされていません。画像・動画生成(Image-to-video)は1枚の画像のみを受け付け、フィールド名は input_reference に固定されており、ファイルまたは Base64 のみで、リモート URL には対応していません。Google 上流の Veo 3.1 は複数参照 / 最初と最後のフレーム / 動画の延長をサポートしていますが、このチャンネルでは対応していません。最初/最後のフレームを使用する場合は、VEO 3.1 (リバース) の -fl シリーズをご利用ください。
10件の同時送信の実測では、すべてキューに入り成功し、拒否はありませんでした。正確な上限は公表されていません。本番環境側では処理中のタスク(in-flight)を 10 以下に制限し、429 / 5xx が発生した場合は指数バックオフを行うことを推奨します。
  • 目に見えるウォーターマークはありません
  • ただし、MP4 のメタデータ内に埋め込まれた Google C2PA コンテンツクレデンシャル(Google C2PA Media Services 発行、フォーマット urn:c2pa:...)が含まれています。エンドユーザーには見えませんが、C2PA ツール(例:Adobe Content Authenticity)により「Veo によって生成された」ことを検証できます
  • 再配布シナリオではご注意ください。通常、動画の再生には影響しません
部分的に可能です。インターフェースは OpenAI の規約(Bearer 認証 + /v1/...)に従っていますが、OpenAI 公式 SDK には videos.create メソッドが公開されていません(/v1/videos はカスタムパスです)。OpenAI SDK の低レベルな client.post() または直接の HTTP を使用してください。生の HTTP が最もシンプルです — Text-to-Video Playground のコードサンプルをご覧ください。

関連ドキュメント

VEO 3.1 Official は APIYI の安定した公式リレーサービスであり、Google AI Studio への透過的なパススルーです。モデル ID、レスポンスフィールド、制約は Google の上流と完全に一致し、また、このチャネルは Default グループで従量課金に対応しています — 利用できる公式品質チャネルの中で最も導入しやすいものです。フィードバックはコンソールのサポートパネルから送信してください。