Loading...
Loading...
更快、更实惠的 Veo 3.1 版本,涵盖文本生成视频、图像生成视频、参考图生成视频以及首尾帧过渡。
No output yet
Run the model to see generated results.
import requests
result = requests.post(
'https://api.e2x.ai/v1/jobs/submit',
headers={
'Authorization': f'Bearer {API_KEY}',
'Content-Type': 'application/json'
},
json={
'model': 'google/veo-3.1-fast/reference-to-video',
'input': {}
}
)import time
job_id = result.json()['jobId']
while True:
response = requests.get(
f'https://api.e2x.ai/v1/jobs/{'{job_id}'}',
headers={'Authorization': f'Bearer {'{API_KEY}'}'}
)
data = response.json()['data']
if data['status'] == 'completed':
print('Done!', data['outputs'][0]['url'])
break
elif data['status'] == 'failed':
raise Exception(f"Job failed: {'{'}data['error']['message']{'}'}")
time.sleep(2)按时长和分辨率估算每次生成的成本。您只需为实际运行的部分付费。
当同一张脸、同一件外套或同一家店面必须在一整批片子中都保持不变时,您用的就是这个 endpoint。我们把 Google 的 Veo 3.1 Fast 运行为 google/veo-3.1-fast/reference-to-video,它接受一个装着最多三张参考图像的 image_urls 数组,我们按秒计费:每秒 $0.01,开启音频时 ×1.5。这里的每一段片子都是 8 秒,所以在 720p 带声音的情况下,价格是每段 $0.12。
一张图就够了,而且短一点的片子更合适?请用 Veo 3.1 Fast image-to-video —— 它让单张起始帧动起来,并且能给您 4 秒或 6 秒。什么都不用上传?Veo 3.1 Fast text-to-video 只靠一条 prompt 就能跑。
按秒计量在这个模型上是通例——Google、fal.ai 和 Replicate 都这么做,我们也一样。既然 reference-to-video 被固定在 8 秒,下面这张表就是唯一要紧的配置。数据核查于 2026 年 8 月 26 日,720p 带音频:
| API 提供商 | 计费方式 | 费率(720p,音频开启) | 8 秒片段 | 与我们相比 |
|---|---|---|---|---|
| E2X(当前) | 按秒 | $0.01/秒 ×1.5 音频 | $0.12 | — |
| Google Gemini API | 按秒 | $0.10/秒 | $0.80 | 我们价格的 6.7 倍 |
| fal.ai | 按秒 | $0.15/秒 | $1.20 | 我们价格的 10 倍 |
| Replicate | 按秒 | $0.15/秒 | $1.20 | 我们价格的 10 倍 |
| E2X 标价(未打折) | 按秒 | $0.10/秒 ×1.5 | $1.20 | 我们未打折的费率 |
请把最后一行对着那两个市场平台读。我们一段 8 秒片子的标价是 $1.20 —— 恰好就是 fal.ai 和 Replicate 收的数目。 您今天付的是它的十分之一,而且仍落在 Google 自家 API 的 6.7 分之一以下。这个差距是同一个模型上一次正在生效的折扣,而不是一个被阉割过的档位。
请慎重地为 1080p 做预算:fal.ai 和 Replicate 把 720p → 1080p 这一步免费包含在内,而 Google 会按更高的每秒费率收费。分辨率在我们这边同样是一个倍率——当前数字见本模型的 llms.txt。
价格与产品条款可能随时间变化;在做出采购决定前,请核对各家提供商的当前价格。Google 的 Batch 或 Flex 价格在调度、可用容量和处理条件上均有所不同,因此与标准的按需 API request 并不直接等价,已从本对比中排除。这是一次限定范围的对比,并非声称 E2X 在任何配置下都是全球最便宜的选择。
Google 的限制写得很明白:「最多使用三张参考图像来引导内容」,在他们的 schema 中被描述为「最多三张用作风格与内容参考的图像」。三张。第四张已经超出模型接受的范围。
这个预算逼着您做一个决定,而这正是这个 endpoint 有意思的地方。您把三个槽位花在绝对不能漂移的东西上。一次战役拍摄通常是这样分的:一张出镜人物的干净肖像、一张展示全身穿搭的全身照、一张场地照片。于是这一组里的每一段片子回来时都是同一个人、同一身衣服、同一个地方——您只改 prompt。
产品类的分法不同:物体的两个角度,加一帧品牌的色彩处理。原理相同。参考图承载身份,prompt 承载动作。
这不是 image-to-video 的活儿。在那边,您的图像就是第一帧。在这里,参考图是引导,而开场帧是由它们生成出来的。需要一段从某张已获批准的静图开始的片子?那是另一个 endpoint。
Google 的规则是这么写的:时长「在使用扩展、参考图像,或使用 1080p 与 4k 分辨率时,必须为 '8'」。参考图像就在那份清单上,所以另外两个 endpoint 提供的 4 秒和 6 秒选项在这里并不存在。我们的 schema 里仍然显示着 duration 枚举;对这项 capability 而言,唯一有效的取值是 "8"。
请据此做预算。一个六段的序列就是 48 秒输出——在我们这里是 $0.72,在 fal.ai 或 Replicate 上是 $7.20。
必填字段:prompt 和 image_urls。
curl -X POST https://api.e2x.ai/v1/jobs/submit \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "google/veo-3.1-fast/reference-to-video",
"input": {
"prompt": "图 1 里的女人,穿着图 2 里的大衣,走进图 3 的大堂并抖落身上的雨水。她抬起头说:\"你等了。\" 温暖的钨丝灯光,大理石回声。",
"image_urls": [
"https://example.com/talent-portrait.jpg",
"https://example.com/wardrobe-coat.jpg",
"https://example.com/lobby-set.jpg"
],
"aspect_ratio": "16:9",
"resolution": "720p",
"duration": "8",
"has_sound": "true"
}
}'
提交后会返回一个 job ID;对它做 polling,或者注册一个 webhook:
const headers = {
Authorization: `Bearer ${process.env.E2X_API_KEY}`,
"Content-Type": "application/json",
};
const submitted = await fetch("https://api.e2x.ai/v1/jobs/submit", {
method: "POST",
headers,
body: JSON.stringify({
model: "google/veo-3.1-fast/reference-to-video",
input: {
prompt:
"图 1 里的吉祥物跳上图 2 里的台面,撞倒一只杯子后僵住不动。吱吱的脚步声,一声瓷器碰撞,然后是寂静。",
image_urls: [
"https://example.com/mascot-turnaround.png",
"https://example.com/kitchen-set.jpg",
],
aspect_ratio: "9:16",
resolution: "720p",
duration: "8",
has_sound: "true",
seed: 60411,
},
}),
}).then((r) => r.json());
const jobId = submitted.data.jobId;
while (true) {
const job = await fetch(`https://api.e2x.ai/v1/jobs/${jobId}`, { headers })
.then((r) => r.json());
if (job.data.status === "completed") {
console.log(job.data.outputs[0].url);
break;
}
if (job.data.status === "failed") {
throw new Error(job.data.error?.message || "Generation failed");
}
await new Promise((r) => setTimeout(r, 5000));
}
状态走 pending → processing → completed,或者终止于 failed / cancelled。请按每个 job 大约四分钟来规划——Google 的官方窗口是 11 秒下限、高峰期 6 分钟。如果您希望一组生成结果彼此押韵,请在整组中复用同一个 seed。
同样的权重,同样的按秒价格。您输入的形态决定了 endpoint:
| Endpoint | 时长选项 | 8 秒片段,720p + 音频 | 什么时候选它 |
|---|---|---|---|
| Veo 3.1 Fast reference-to-video | 仅 8 秒 | $0.12 | 最多 3 张图像必须在多段片子间固定一张脸、一身穿搭或一个地点 |
| Veo 3.1 Fast image-to-video | 4 / 6 / 8 秒 | $0.12 | 一张静图就应当是字面意义上的第一帧 |
| Veo 3.1 Fast text-to-video | 4 / 6 / 8 秒 | $0.12 | 只有 prompt,没有东西可上传 |
| Omni Flash reference-to-video | — | $0.80(默认配置) | 另一个家族,当 Veo 的观感不是您想要的那种时 |
我们更希望您少花点钱。如果一张图就能办到,image-to-video 既是同样的价格,又解锁了 4 秒和 6 秒的片子——4 秒版本是 $0.06,是您在这里必付的固定 8 秒的一半。当跨多段片子的一致性才是真正的需求时,再来这个 endpoint,因为那正是其他几个做不到的唯一一件事。这个分类的其余内容在 reference-to-video 下;其他所有模型都在模型目录里。
模型收到的是一个没有标签的数组。payload 里没有任何东西说明第二个槽位是服装而不是第二个角色——所以请在 prompt 里说出来。
按序号指代是管用的:「图 1 里的女人」「图 2 里的大衣」「图 3 里的大堂」。几个词,就能让绝大部分导致输出串味的歧义消失。
还有三个习惯:
让每张参考图只干一件事。 一张同时装着人物、产品和房间的繁忙照片,等于让模型去猜您在意的是哪个。裁紧一点。
用文字把身份再说一遍。 「同样的银色短发,同样的圆框眼镜」会强化参考图所展示的内容。这是便宜的保险。
把对白写出来。 Google 原生生成音频,在他们的 API 里没有关闭开关,所以无论如何声音都会发生——人声、音效、环境音。把台词加引号,它就会落在正确的帧上。
Google 完整支持英语,并且没有针对这个模型评测过其他任何语言,所以请把指令文本保持为英文——引号里的台词可以是场景需要的任何语言。
两天的下载期限。 Google 对生成视频的保留期是两天——「您必须在生成后 2 天内下载您的视频」。对一个历时一周、由二十段片子构成的战役来说,这是一项架构决策,而不是一条脚注。job 一完成,就立刻把 outputs[0].url 复制进您自己的存储。
每份输出上都有 SynthID。 Google 的不可感知 watermark 会加到所有 Veo 视频上,并可通过他们的平台核验。没有任何提供商能禁用它。
人物生成受地区限制。 在欧盟、英国、瑞士以及中东北非地区,personGeneration 被限制为 allow_adult。
给您的参考图集做版本管理。 一致性依赖于每次都发送字节完全相同的参考图。批量跑到一半换上一张重新导出的肖像,是会看得出来的。
我们按输出每秒 $0.01 计费,开启音频时 ×1.5。这个 endpoint 固定为 8 秒,所以一段 720p 带声音的片子是 $0.12。更高的分辨率带有各自的倍率——在规划一批 1080p 之前,请查看实时模型页面。
最多三张。Google 的文档说您最多可以使用三张参考图像来引导内容,而他们的 schema 把它们描述为风格与内容参考。少于三张也没问题;两张很常见。
只要涉及参考图像,Google 就要求 8 秒——这与覆盖 1080p 和 4k 的是同一条规则。需要 4 秒或 6 秒?请改用 image-to-video 或 text-to-video endpoint:同一个模型,同样的按秒价格。
Image-to-video 把一张图像变成字面意义上的开场帧。Reference-to-video 把最多三张图像当作身份、服装、风格或场地的引导,然后生成一个与它们一致的开场帧。当跨多段片子的一致性比某个特定的第一帧更重要时,请用参考图。
包含。Google 原生生成对白、音效和环境音,在他们自己的 API 里没有办法禁用它。我们暴露了默认值为 true 的 has_sound,而这个设置会套用 ×1.5 的价格倍率。
所有 Veo 输出都带有 SynthID,这是 Google 用于 AI 生成内容的不可感知标记,可在他们的平台上核验。没有任何提供商——包括我们——能把它关掉。
我们按大约四分钟来预算。Google 公布的是 11 秒的最小值和高峰期 6 分钟的最大值,所以对一整组片子,请用 webhookUrl,而不是一直挂着 polling 循环。