cd ../返回博客
$Guide//2026年6月4日//7 min read

Veo 3 与 Sora API 快速上手——五分钟跑通文生视频与图生视频

用 OpenAI 风格接口发出第一次 Veo 3 与 Sora 视频生成调用:文生视频、图生视频、首末帧控制与文件上传。无需候补名单,按秒计费。

Veo 3 和 Sora 把文生视频拉到了文生图在十八个月前所站上的同一条质量线上。 问题在于:两家供应商都把使用权挡在候补名单、地区限制,以及一套跟你其余 AI 技术栈格格不入的专有计费流程之后。

本指南带你通过 Brievio 发出第一次 Veo 3 Sora API 调用 —— 货真价实的模型、没有候补名单、与 OpenAI 兼容的鉴权方式、按生成视频的秒数计费,结果由一个永久有效的 URL 提供。 全程大约五分钟。

准备工作

  1. brievio.com/app/signup 注册。 注册即送 2 美元额度 —— 足够你跑上几段 5 秒的测试片段。
  2. /app/keys 创建一个密钥,它以 sk-brievio- 开头。
  3. 导出它:export BRIEVIO_API_KEY=sk-brievio-...

用 Veo 3 做文生视频

论电影感镜头,Veo 3 目前是市面上最好的文生视频模型 —— 它懂镜头语言 (推轨、推近、移焦),能在剪辑之间保持稳定的光照,也能正确处理 24fps 的运动。一次生成耗时 30 秒到几分钟;HTTP 响应是同步的 —— 请把客户端 超时设得长一些。

text_to_video.py
import requests, os, time

KEY = os.environ["BRIEVIO_API_KEY"]

resp = requests.post(
    "https://api.brievio.com/v1/video/generations",
    headers={"Authorization": f"Bearer {KEY}"},
    json={
        "model": "veo-3",
        "prompt": "A drone shot pulling back from a quiet mountain lake at dawn, mist rising off the water. Cinematic, 24fps, soft golden light.",
        "duration": 8,
        "aspect_ratio": "16:9",
        "resolution": "1080p",
    },
    timeout=600,   # 一次生成耗时 30 秒到几分钟
)
resp.raise_for_status()
data = resp.json()
print(data["data"][0]["url"])

响应是 OpenAI 风格的: { data: [{ url: '...' }] }。这个 URL 是 永久有效的,由 files.brievio.com 提供 —— 如果你需要长期托管,下载一次 存进你自己的存储即可。该片段是货真价实的 Veo 3 输出,不是经过重新编码 或加水印的副本。

图生视频

用一张图来锚定,通常才是你拿到生产级结果的地方。Veo 3 支持两种图像 模式:

  • image_mode: "frame" —— 单张图作为首帧; 两张图则是首帧 + 末帧。这是 image_url 的默认行为。
  • image_mode: "reference" —— 最多 3 张风格 参考图,用于在不强制指定帧的情况下,保持角色 / 服装的一致性。
image_to_video.py
# 图生视频:传入一个 image_url 来锚定首帧。
resp = requests.post(
    "https://api.brievio.com/v1/video/generations",
    headers={"Authorization": f"Bearer {KEY}"},
    json={
        "model": "veo-3",
        "prompt": "She smiles, then walks out of frame to the left",
        "image_url": "https://files.brievio.com/<your-upload>.jpg",
        "image_mode": "frame",      # 一张图 => 作为首帧
        "duration": 6,
        "aspect_ratio": "9:16",     # 竖屏,原生适配手机
    },
    timeout=600,
)
print(resp.json()["data"][0]["url"])

如果你手上还没有锚定图的公网 URL,把文件字节 POST 到 /v1/files,Brievio 就会替你把文件托管在 files.brievio.com 下:

upload_anchor.py
# 如果你手上没有公网 URL,可以直接上传文件字节,Brievio 负责托管。
with open("anchor.jpg", "rb") as f:
    up = requests.post(
        "https://api.brievio.com/v1/files",
        headers={"Authorization": f"Bearer {KEY}"},
        files={"file": f},
    )
image_url = up.json()["url"]   # 永久有效的 files.brievio.com URL

Sora 和其他模型

目录里的每一个视频模型都用同样的接口形态 —— 传入对应的模型标识符 即可:

  • veo-3 —— 电影感,1080p,支持图生视频。
  • sora-2 —— OpenAI Sora。
  • seedance-1-5-proseedance-2-0-pro —— 字节跳动出品,在角色运动上非常出色。

实时列表以及每个模型的每秒价格,参见 /models

从 Node / TypeScript 调用

sora.mjs
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.BRIEVIO_API_KEY,
  baseURL: "https://api.brievio.com/v1",
});

// /v1/video/generations 不在 OpenAI SDK 的方法形态里,但同一个鉴权
// 头照样能用 —— 用 fetch 直接调它:
const resp = await fetch(
  "https://api.brievio.com/v1/video/generations",
  {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      Authorization: `Bearer ${process.env.BRIEVIO_API_KEY}`,
    },
    body: JSON.stringify({
      model: "sora-2",
      prompt: "A red origami crane unfolding into a paper plane and flying away through a window",
      duration: 5,
      resolution: "1080p",
    }),
  },
);
const { data } = await resp.json();
console.log(data[0].url);

计费方式

视频模型按输出的秒数计费,而不是按 token。Brievio 在 /pricing 上为每一个视频模型公布每秒费率 —— 定价略低于官方标价。常见的一段 8 秒 Veo 3 1080p 片段,只需几美分。 失败的生成(4xx / 5xx)从不计费。

上线核对清单

  • 把 HTTP 超时设为 10 分钟。网关向上游轮询最长 540 秒,若模型在此之后仍在工作,则返回 504。对于特别耗时的任务, 重试即可 —— 按相同提示,生成是幂等的。
  • 把结果 URL 持久化。尽管 files.brievio.com 的 URL 是永久有效的,你的产品仍应在自己掌控的 存储里拥有一份属于自己的副本。
  • 用退避策略处理 429。视频模型受 GPU 资源约束; 短暂的争用是正常现象。当响应带有 retry-after 头时,会予以遵循。
  • 合理时按提示哈希做缓存。相同的提示 + 种子 + 模型 会返回近乎一致的视频 —— 为它付两遍钱是浪费。

有问题请联系:contact@brievio.com。 网关背后的团队会阅读每一封邮件,并在 24 小时内回复。