返回部落格
指南·2026年5月23日·閱讀約 7 分鐘

Veo 3 與 Sora API 快速入門——5 分鐘完成文字轉影片與影像轉影片

透過 OpenAI 風格 API 完成首次 Veo 3 影片生成呼叫:文字轉影片、具備首幀/尾幀控制的影像轉影片、檔案上傳,以及可直接用於生產環境的 Python 與 Node 範例。Veo 3 今日即可使用;Sora 已列入同一端點的開發路線圖。不需候補名單,也不必分別向各供應商付費。

Veo 3 與 Sora 將文字轉影片帶到與十八個月前文字轉圖像相同的品質標準。問題在於:供應商透過候補名單、地區限制與專屬付款流程限制存取,而這些流程無法與其餘 AI 技術堆疊順利協作。

在 Kunavo,目前可用的文字轉影片模型是 Google Veo 3,透過單一 OpenAI 相容端點提供 — 無需候補名單,使用 OpenAI 相容驗證,按影片計費,結果由永久網址提供。Sora(sora-2)已列入路線圖:由於端點與模型無關,日後切換只需變更一個 model 字。這份指南將在約五分鐘內完成你的第一個 Veo 3 呼叫。完整說明請參閱 Sora API 指南。

設定

  1. 在 kunavo.com/app/signup 註冊。從 10 美元起儲值,按用量付費——足夠把這份指南中的每個範例都執行好幾遍,餘額永不過期。
  2. 在 /app/keys 建立金鑰。它會以 sk-kn- 開頭。
  3. 匯出:export KUNAVO_API_KEY=sk-kn-...。

使用 Veo 3 進行文字轉影片

Veo 3 目前是市場上最適合電影感鏡頭的文字轉影片模型——能理解攝影機語言(dolly、push-in、rack focus),在剪接之間維持穩定光線,並正確處理 24fps 動態。生成需要 30 秒到幾分鐘;HTTP 回應是同步的——請為用戶端設定較長的逾時時間。

text_to_video.py
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.py
# 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 下:

upload_anchor.py
# 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 URL

Sora 與其他模型

相同的端點格式適用於目錄中的所有影片模型——傳入相應的模型 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

veo.mjs
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 小時內回覆。