api.foo
api.foo / 文档 / 视频生成 API 教程

视频生成 API 怎么调用(2026):Veo 3.1、Seedance、Wan、MiniMax、Grok 文生视频和图生视频教程

更新于 · 测试环境:api.foo 视频接口实测(测试密钥)· curl · Python openai 3.49.0 · 作者:api.foo 文档组(怎么测试)
本页目录

一句话说清:在 api.foo 生成视频,用的是 OpenAI Videos 格式,一共三步:提交任务 → 查进度 → 下载 mp4。接口地址 https://api.foo/v1/videos(一定要带 /v1),密钥要建在有视频模型的分组里。现在能用的有 Veo 3.1、Seedance、Wan 3.0、MiniMax H3、Grok Imagine Video、Gemini Omni 等 22 个视频模型,有的按条收费,有的按「秒数 × 清晰度」收费,失败自动退款。

本文的调用写法在 2026 年 11 月 11 日用测试密钥实测过:提交(JSON 和上传图片两种)、查进度、下载三步都返回「无效的令牌」,说明地址和格式是对的;也用真实密钥出过片。各模型的秒数、清晰度和图片规则按 11 月 11 日整理,以后有调整会更新本文。

开始前:三件事

1. 建一把能用视频模型的密钥

api.foo 的密钥按分组创建,视频模型只在视频分组里。拿聊天用的密钥调视频模型,会报「无可用渠道」。

  1. 登录 api.foo,进入 控制台 → API 密钥,点「创建 API 密钥」。
  2. 选分组时,在下拉框里点「视频」这一类,选里面的分组。
  3. 创建后复制密钥,下面的例子里把它叫做 $APIFOO_KEY。

不确定某个模型在哪个分组,打开模型广场里这个模型的页面就能看到。

2. 账户里有余额

视频在提交时扣费,余额不够会直接报「用户额度不足, 剩余额度: …」。在 控制台 → 钱包 充值,支付宝、微信、银行卡、USDT 都可以。

3. 用代码调,不是在聊天框里打字

视频生成是排队异步的:先交任务,过一会儿再来取。所以:

  • 控制台的「游乐场」、Cherry Studio 这类聊天软件都不能生成视频,它们只会调聊天接口。
  • 要用 curl、Python、Node.js 等写代码调用,或者用明确支持 OpenAI Videos 接口(/v1/videos)的工具。

三步生成一条视频(curl)

先把密钥放进环境变量,下面的命令都读它:

export APIFOO_KEY=你的密钥

Windows 的 PowerShell 写成 $env:APIFOO_KEY="你的密钥"。PowerShell 里 curl 的引号规则不一样,下面带 JSON 的命令容易出错,Windows 用户建议直接看后面的 Python 写法,或者在 Git Bash 里运行。

第一步:提交任务

curl https://api.foo/v1/videos \
  -H "Authorization: Bearer $APIFOO_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "veo-3.1", "prompt": "一只橘猫趴在窗台上晒太阳,镜头慢慢推近", "size": "1280x720"}'

马上会返回一个任务,最重要的是 id(task_ 开头),后面两步都要用它。返回内容大致是这样(节选):

{"id": "task_…", "object": "video", "model": "veo-3.1", "status": "queued", "progress": 0}

这时视频还没开始做好,不要因为没看到视频就再提交一次,每提交一次都会单独扣一次钱。

第二步:查进度

每 5~10 秒查一次:

curl https://api.foo/v1/videos/task_你的任务id \
  -H "Authorization: Bearer $APIFOO_KEY"

看返回里的 status:

status 意思 怎么办
queued 排队中 继续等
in_progress 生成中,progress 是进度(0~100) 继续等
completed 做好了 去第三步下载
failed 失败了,钱已自动退回 看 error 里的原因,改一改再提交

有的模型不报进度(比如 gemini-omni 系列),做的过程中一直显示 queued、0,做完直接变成 completed,这是正常的。

第三步:下载 mp4

curl -L -o video.mp4 https://api.foo/v1/videos/task_你的任务id/content \
  -H "Authorization: Bearer $APIFOO_KEY"

下载用的还是同一把密钥。成片不会长期保存,做好了就尽快下载存到自己那里。

按秒收费的模型:带上秒数和清晰度

上面的 veo-3.1 是按条收费的,不用管秒数。按秒收费的模型(Wan、Seedance、MiniMax H3、Grok Imagine Video 等)要在提交时说清楚做几秒、什么清晰度:

curl https://api.foo/v1/videos \
  -H "Authorization: Bearer $APIFOO_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "minimax_h3", "prompt": "一只橘猫在雪地里奔跑,镜头跟拍,电影感", "seconds": "5", "resolution": "720p"}'
  • seconds:做几秒,整数,写 5 或 "5" 都行。每个模型的范围不一样,见下面的模型表。不填就按表里的「默认」算。
  • resolution:清晰度,写 480p、720p 或 1080p。不填就按表里的默认清晰度。
  • 也可以不写 resolution,改写 size,比如 1280x720(横屏)、720x1280(竖屏),系统按短边认清晰度(720 就是 720p)。resolution 和 size 只能二选一,两个都写会被拒绝。
  • aspect_ratio:画面比例,比如 16:9、9:16。每个模型支持的比例不同,见模型表。

实际做出来的秒数和清晰度,就是你填的(或默认的)那两个数,按这两个数扣费,不会出现「你填了 5 秒、实际按 8 秒收钱」的情况。

用 Python 调用(完整流程)

官方的 openai 库自带视频接口,提交、查进度、下载都有现成的方法。先安装:

pip install openai

下面这段从提交一直跑到把 mp4 存到本地:

import os
import time
from openai import OpenAI

client = OpenAI(api_key=os.environ["APIFOO_KEY"], base_url="https://api.foo/v1")

# 1. 提交任务
video = client.videos.create(
    model="minimax_h3",
    prompt="一只橘猫在雪地里奔跑,镜头跟拍,电影感",
    seconds="5",
    extra_body={"resolution": "720p"},  # 库里没有 resolution 这个参数,用 extra_body 带上
)
print("任务 id:", video.id)

# 2. 每 10 秒查一次,直到做好或失败
while video.status in ("queued", "in_progress"):
    time.sleep(10)
    video = client.videos.retrieve(video.id)
    print(video.status, video.progress)

# 3. 下载
if video.status == "completed":
    client.videos.download_content(video.id).write_to_file("cat.mp4")
    print("已保存 cat.mp4")
else:
    print("生成失败(钱已自动退回):", video.error)

几点说明:

  • base_url 一定写到 /v1:https://api.foo/v1。写成 https://api.foo 会请求到网页上,拿不到结果。
  • 按条收费的模型(比如 veo-3.1),把 seconds 和 extra_body 去掉就行;要竖屏加 size="720x1280"。
  • 本地图片直接传文件:input_reference=open("first.png", "rb");图片链接用 extra_body={"input_reference": "https://…"}。
  • 新版 openai 库调视频接口时会打印一行 DeprecationWarning: The Sora API is scheduled to permanently shut down…。这是 OpenAI 自家 Sora 模型的停用提醒,不影响在 api.foo 上调用这些模型,可以不管。
  • 其他语言(Node.js、Go、Java……)用任意 HTTP 库按上面三个地址发请求就行:POST /v1/videos、GET /v1/videos/{id}、GET /v1/videos/{id}/content。

用图片生成视频

大多数模型都能带图:可以是首帧(视频从这张图开始动)、首尾帧(指定开头和结尾两个画面),或者参考图(让人物、商品、画风跟图片一致)。每个模型能带几张、算哪一种,见下面的模型表。

图片链接

一张图写在 input_reference:

curl https://api.foo/v1/videos \
  -H "Authorization: Bearer $APIFOO_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "veo-3.1", "prompt": "她慢慢转过头,对着镜头微笑", "input_reference": "https://example.com/first.png"}'

多张图写成 images 数组。比如 veo 系列的首尾帧,第 1 张是开头画面、第 2 张是结尾画面:

curl https://api.foo/v1/videos \
  -H "Authorization: Bearer $APIFOO_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "veo-3.1-lite", "prompt": "街道从白天慢慢变成夜晚", "images": ["https://example.com/day.png", "https://example.com/night.png"]}'

上传本地图片

改用表单(multipart)提交,图片字段名是 input_reference:

curl https://api.foo/v1/videos \
  -H "Authorization: Bearer $APIFOO_KEY" \
  -F model=veo-3.1 \
  -F prompt="她慢慢转过头,对着镜头微笑" \
  -F input_reference=@first.png

按秒收费的模型照样加 -F seconds=5 -F resolution=720p。

图片的几个要求

  • 链接要能直接打开:公网 https:// 地址,不能是要登录才能看、或者有防盗链的图片。
  • 上传本地图片一次只能传一张;要传多张,用链接写进 images。
  • 图片的长宽比尽量和视频一致(横屏 16:9、竖屏 9:16),比例差太多,有的模型会给画面加黑边。
  • minimax-h3-b、minimax-h3-c、grok-imagine-video-1.5 必须带图,不带会失败;veo-3.1-fast-1080p 不能带图,带了会报错。

全部视频模型:秒数、清晰度、图片

模型名要一字不差,包括大小写和符号:比如 minimax_h3 是下划线,seedance2.0-933-V 结尾是大写 V。

按条收费(价格和秒数无关)

一条一个价,seconds 填不填、填多少都不影响时长和价格。用 size 选横竖屏:1280x720 横屏(默认)、720x1280 竖屏。

模型 时长 清晰度 能带的图
veo-3.1 约 8 秒 720p 0~2 张:1 张是首帧,2 张是首尾帧
veo-3.1-fast 约 8 秒 720p 0~3 张:1 张首帧,2 张首尾帧,3 张是多图参考
veo-3.1-lite 约 8 秒 720p 0~2 张:1 张首帧,2 张首尾帧
veo-3.1-1080p 约 8 秒 1080p 0~2 张:1 张首帧,2 张首尾帧
veo-3.1-fast-1080p 约 8 秒 1080p 不能带图,只能文生视频
muse-video 约 5 秒 720p 最多 1 张
omni-flash 8 秒 720p 0~3 张参考图(不是首尾帧);横屏还可选 1792x1024、1920x1080,竖屏反过来,清晰度不变

按条收费、价格看清晰度

一条一个价,清晰度越高越贵,秒数不影响价格。

模型 时长(默认) 清晰度(默认) 能带的图 画面比例
gemini-omni-1.1-flash 3~10 秒(5) 480p、720p、1080p(480p) 0~6 张参考图 16:9、9:16
gemini-omni-1.2-flash 3~10 秒(5) 480p、720p、1080p(480p) 0~6 张参考图 16:9、9:16

这两个模型的 480p 也可以写成 360p,算同一档。gemini-omni-1.2-flash 还能加 "reasoning_effort": "high" 让它多想一想(默认 low),不影响价格。

按秒收费:秒数 × 清晰度单价

价格 = 秒数 × 所选清晰度的每秒单价。括号里是不填时的默认值,按默认值扣费。

模型 时长(默认) 清晰度(默认) 能带的图 画面比例
wan3.0-video 2~15 秒(5) 480p、720p、1080p(720p) 最多 10 张参考图 adaptive、16:9、9:16、1:1、4:3、3:4、21:9
wan3.0-video-p 2~15 秒(5) 480p、720p、1080p(720p) 最多 10 张参考图 同上
wan3.0-video-prime 固定 15 秒 720p、1080p(720p) 最多 10 张参考图 同上
wan3.0-video-prime-p 2~15 秒(5) 480p、720p、1080p(720p) 最多 10 张参考图 同上
seedance2.5 4~15 秒(5) 480p、720p(720p) 最多 30 张参考图 16:9、9:16
seedance2.0-933-V 5~15 秒(5) 480p、720p(720p) 最多 9 张参考图 16:9、9:16
doubao-seedance-2-0-mini-260615 4~15 秒(5) 只有 720p 最多 1 张 16:9、9:16、1:1 等
minimax_h3 4~15 秒(4) 480p、720p、1080p(720p) 最多 9 张参考图 16:9、9:16 等
minimax-h3-lh 4~15 秒(必须填) 480p、720p(480p) 可以带参考图 不写就按 size 推算
minimax-h3-b 3~15 秒(5) 480p、720p、1080p(720p) 必须带 1~9 张 16:9、9:16
minimax-h3-c 3~15 秒(5) 480p、720p、1080p(720p) 必须带 1~9 张 16:9、9:16
grok-imagine-video 4~15 秒(8) 480p、720p(480p) 最多 14 张参考图 1:1、16:9、9:16、4:3、3:4、3:2、2:3
grok-imagine-video-1.5 1~15 秒(8) 480p、720p、1080p(480p) 必须带 1 张首帧 同上

几个容易踩的点:

  • wan3.0-video-prime 永远做 15 秒、按 15 秒收,seconds 写别的也一样。
  • minimax-h3-lh 不填 seconds 会被拒绝,其他模型不填就按默认秒数。
  • 秒数、清晰度超出范围会在提交时直接被拒绝,不扣钱,也不会开始做。
  • 想省钱先试效果:用 480p、短秒数先出几条,满意了再用 720p、1080p 出正式的。

怎么选模型

想要什么 可以先试
1080p 高清 veo-3.1-1080p(能带首帧 / 首尾帧)、veo-3.1-fast-1080p(只能文生视频)
指定开头和结尾两个画面 veo 系列(除了 veo-3.1-fast-1080p):传 2 张图
让人物、商品和参考图保持一致 多图参考:seedance2.5(最多 30 张)、grok-imagine-video(14 张)、wan 系列(10 张)
把一张图片做成动态视频 grok-imagine-video-1.5、minimax-h3-b,或任意能带首帧的模型
做满 15 秒 wan3.0-video-prime(固定 15 秒),或按秒收费的模型填 "seconds": "15"
竖屏短视频 按条收费的模型写 "size": "720x1280";按秒收费的写 "aspect_ratio": "9:16"

同一个提示词,不同模型出来的效果差别可能很大,建议先用便宜的设置每个出一条对比一下。

怎么收费、在哪看花了多少

  • 三种算法:按条(veo 系列、muse-video、omni-flash);按条、价格看清晰度(gemini-omni 两个);按秒 × 清晰度(其余模型)。每个模型的具体价格见模型广场,搜模型名打开就能看到。
  • 提交成功时扣费:按条的扣一条的钱;按秒的按「秒数 × 清晰度单价」扣。
  • 生成失败自动退钱:查进度看到 failed,钱已经退回余额,不用找客服。
  • 参数写错不扣钱:秒数超范围、清晰度不支持、模型不能带图却带了图,这些会在提交时直接被拒绝(返回 400),不扣钱。
  • 在哪看:控制台 「使用日志」 里有每一笔扣费和退款;左边栏 「任务日志」 能看到每个视频任务的状态。

常见报错

返回的是一大段网页,不是 JSON

地址漏了 /v1。视频接口必须写成 https://api.foo/v1/videos;Python 里 base_url 写 https://api.foo/v1。

401 无效的令牌

{"error":{"code":"","message":"无效的令牌 (request id: …)","type":"new_api_error"}}

密钥不对。怎么办:重新复制密钥,确认请求头是 Authorization: Bearer 你的密钥,Bearer 后面有一个空格。

无可用渠道

提示「分组 … 下模型 … 无可用渠道」,说明这把密钥所在的分组里没有这个视频模型,多半是拿聊天用的密钥调了视频。怎么办:按本文开头的步骤,在「视频」那一类里选分组,新建一把密钥。也可能是模型名写错了,对一下大小写和符号。

用户额度不足

余额不够这一条的钱。怎么办:去 控制台 → 钱包 充值。按秒的模型,秒数和清晰度越高要的钱越多,可以先换短一点、低一点的设置试。

秒数或清晰度不对(400)

seconds must be an integer between 4 and 15 for minimax_h3
minimax_h3 supports 480p, 720p, 1080p, not …
send either resolution or size, not both
seconds is required for minimax-h3-lh (4-15)

依次是:秒数超出范围;这个模型没有这档清晰度;resolution 和 size 同时写了;minimax-h3-lh 没填秒数。怎么办:对照上面的模型表改参数。这类报错不扣钱。

503「该模型由任务插件认领,但当前没有启用的渠道可服务此模型」

完整的提示是「分组 … 下模型 … 无可用渠道:该模型由任务插件认领,但当前没有启用的渠道可服务此模型」,有两种情况:

  • 密钥不是视频分组的:和上面的「无可用渠道」一样,换一把建在「视频」分类里的密钥。
  • 参数写错了:wan3.0-video、grok-imagine-video、gemini-omni 这几个模型参数写错时,有时会返回这句,而不是上面那种说明。检查秒数、清晰度、size 有没有超出模型表里的范围。

两种情况都不扣钱。

veo-3.1-fast-1080p 带图报错

model … does not support 1 reference image(s)…

veo-3.1-fast-1080p 只能文生视频。怎么办:去掉图片,或者换 veo-3.1-1080p(能带首帧 / 首尾帧)。不扣钱。

查进度看到 failed

钱已经自动退回。常见原因是提示词或图片没通过内容审核(真人肖像、暴力、版权角色等),或者模型那边临时出问题。怎么办:看 error 里的原因,改一改提示词或换张图再提交;同样的请求连续失败,换一个模型试试。

一直是 queued、等了很久

先确认是不是不报进度的模型(比如 gemini-omni 系列,做好前一直是 queued、0)。排队的人多时要等更久,用同一个任务 id 继续查,不要重新提交(每次提交都会单独扣钱)。等了半小时以上还没变化,可以在控制台提交工单,附上任务 id。

更多报错见 API 报错排查大全。

关于隐私

视频这类排队生成的任务,为了让你之后能查进度、取结果,会保存提示词和结果链接,这是 api.foo 隐私政策里写明的例外(普通聊天不保存内容)。详见常见问题。

相关阅读

常见问题

api.foo 能生成视频吗?有哪些模型?

能。现在有 22 个视频模型,包括 Veo 3.1 系列(veo-3.1、veo-3.1-fast、veo-3.1-lite、veo-3.1-1080p、veo-3.1-fast-1080p)、Seedance、Wan 3.0、MiniMax H3、Grok Imagine Video、Gemini Omni、omni-flash、muse-video。支持文生视频,大部分也支持图生视频。完整列表和价格见模型广场。

视频生成 API 怎么调用?

用 OpenAI Videos 格式,分三步:POST https://api.foo/v1/videos 提交任务,拿到任务 id;每 5~10 秒 GET /v1/videos/{id} 查一次状态;status 变成 completed 后 GET /v1/videos/{id}/content 下载 mp4。三步都用同一把密钥,地址必须带 /v1。

一条视频要等多久?

一般一到几分钟。我们实测 minimax-h3-lh 一条 4 秒 480p 的视频,从提交到出片 2 分半到 3 分多钟。排队的人多时会更久,程序里不要设太短的超时,也不要因为等得久就重复提交。

怎么用图片生成视频?

图片链接写在 input_reference(一张)或 images(多张)里;本地图片用 multipart 上传,字段名是 input_reference,一次一张。veo 系列传 2 张图时是首尾帧;minimax-h3-b、minimax-h3-c、grok-imagine-video-1.5 必须带图;veo-3.1-fast-1080p 不能带图。

视频生成怎么收费?失败扣钱吗?

有三种算法:veo 系列、muse-video、omni-flash 按条收,一条一个价;gemini-omni 两个按条收,价格看清晰度;其余按秒数乘以所选清晰度的每秒单价。提交成功时扣费,生成失败会自动退回;参数写错会直接被拒绝,不扣钱。具体价格见模型广场。

能在控制台游乐场或 Cherry Studio 里生成视频吗?

不能。视频走的是 OpenAI Videos 接口(/v1/videos),控制台的游乐场和 Cherry Studio 这类聊天软件只会调聊天接口。要用 curl、Python 等写代码调用,或者用支持 OpenAI Videos 接口的工具。

发现内容有误?发邮件到 support@api.foo 告诉我们。