视频生成 API 怎么调用(2026):Veo 3.1、Seedance、Wan、MiniMax、Grok 文生视频和图生视频教程
本页目录
一句话说清:在 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 的密钥按分组创建,视频模型只在视频分组里。拿聊天用的密钥调视频模型,会报「无可用渠道」。
- 登录 api.foo,进入 控制台 → API 密钥,点「创建 API 密钥」。
- 选分组时,在下拉框里点「视频」这一类,选里面的分组。
- 创建后复制密钥,下面的例子里把它叫做
$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 告诉我们。