Skip to main content
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 中 statuscompleted 即可進行下載;in_progress 則稍等幾秒再查一次。

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

/content 端點必須帶 Authorization 請求頭——直接在瀏覽器位址列開啟會返回 401。--retry 3 用於兜底 status 剛翻 completed 後偶發的 400(CDN 同步延遲)。

引數說明速查

不要傳 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 步 - 輪詢返回(完成)

⚠️ 響應欄位陷阱
  • idtask_id 欄位同時返回且值一致,下游建議統一用 task_id(與既有 VEO 官逆相容)
  • 沒有任何 CDN / 公網 URL 返回——響應欄位裡沒有 video_url / data.url,影片只能通過 GET /v1/videos/{task_id}/content 拉取 MP4 二進位制流(需鑑權頭)。前端不能直連此端點,建議後端下載後落地到自己的 OSS / CDN 再分發
  • progress 欄位是粗粒度,只在 0 / 50 / 100 三檔跳,不要拿來做百分比進度條
  • status: "failed" 時上游有時不帶詳細 error 欄位,多見於內容稽核或引數錯誤,直接重試或調整 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