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 中 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