Claude Opus 5.5 已在 SeedRouter 上线
SeedRouter Docs

Veo 3.1

通过统一的任务 API 生成 Veo 3.1 视频片段:三个模型按每段 8 秒视频计费,两个模型按秒计费,支持首尾帧、音频和 GIF 输出。

View Markdown

Veo 3.1 是 Google 的视频生成模型。SeedRouter 在同一个端点上提供五个模型 ID:三个按次计费,每段视频都是 8 秒;两个按秒计费,控制项更多(时长、音频、种子、反向提示词、首尾帧)。发送请求,保存返回的任务 ID,再从该任务读取生成完成的视频。图片以 URL 形式传入。

模型 ID

模型 ID计费时长图片音频
veo-3.1-fast按次8 秒最多 3 张,首尾帧或参考模式无开关
veo-3.1-quality按次8 秒最多 3 张,首尾帧模式无开关
veo-3.1-lite按次8 秒不支持(文生视频)无开关
veo-3.1-fast-official按秒4、6 或 8 秒首帧和尾帧generate_audio
veo-3.1-quality-official按秒4、6 或 8 秒首帧和尾帧generate_audio

当前价格见模型页。

快速示例

curl https://api.seedrouter.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "veo-3.1-fast",
    "prompt": "A red paper boat drifts across a calm pond at sunrise, soft mist on the water, slow push-in on a 35mm lens, no text, no logos.",
    "resolution": "720p",
    "aspect_ratio": "16:9"
  }'

端点

POST https://api.seedrouter.ai/v1/videos/generations
请求头值
AuthorizationBearer YOUR_API_KEY
Content-Typeapplication/json

响应是一个任务({"id": "task_...", "status": "processing"}),而不是生成完成的视频。请轮询 GET /v1/tasks/{task_id} 获取结果。请把 API 密钥保存在服务端代码中。

参数:按次计费的模型

veo-3.1-fast、veo-3.1-quality 和 veo-3.1-lite。

字段类型默认值说明
modelstring必填上述三个 ID 之一。
promptstring必填描述镜头。
durationinteger8只接受 8。
aspect_ratioenum16:9 或 9:16。
resolutionenum720p720p、1080p 或 4k(不区分大小写)。veo-3.1-lite 不支持 4k。
enable_gifbooleanfalse以 GIF 动图而不是 MP4 返回视频。仅限 720p。
nsfw_checkbooleanfalse生成前检查提示词和图片中是否有不安全内容。
image_urlsarray仅限 Fast 和 Quality。最多 3 个公开图片 URL。
generation_typeenum取决于图片数量仅限 Fast 和 Quality。frame 或 reference;Quality 只接受 frame。

参数:按秒计费的模型

veo-3.1-fast-official 和 veo-3.1-quality-official。

字段类型默认值说明
modelstring必填上述两个 ID 之一。
promptstring必填描述镜头。
negative_promptstring不希望出现在视频中的内容。
durationinteger84、6 或 8 秒。
aspect_ratioenum16:916:9 或 9:16。
resolutionenum720p720p、1080p 或 4k(不区分大小写)。
first_frame_imagestring公开图片 URL。视频以它开场。
last_frame_imagestring公开图片 URL。需要 first_frame_image。
seedinteger随机0 到 4294967295。
generate_audiobooleanfalse添加一条音轨。按更高的每秒费率计费。
person_generationenumallow_adultallow_adult 或 disallow。
resize_modeenumpadpad 或 crop。需要 first_frame_image。
enhance_promptbooleantrue只接受 true;否则请省略该字段。
nsfw_checkbooleanfalse生成前检查提示词和图片中是否有不安全内容。

请求结构是严格校验的:未知字段会被拒绝,而不是被忽略,并且每个模型只接受它自己的字段。不支持回调;请改为轮询任务。

图片模式

在 veo-3.1-fast 和 veo-3.1-quality 上,generation_type 决定 image_urls 的用法:

generation_type图片效果
frame1 或 2 张第一张图是首帧,第二张是尾帧。
reference最多 3 张这些图片作为主体和风格的参考。仅限 Fast。
省略2 或 3 张两张图使用首尾帧模式,三张图使用参考模式。

veo-3.1-quality 不支持参考模式,因此会拒绝 generation_type: "reference",也会拒绝未指定 generation_type 的三张图片。veo-3.1-lite 不接受图片。

在按秒计费的模型上,设置 first_frame_image,并可选设置 last_frame_image。resize_mode 决定画幅不同的图片是填充还是裁剪。

媒体输入

图片是公开的 HTTP(S) URL:

{ "image_urls": ["https://example.com/first.jpg", "https://example.com/last.jpg"] }

在按次计费的模型上,每张图片必须是 JPEG、PNG 或 WebP,且不超过 10 MB;不符合这些规则的文件会让任务失败,但不扣费。不接受 Base64 数据:请把文件上传到你自己的存储,再传入它的 URL。

计费维度

当前费率请查看模型定价部分。

per-clip models:    cost = price of one clip at the output resolution        (720p and 1080p cost the same)
per-second models:  cost = duration × rate for the resolution and audio setting

费用在请求被受理时就已确定,因此预扣金额就是实际扣费金额。最终扣费请在账户的用量记录中查看。失败的任务不计费。

输出结构

提交后返回任务:

{"id": "task_...", "model": "veo-3.1-fast", "status": "processing", "created_at": 1789689600}

查询任务

GET https://api.seedrouter.ai/v1/tasks/{task_id}

每 10–20 秒轮询一次,直到 status 变为 completed 或 failed。轮询过程中出现网络超时,并不意味着生成失败:请保留任务 ID 并继续查询。不要为了查看进度而再创建一个任务。

完成的任务

{
  "id": "task_...",
  "model": "veo-3.1-fast",
  "status": "completed",
  "created_at": 1789689600,
  "finished_at": 1789689720,
  "output": {
    "video_url": "https://static.seedrouter.ai/media/tasks/task_example/0.mp4"
  }
}

video_url 是一个 MP4;如果请求设置了 enable_gif,则是 GIF。该链接位于 SeedRouter 的存储上。

我们的测试运行返回的结果(每项运行一次,2026-10-04):

请求文件
veo-3.1-fast,9:16,首尾帧模式MP4,H.264,720 × 1280,24 fps,8 秒,带立体声 AAC 音轨
veo-3.1-fast-official,16:9,720p,4 秒,未设 generate_audioMP4,H.264,1280 × 720,24 fps,4 秒,无音轨
veo-3.1-lite,enable_gifGIF,480 × 270,16 fps,8 秒

按次计费的模型没有音频开关;按秒计费的模型只有设置 generate_audio 才会添加音轨。

错误

在任务创建之前被拒绝的请求,会返回 HTTP 错误状态码和一个 error 对象,且不计费。受理之后才失败的任务,在查询时返回 HTTP 200,并带有 status: "failed" 和一个 error 对象。

错误码、HTTP 状态码和重试建议请参见公共错误目录。

{
  "id": "task_...",
  "model": "veo-3.1-fast",
  "status": "failed",
  "error": {
    "code": 60001,
    "message": "The request was rejected by the content policy. Please revise the prompt or input images."
  }
}

如果提交本身超时,请先检查你的任务列表再重新提交:第一次请求有可能已经被受理。

实用建议

  • 先用 veo-3.1-lite 或 veo-3.1-fast 以 720p 试提示词,再换 Quality 或 4k 做最终渲染。
  • 写明相机和光线:镜头焦段和运镜对画面的影响比形容词大得多。
  • 加上 no text, no logos,避免画面中出现凭空编造的文字和标记。
  • 如果镜头必须以已知图片开始和结束,请用两张图的首尾帧模式,或在按秒计费的模型上使用 first_frame_image 和 last_frame_image。
  • 在按秒计费的模型上固定 seed,一次只改一个分句,逐步打磨一个镜头。

相关内容