Veo 3 與 Sora 讓文字生影片站上了十八個月前文字生圖片所達到的 同一條品質線上。問題在於:這兩家供應商都把存取權鎖在候補名單、 地區限制,以及一套無法跟你其餘 AI 技術堆疊相容的客製化計費流程 之後。
這份指南會帶你透過 Brievio 完成你的第一次 Veo 3 與 Sora API 呼叫 — 貨真價實的模型、沒有候補名單、 OpenAI 相容的驗證方式、按生成影片的每一秒計費,結果則由一個永久 URL 提供。總共耗時:大約五分鐘。
前置設定
- 在 brievio.com/app/signup 註冊。 註冊就送 $2 額度 — 足夠跑幾段 5 秒的測試短片。
- 在 /app/keys 建立一把金鑰。它會以
sk-brievio-開頭。 - 匯出它:
export BRIEVIO_API_KEY=sk-brievio-...。
用 Veo 3 做文字生影片
在電影感鏡頭上,Veo 3 是目前市面上最好的文字生影片模型 — 它聽得懂 鏡頭語言(推軌、推進、變焦對焦),在不同剪接之間都能維持穩定的光線, 並能正確處理 24fps 的運動。生成需要 30 秒到數分鐘;HTTP 回應是 同步的 — 請把用戶端逾時設長一點。
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_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 底下替你代管這個檔案:
# 如果你沒有公開的 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 URLSora 與其他模型
同一套端點形狀適用於型錄裡的每一個影片模型 — 傳入對應的 模型代稱即可:
veo-3— 電影感、1080p、支援圖片生影片。sora-2— OpenAI Sora。seedance-1-5-pro、seedance-2-0-pro— 字節跳動,在角色運動上非常強。
到 /models 查看即時清單,以及每個模型 的每秒價格。
從 Node/TypeScript 呼叫
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);計費模型
影片模型按輸出的每一秒計費,而不是按權杖。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 小時內回覆。