跳轉到主要內容
POST
文生视频:根据文本提示词生成视频任务
右側的互動式 Playground 支援直接線上除錯。請在 Authorization 中填入你的 API Key(格式:Bearer sk-xxx),輸入 prompt、選擇 model / seconds / metadata.resolution 後一鍵傳送即可。預設分組 Default 即可呼叫,無需切換專屬分組。
場景說明:本頁用於「純文本提示詞生成影片」——不傳 input_reference、走 application/json 請求體。如需基於一張參考圖生成影片(圖生影片),請使用 圖生影片介面(同一端點 + input_reference 檔案上傳)。
⚠️ 三處最容易踩的坑
  1. 時長欄位名是 seconds(不是 duration),且必須傳字串 "4" / "6" / "8"。寫成 duration 會被靜默忽略 → 時長回落預設 4 秒(“傳了 8s 只出 4s” 就是這麼來的);傳數字會被服務端拒,報 parse_request_failed: cannot unmarshal number into Go struct field ... duration of type string
  2. 不要傳 generateAudio 引數,上游會回 INVALID_ARGUMENT。音訊效果(環境音、對白、BGM)直接寫進 prompt
  3. 1080p / 4k 解析度時 seconds 必須 "8",傳 "4" / "6" 會被上游拒
三步非同步流程,本頁只覆蓋第一步(提交)
  • 第 1 步(本頁):POST /v1/videos → 返回 task_id + status: "queued"
  • 第 2 步:GET /v1/videos/{task_id} 輪詢,直到 status: "completed"
  • 第 3 步:GET /v1/videos/{task_id}/content 下載 MP4 檔案
POST 提交本身耗時秒級,不會等到影片生成完成。完整流程見下方 Python 程式碼示例。

程式碼示例

Python(OpenAI SDK 風格 · 推薦 client.post 底層呼叫)

Python(原生 requests)

cURL

Node.js(原生 fetch)

瀏覽器 JavaScript

已有 task_id?兩條 cURL 直接查狀態 / 下載

如果你已經拿到 task_id(提交任務時返回,或在控制台日誌中檢視),只需替換下面命令裡的兩處即可直接使用:
  • sk-your-api-key → 你的 API易 Key
  • task_xxxxxxxxxxxxxxxx → 你的任務 ID

1. 查詢任務狀態

返回 JSON 中 status 為 completed 即可進行下載;in_progress 則稍等幾秒再查一次。

2. 下載影片(儲存為 output.mp4)

/content 端點必須帶 Authorization 請求頭——直接在瀏覽器位址列開啟會返回 401。-f --retry 7 --retry-delay 4 --retry-all-errors 用於兜底 status 剛翻 completed 後的 400(最長約 20 秒)。不加 -f,curl 會把 400 當成功、把報錯 JSON 寫進 output.mp4;不加 --retry-all-errors,--retry 對 400 根本不會重試(需 curl 7.71 及以上)。

引數說明速查

不要傳 generateAudio 欄位!Veo 3.1 原生帶音軌,傳該引數會被上游回 INVALID_ARGUMENT。要控制音訊,把意圖寫進 prompt:"海浪聲、遠處海鳥叫聲、低沉的風聲"。
引數識別優先順序:
  • 秒數:metadata.durationSeconds > seconds > 8(請求欄位寫 seconds,寫 duration 不識別)
  • 解析度:metadata.resolution > size > 720p
  • 比例:顯式 metadata.aspectRatio > 由 size 推導 > 16:9

響應格式

第 1 步 - 提交後立即返回

第 2 步 - 輪詢返回(生成中)

第 2 步 - 輪詢返回(完成)

⚠️ 響應欄位陷阱
  • 任務 ID 統一取 id:提交響應可能同時帶 task_id(與 id 同值),但查詢響應只有 id;穩妥寫法是 resp.get("task_id") or resp["id"](上面的示例已這樣寫)
  • 以 /content 為準下載:影片通過 GET /v1/videos/{task_id}/content 拉取 MP4 二進位制流(需鑑權頭),對所有任務都可用。完成響應裡可能附帶 video_url(免鑑權直鏈)與 expires_at(約 24 小時後失效),不保證每個任務都有,只適合臨時預覽。前端不能直連 /content,建議後端下載後落地到自己的 OSS / CDN 再分發
  • progress 欄位是粗粒度,只在少數幾個檔位之間跳,不要拿來做百分比進度條
  • status: "failed" 時通常帶 error.message 說明原因(多見於內容稽核、引數錯誤或生成後影片檔案取不到),失敗任務不計費、已扣費用自動退回,調整 prompt 後重試即可
  • /content 端點在 status 剛翻 completed 後偶發 400,等 4 秒重試即可(上面所有程式碼示例都內建了重試)
本端點是非同步任務式入口,計費在任務進入 completed 時按模型名按次結算(fast $0.3 / standard $1.2,見 概覽頁定價表)。POST 提交、輪詢查詢、影片下載本身不計費,失敗任務也不計費。

授權

Authorization
string
header
必填

在 API易控制台获取的 API Key(默认分组 + 任意计费模式都能调通)

主體

application/json
model
enum<string>
預設值:veo-3.1-fast-generate-preview
必填

模型 ID(按次计费,时长 / 分辨率不影响单价):

  • veo-3.1-fast-generate-preview —— $0.3/次,试水 / 批量出片首选
  • veo-3.1-generate-preview —— $1.2/次,最终交付 / 4K 高清场景
可用選項:
veo-3.1-fast-generate-preview,
veo-3.1-generate-preview
prompt
string
必填

视频生成提示词,建议详细描述:场景 + 主体 + 动作 + 镜头 + 光影 + 风格。

音频意图也写进 prompt(如 "海浪声、远处海鸟叫声、低沉的风声"),不要传 generateAudio 参数——上游会拒 INVALID_ARGUMENT。

範例:

"黄昏海边的灯塔,镜头缓慢推进,海浪轻拍礁石,海鸟叫声,电影级光影,稳定运镜"

seconds
enum<string>
預設值:8

视频时长,字段名是 seconds(不是 duration),字符串枚举(不是数字):

  • "4" —— 4 秒,720p 可用
  • "6" —— 6 秒,720p 可用
  • "8" —— 8 秒(默认),1080p / 4k 必须用这档

写成 duration 会被静默忽略 → 时长回落默认 4 秒(720p 不报错但只出 4 秒;1080p/4k 因 4 秒非法直接报错 ... but got 4)。传数字(8)会报 parse_request_failed: cannot unmarshal number into Go struct field ... duration of type string。

可用選項:
4,
6,
8
size
enum<string>
預設值:1280x720

输出像素,优先级低于 metadata.resolution:

  • 1280x720 / 720x1280 —— 720p(默认)
  • 1920x1080 / 1080x1920 —— 1080p(seconds 必须 "8")
  • 3840x2160 / 2160x3840 —— 4k(seconds 必须 "8",渲染慢 4–6 倍)
可用選項:
1280x720,
720x1280,
1920x1080,
1080x1920,
3840x2160,
2160x3840
metadata
object

生成参数细节包装对象。优先级高于顶层的 size 等字段:

  • 秒数识别顺序:metadata.durationSeconds > seconds > 8(请求字段写 seconds,写 duration 不识别)
  • 分辨率识别顺序:metadata.resolution > size > 720p

回應

任务已提交,返回 task_id 与 queued 状态

id
string

任务 ID(与 task_id 同值,下游建议统一用 task_id)

範例:

"task_xxxxxxxxxxxxxxxx"

task_id
string

任务 ID,用于后续轮询和下载

範例:

"task_xxxxxxxxxxxxxxxx"

object
string

对象类型,固定 video

範例:

"video"

model
string

本次任务使用的模型 ID

範例:

"veo-3.1-fast-generate-preview"

status
enum<string>

任务状态:

  • queued —— 已提交,排队等待
  • in_progress —— 正在生成
  • completed —— 完成,可下载(/v1/videos/{task_id}/content)
  • failed —— 失败(不计费),可重试
可用選項:
queued,
in_progress,
completed,
failed
範例:

"queued"

progress
integer

生成进度(粗粒度,只在 0 / 50 / 100 三档跳,不要拿来做百分比进度条)

範例:

0

created_at
integer

任务创建 Unix 时间戳(秒)

範例:

1775025000

completed_at
integer

任务完成 Unix 时间戳(秒),仅 completed 状态返回

範例:

1775025090