Skip to main content
POST
Text-to-video: submit a generation task from text prompt
右側のインタラクティブな Playground はライブデバッグをサポートしています。Authorization に API Key を入力し(形式 Bearer sk-xxx)、prompt を入力して、model / seconds / metadata.resolution を選び、送信してください。Default グループが使えます — 専用のグループ切り替えは不要です
範囲: このページは「テキストのみから動画を生成」を扱います — input_referenceapplication/json body もありません。参照画像から生成するには、Image-to-Video エンドポイント を使用してください(同じエンドポイント + input_reference アップロード)。
⚠️ よくある落とし穴 3 つ
  1. length フィールドの名前は seconds です(duration ではありません)かつ string である必要があります "4" / "6" / "8"。これを duration と名付けると静かに無視されるため、length はデフォルトの 4 秒にフォールバックします(「8 秒を送ったのに 4 秒になった」罠です);数値を渡すと parse_request_failed: cannot unmarshal number into Go struct field ... duration of type string で失敗します
  2. generateAudio は渡さないでください — 上流は INVALID_ARGUMENT を返します。音声の意図(ambient、dialogue、BGM)は prompt に埋め込んでください
  3. 1080p / 4k では、seconds"8" にする必要があります"4" / "6" は上流側で拒否されます
3 ステップの非同期フロー — このページは Step 1(submit)のみを扱います
  • Step 1(このページ): POST /v1/videostask_id + status: "queued" を返します
  • Step 2: GET /v1/videos/{task_id}status: "completed" までポーリングします
  • Step 3: MP4 をダウンロードするために GET /v1/videos/{task_id}/content します
POST submit 自体は 1 秒未満で完了し、生成完了まで待機しません。全体のフローは下の Python サンプルに示しています。

コードサンプル

Python (OpenAI SDK · ローレベル client.post)

Python(requests)

cURL

Node.js(ネイティブ fetch)

ブラウザー JavaScript

task_id をすでにお持ちですか? コピペするだけの cURL コマンド 2 つ

すでに task_id をお持ちの場合(タスク送信時に返されたもの、またはコンソールログに表示されたもの)、下の 2 つのプレースホルダーを置き換えるだけで実行できます:
  • sk-your-api-key → あなたの APIYI キー
  • task_xxxxxxxxxxxxxxxx → あなたの task ID

1. タスクのステータスを確認

JSON 応答が status: "completed" を示したらダウンロードできます。in_progress を示した場合は、数秒待ってからもう一度確認してください。

2. 動画をダウンロードする(output.mp4 として保存されます)

/content エンドポイントには Authorization ヘッダーが必要です。URL をブラウザのアドレスバーに直接開くと 401 が返ります。--retry 3 は、statuscompleted に切り替わった直後にまれに発生する 400 をカバーしています(CDN の同期遅延)。

パラメータ参照

generateAudio フィールドは渡さないでください!Veo 3.1 は標準で音声対応しており、このパラメータを渡すと INVALID_ARGUMENT が返されます。音声を制御するには、意図を prompt に書き込んでください: "waves, distant seabirds, low wind sounds"
パラメータの優先順位:
  • 長さ: metadata.durationSeconds > seconds > 8seconds を送信してください。duration は認識されません)
  • 解像度: metadata.resolution > size > 720p
  • アスペクト比: 明示的な metadata.aspectRatio > サイズから推定されたもの > 16:9

レスポンス形式

ステップ 1 - 送信直後

ステップ 2 - ポーリング応答(進行中)

ステップ 2 - ポーリング応答(完了)

⚠️ レスポンスフィールドの注意点
  • idtask_id はどちらも同じ値で返されます; 下流では task_id に標準化してください(既存の Reverse チャンネルと互換性があります)
  • CDN / 公開 URL は返されません — レスポンスに video_url / data.url はありません; 動画は GET /v1/videos/{task_id}/content 経由の MP4 バイナリストリーム としてのみ取得できます(認証ヘッダーが必要です)。フロントエンドからこのエンドポイントを直接叩くことはできません — サーバー側でダウンロードし、自前の OSS / CDN に再ホストしてください
  • progress は粗い粒度です — 0 / 50 / 100 の間でのみジャンプ するため、進捗バーには使用しないでください
  • status: "failed" には詳細な error フィールドが含まれない場合があります; 通常はコンテンツレビューまたはパラメータエラーです。再試行するか、プロンプトを調整してください
  • /content は、statuscompleted に切り替わった直後に 400 を返すことがあります; 4 秒後に再試行してください(上記のすべてのコードサンプルにはこれが組み込まれています)
このエンドポイントは非同期タスクの入口です。課金はタスクが completed に到達した時点で発生し、モデル名ごとにリクエスト単位で課金されます(fast $0.3 / standard $1.2、料金 を参照してください)。POST 送信、ポーリング、ダウンロード自体は 課金されません; 失敗したタスクも 課金されません

承認

Authorization
string
header
必須

API Key from APIYI console (Default group + Pay-per-request or Pay-as-you-go Priority Token; pure Pay-as-you-go not supported)

ボディ

application/json
model
enum<string>
デフォルト:veo-3.1-fast-generate-preview
必須

Model ID (per-request billing, duration / resolution do not affect price):

  • veo-3.1-fast-generate-preview — $0.3/request, top pick for iteration / batch generation
  • veo-3.1-generate-preview — $1.2/request, for final delivery / 4K scenarios
利用可能なオプション:
veo-3.1-fast-generate-preview,
veo-3.1-generate-preview
prompt
string
必須

Video generation prompt; describe in detail: scene + subject + action + camera + lighting + style.

Audio intent also goes in the prompt (e.g. "waves, distant seabirds, low wind sounds"). Do not pass generateAudio — upstream rejects with INVALID_ARGUMENT.

:

"A coastal lighthouse at dusk, slow push-in, waves lapping the rocks, distant seabirds, cinematic lighting, steady camera"

seconds
enum<string>
デフォルト:8

Video length. The field name is seconds (not duration), a string enum (not number):

  • "4" — 4 sec, 720p only
  • "6" — 6 sec, 720p only
  • "8" — 8 sec (default), required at 1080p / 4k

Sending duration instead is silently ignored → length falls back to the default 4 sec (720p returns no error but only outputs 4 sec; 1080p/4k errors with ... but got 4). Passing a number (8) returns parse_request_failed: cannot unmarshal number into Go struct field ... duration of type string.

利用可能なオプション:
4,
6,
8
size
enum<string>
デフォルト:1280x720

Output pixel dimensions; lower precedence than metadata.resolution:

  • 1280x720 / 720x1280 — 720p (default)
  • 1920x1080 / 1080x1920 — 1080p (seconds must be "8")
  • 3840x2160 / 2160x3840 — 4k (seconds must be "8", 4–6× slower render)
利用可能なオプション:
1280x720,
720x1280,
1920x1080,
1080x1920,
3840x2160,
2160x3840
metadata
object

Wrapper for fine-grained generation parameters. Higher precedence than the top-level size etc.:

  • Duration resolution order: metadata.durationSeconds > seconds > 8 (send seconds; duration is not recognized)
  • Resolution resolution order: metadata.resolution > size > 720p

レスポンス

Task submitted; returns task_id and queued status

id
string

Task ID (matches task_id; downstream should standardize on task_id)

:

"task_xxxxxxxxxxxxxxxx"

task_id
string

Task ID for subsequent polling and download

:

"task_xxxxxxxxxxxxxxxx"

object
string

Object type, fixed to video

:

"video"

model
string

Model ID used for this task

:

"veo-3.1-fast-generate-preview"

status
enum<string>

Task status:

  • queued — submitted, awaiting processing
  • in_progress — generating
  • completed — done, downloadable (/v1/videos/{task_id}/content)
  • failed — failed (not billed), retry possible
利用可能なオプション:
queued,
in_progress,
completed,
failed
:

"queued"

progress
integer

Generation progress (coarse-grained, jumps only between 0 / 50 / 100, do not use for percentage bars)

:

0

created_at
integer

Task creation Unix timestamp (seconds)

:

1775025000

completed_at
integer

Task completion Unix timestamp (seconds); only present for completed status

:

1775025090