Veo 3 與 Sora 將文字轉影片帶到與十八個月前文字轉圖像相同的品質標準。問題在於:供應商透過候補名單、地區限制與專屬付款流程限制存取,而這些流程無法與其餘 AI 技術堆疊順利協作。
在 Kunavo,目前可用的文字轉影片模型是 Google Veo 3,透過單一 OpenAI 相容端點提供 — 無需候補名單,使用 OpenAI 相容驗證,按影片計費,結果由永久網址提供。Sora(sora-2)已列入路線圖:由於端點與模型無關,日後切換只需變更一個 model 字。這份指南將在約五分鐘內完成你的第一個 Veo 3 呼叫。完整說明請參閱 Sora API 指南。
設定
- 在 kunavo.com/app/signup 註冊。從 10 美元起儲值,按用量付費——足夠把這份指南中的每個範例都執行好幾遍,餘額永不過期。
- 在 /app/keys 建立金鑰。它會以
sk-kn-開頭。 - 匯出:
export KUNAVO_API_KEY=sk-kn-...。
使用 Veo 3 進行文字轉影片
Veo 3 目前是市場上最適合電影感鏡頭的文字轉影片模型——能理解攝影機語言(dolly、push-in、rack focus),在剪接之間維持穩定光線,並正確處理 24fps 動態。生成需要 30 秒到幾分鐘;HTTP 回應是同步的——請為用戶端設定較長的逾時時間。
import requests, os, time
KEY = os.environ["KUNAVO_API_KEY"]
resp = requests.post(
"https://api.kunavo.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.",
"aspect_ratio": "16:9",
"resolution": "1080p",
},
timeout=600, # generations take 30s to several minutes
)
resp.raise_for_status()
data = resp.json()
print(data["data"][0]["url"])duration(秒數)用來在按秒計費的模型(Seedance 系列模型和 Wan 2.7)上設定片段長度。Veo 模型會忽略它;每個 Veo 片段都是 8 秒,按影片計費。
回應採用 OpenAI 格式:{ data: [{ url: '...' }] }。URL 是永久的,由 files.kunavo.com 提供——如果需要長期託管,請下載一次並存入自己的儲存空間。
圖片轉影片
通常,使用圖片錨定是取得製作品質結果的關鍵。Veo 3 支援兩種圖片模式:
image_mode: "frame"——單張圖片是第一幀;兩張圖片則是第一幀加最後一幀。image_url的預設模式。image_mode: "reference"——最多 3 張風格參考圖,可維持角色/服裝一致性,而不強制指定影格。
# image-to-video: pass an image_url to anchor the first frame.
resp = requests.post(
"https://api.kunavo.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.kunavo.com/<your-upload>.jpg",
"image_mode": "frame", # one image => first frame
"aspect_ratio": "9:16", # vertical, mobile-native
},
timeout=600,
)
print(resp.json()["data"][0]["url"])如果你還沒有錨定圖片的公開 URL,可將位元組發送至 /v1/files,由 Kunavo 將檔案託管在 files.kunavo.com 下:
# If you don't have a public URL, upload bytes; Kunavo hosts the file.
with open("anchor.jpg", "rb") as f:
up = requests.post(
"https://api.kunavo.com/v1/files",
headers={"Authorization": f"Bearer {KEY}"},
files={"file": f},
)
image_url = up.json()["url"] # permanent files.kunavo.com URLSora 與其他模型
相同的端點格式適用於目錄中的所有影片模型——傳入相應的模型 slug:
veo-3——電影感、1080p,支援圖片轉影片。現已上線。seedance-2、seedance-2-5——ByteDance,在角色動作方面非常出色。
OpenAI Sora(sora-2)已列入開發路線圖——目前尚無法在 Kunavo 呼叫。由於 /v1/video/generations 與模型無關,Sora 上線後,上述呼叫只需變更 model 欄位;在此之前,Veo 3 是同一端點上的正式可用替代方案。
前往 /models 查看即時模型清單及各模型的價格。
使用 Node/TypeScript
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.KUNAVO_API_KEY,
baseURL: "https://api.kunavo.com/v1",
});
// /v1/video/generations isn't in OpenAI's SDK shape, but the same auth
// header works — call it with fetch:
const resp = await fetch(
"https://api.kunavo.com/v1/video/generations",
{
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${process.env.KUNAVO_API_KEY}`,
},
body: JSON.stringify({
model: "veo-3",
prompt: "A red origami crane unfolding into a paper plane and flying away through a window",
resolution: "1080p",
}),
},
);
const { data } = await resp.json();
console.log(data[0].url);定價模式
影片模型按影片或按輸出秒數計費,而非按 token 計費:Veo 模型按影片計費,且每個片段的長度都是 8 秒;Seedance 模型和 Wan 2.7 按秒計費。Kunavo 在 /pricing 為每個模型公布費率。8 秒 Veo 3 1080p 片段的費用為 $0.42。失敗的生成(4xx/5xx)絕不收費。
正式環境檢查清單
- 設定 10 分鐘的 HTTP 逾時。 閘道會輪詢上游服務最多 540 秒;若模型仍在處理,之後會回傳 504。對於非常耗時的工作,請重試——每次生成都會依提示詞具備冪等性。
- 保存結果 URL。 即使 files.kunavo.com URL 是永久的,你的產品仍應在自己控制的儲存空間中保留副本。
- 以退避策略處理 429。 影片模型受 GPU 資源限制,短暫壅塞很正常。若存在 retry-after 標頭,系統會遵循它。
- 合理時,依提示詞雜湊值快取。 同一個提示詞送出兩次,會生成兩個片段並計費兩次:閘道不會重複使用先前的結果,也不會向模型傳送 seed。
問題請寄至:contact@kunavo.com。閘道背後的團隊會閱讀每封電子郵件,並在 24 小時內回覆。