Veo 3 と Sora は、テキストからの動画生成を、18 か月前にテキストから 画像生成が到達したのと同じ品質水準まで引き上げました。問題は、どちらの プロバイダーも、ウェイトリスト・地域制限・独自の課金フローの背後に アクセスを閉じ込めていて、あなたの AI スタックの他の部分とうまく 噛み合わないことです。
本ガイドでは、Brievio を通じて最初の Veo 3 と Sora の API 呼び出しを行う手順を解説します — 本物の モデルそのもの、ウェイトリストなし、OpenAI 互換の認証、生成された動画の 秒数単位での課金、結果は恒久的な URL から配信されます。所要時間は およそ 5 分です。
セットアップ
- 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 は 2 つの画像モードに対応しています:
image_mode: "frame"— 画像 1 枚なら最初の フレーム、2 枚なら最初と最後のフレームになります。image_urlのデフォルトです。image_mode: "reference"— フレームを強制せずに キャラクターや衣装の一貫性を保つため、最大 3 枚のスタイル参照を 指定できます。
# 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 配下でファイルをホストします:
# 公開 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 とその他のモデル
同じエンドポイントの形が、カタログ内のすべての動画モデルで使えます — 該当するモデルの slug を渡すだけです:
veo-3— シネマティック、1080p、画像から動画生成に対応。sora-2— OpenAI の Sora。seedance-1-5-pro、seedance-2-0-pro— ByteDance 製で、キャラクターの動きに非常に強い。
最新の一覧と各モデルの秒単価は /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 時間 以内に返信します。