Veo 3 und Sora heben Text-to-Video auf dieselbe Qualitätsstufe, auf der Text-to-Image vor anderthalb Jahren stand. Der Haken: Beide Anbieter sperren den Zugang hinter Wartelisten, regionalen Einschränkungen und eigenwilligen Abrechnungs-Flows weg, die nicht zum Rest deines KI-Stacks passen.
Diese Anleitung führt dich durch deinen ersten Veo 3- und Sora-API-Call über Brievio — die echten Modelle, keine Warteliste, OpenAI-kompatible Authentifizierung, abgerechnet pro Sekunde generiertem Video, Ergebnisse ausgeliefert von einer permanenten URL. Gesamtzeit: rund fünf Minuten.
Setup
- Registriere dich unter brievio.com/app/signup. Du bekommst $2 Startguthaben — genug für ein paar 5-Sekunden-Testclips.
- Lege einen Key unter /app/keys an. Er beginnt mit
sk-brievio-. - Exportiere ihn:
export BRIEVIO_API_KEY=sk-brievio-....
Text-to-Video mit Veo 3
Veo 3 ist derzeit das beste Text-to-Video-Modell am Markt für cineastische Aufnahmen — es versteht Kamerasprache (Dolly, Push-in, Rack Focus), erzeugt stabile Lichtstimmung über Schnitte hinweg und verarbeitet 24-fps-Bewegung korrekt. Generierungen dauern 30 Sekunden bis ein paar Minuten; die HTTP-Antwort ist synchron — setze ein langes Client-Timeout.
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, # Generierungen dauern 30 Sek. bis mehrere Minuten
)
resp.raise_for_status()
data = resp.json()
print(data["data"][0]["url"])Die Antwort ist im OpenAI-Stil: { data: [{ url: '...' }] }. Die URL ist permanent, ausgeliefert von files.brievio.com — lade sie einmal in deinen eigenen Speicher herunter, wenn du langfristiges Hosting brauchst. Der Clip ist der echte Veo-3-Output, keine neu kodierte oder mit Wasserzeichen versehene Kopie.
Image-to-Video
Das Verankern mit einem Bild ist meist die Stelle, an der du produktionsreife Ergebnisse bekommst. Veo 3 unterstützt zwei Bildmodi:
image_mode: "frame"— ein einzelnes Bild ist das erste Frame; zwei Bilder sind erstes + letztes Frame. Standard fürimage_url.image_mode: "reference"— bis zu 3 Stil-Referenzen für Charakter- bzw. Garderoben-Konsistenz, ohne Frames zu erzwingen.
# image-to-video: Übergib eine image_url, um das erste Frame zu verankern.
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", # ein Bild => erstes Frame
"duration": 6,
"aspect_ratio": "9:16", # vertikal, mobil-nativ
},
timeout=600,
)
print(resp.json()["data"][0]["url"])Wenn du noch keine öffentliche URL für dein Anker-Bild hast, schick die Bytes an /v1/files und Brievio hostet die Datei für dich unter files.brievio.com:
# Hast du keine öffentliche URL, lade die Bytes hoch; Brievio hostet die Datei.
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"] # permanente files.brievio.com-URLSora und weitere Modelle
Derselbe Endpoint-Shape funktioniert für jedes Video-Modell im Katalog — übergib einfach den passenden Modell-Slug:
veo-3— cineastisch, 1080p, unterstützt Image-to-Video.sora-2— OpenAI Sora.seedance-1-5-pro,seedance-2-0-pro— ByteDance, sehr stark bei Charakter-Bewegung.
Unter /models findest du die aktuelle Liste und den Sekundenpreis je Modell.
Aus 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 entspricht nicht dem Shape des OpenAI-SDK, aber derselbe
// Auth-Header funktioniert — ruf es mit fetch auf:
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);Preismodell
Video-Modelle rechnen pro Sekunde Output ab, nicht pro Token. Brievio veröffentlicht den Sekundentarif für jedes Video-Modell auf /pricing — knapp unter der offiziellen Liste. Ein gängiger 8-Sekunden-Veo-3-Clip in 1080p kostet ein paar Cent. Fehlgeschlagene Generierungen (4xx / 5xx) werden nie berechnet.
Production-Checkliste
- Setze ein 10-Minuten-HTTP-Timeout. Das Gateway pollt upstream bis zu 540 Sek. und gibt 504 zurück, wenn das Modell danach noch arbeitet. Bei sehr langen Jobs: erneut versuchen — Generierungen sind pro Prompt idempotent.
- Persistiere die Ergebnis-URL. Auch wenn files.brievio.com-URLs permanent sind, sollte dein Produkt eine eigene Kopie im Speicher haben, den du kontrollierst.
- Behandle 429er mit Backoff. Video-Modelle sind GPU-gebunden; kurze Engpässe sind normal. Der retry-after-Header wird berücksichtigt, sofern vorhanden.
- Cache nach Prompt-Hash, wenn sinnvoll. Derselbe Prompt + Seed + Modell liefert nahezu identisches Video — zweimal dafür zu zahlen ist Verschwendung.
Fragen: contact@brievio.com. Das Team hinter dem Gateway liest jede E-Mail und antwortet innerhalb von 24 Stunden.