cd ../back to blog
$Guide//June 4, 2026//7 min read

Veo 3・Sora API クイックスタート — テキストから動画、画像から動画を 5 分で

OpenAI 互換の API で Veo 3 と Sora の最初の動画生成を実行します。テキストから動画、最初・最後のフレーム制御付きの画像から動画、ファイルアップロード、本番運用向けの Python と Node のサンプルまで。ウェイトリストなし、秒単位の正直な課金。

Veo 3 と Sora は、テキストからの動画生成を、18 か月前にテキストから 画像生成が到達したのと同じ品質水準まで引き上げました。問題は、どちらの プロバイダーも、ウェイトリスト・地域制限・独自の課金フローの背後に アクセスを閉じ込めていて、あなたの AI スタックの他の部分とうまく 噛み合わないことです。

本ガイドでは、Brievio を通じて最初の Veo 3 Sora の API 呼び出しを行う手順を解説します — 本物の モデルそのもの、ウェイトリストなし、OpenAI 互換の認証、生成された動画の 秒数単位での課金、結果は恒久的な URL から配信されます。所要時間は およそ 5 分です。

セットアップ

  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 は 2 つの画像モードに対応しています:

  • image_mode: "frame" — 画像 1 枚なら最初の フレーム、2 枚なら最初と最後のフレームになります。 image_url のデフォルトです。
  • image_mode: "reference" — フレームを強制せずに キャラクターや衣装の一貫性を保つため、最大 3 枚のスタイル参照を 指定できます。
image_to_video.py
# image-to-video: 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",      # 画像 1 枚 => 最初のフレーム
        "duration": 6,
        "aspect_ratio": "9:16",     # 縦型、モバイルにそのまま使える
    },
    timeout=600,
)
print(resp.json()["data"][0]["url"])

固定用の画像の公開 URL をまだ持っていない場合は、バイト列を /v1/files に POST すれば、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 とその他のモデル

同じエンドポイントの形が、カタログ内のすべての動画モデルで使えます — 該当するモデルの slug を渡すだけです:

  • veo-3 — シネマティック、1080p、画像から動画生成に対応。
  • sora-2 — OpenAI の Sora。
  • seedance-1-5-proseedance-2-0-pro — ByteDance 製で、キャラクターの動きに非常に強い。

最新の一覧と各モデルの秒単価は /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);

料金モデル

動画モデルはトークン単位ではなく、出力の秒数単位で課金します。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 時間 以内に返信します。