Zurück zum Blog
Leitfaden·23. Mai 2026·7 Min. Lesezeit

Veo 3- und Sora-API-Schnellstart — Text-zu-Video und Bild-zu-Video in fünf Minuten

Ihre ersten Aufrufe zur Videogenerierung mit Veo 3 über eine OpenAI-ähnliche API: Text-zu-Video, Bild-zu-Video mit Kontrolle über das erste und letzte Bild, Datei-Uploads sowie ein produktionsreifes Python- und Node-Beispiel. Veo 3 ist heute verfügbar; Sora ist für denselben Endpunkt geplant. Keine Warteliste, keine separate Abrechnung pro Anbieter.

Veo 3 und Sora setzen Text-zu-Video heute auf dasselbe Qualitätsniveau, das Text-zu-Bild vor achtzehn Monaten erreicht hatte. Der Haken: Anbieter beschränken den Zugang durch Wartelisten, regionale Einschränkungen und individuelle Abrechnungsabläufe, die sich nicht gut in den Rest Ihres KI-Stacks integrieren lassen.

Auf Kunavo ist das derzeit verfügbare Text-zu-Video-Modell Google Veo 3, das über einen einzigen OpenAI-kompatiblen Endpunkt bereitgestellt wird — keine Warteliste, OpenAI-kompatible Authentifizierung, Abrechnung pro Video, Ergebnisse über eine dauerhafte URL. Sora (sora-2) steht auf der Roadmap: Da der Endpunkt modellunabhängig ist, lässt sich später darauf umstellen, indem ein einziges Wort im Wert von model geändert wird. Mit dieser Anleitung führen Sie in etwa fünf Minuten Ihren ersten Aufruf von Veo 3 aus. Das vollständige Bild finden Sie im Sora-API-Leitfaden.

Einrichtung

  1. Registrieren Sie sich unter kunavo.com/app/signup. Laden Sie ab $10 Guthaben auf und zahlen Sie nutzungsabhängig — genug, um jedes Beispiel dieser Anleitung mehrmals auszuführen; Ihr Guthaben verfällt nie.
  2. Erstellen Sie unter /app/keys einen Schlüssel. Er beginnt mit sk-kn-.
  3. Exportieren Sie ihn: export KUNAVO_API_KEY=sk-kn-....

Text-zu-Video mit Veo 3

Veo 3 ist derzeit das beste Text-zu-Video-Modell auf dem Markt für cineastische Aufnahmen — es versteht Kamerasprache (Dolly, Push-in, Schärfefahrt), erzeugt über Schnitte hinweg eine stabile Beleuchtung und verarbeitet Bewegungen mit 24 fps korrekt. Generierungen dauern 30 Sekunden bis einige Minuten; die HTTP-Antwort ist synchron — setzen Sie ein langes Client-Timeout.

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 (in Sekunden) legt die Cliplänge bei den Modellen mit sekundengenauer Abrechnung fest: den Seedance-Modellen und Wan 2.7. Die Veo-Modelle ignorieren den Wert; jeder Veo-Clip ist 8 Sekunden lang und wird pro Video abgerechnet.

Die Antwort folgt dem OpenAI-Stil: { data: [{ url: '...' }] }. Die URL ist dauerhaft und wird von files.kunavo.com bereitgestellt — laden Sie das Ergebnis einmal in Ihren eigenen Speicher herunter, wenn Sie langfristiges Hosting benötigen.

Bild-zu-Video

Mit einem Bild zu verankern ist normalerweise der Weg zu Ergebnissen in Produktionsqualität. Veo 3 unterstützt zwei Bildmodi:

  • image_mode: "frame" — ein einzelnes Bild ist das erste Einzelbild; zwei Bilder sind das erste und das letzte Einzelbild. Standard für image_url.
  • image_mode: "reference" — bis zu 3 Stilreferenzen für Konsistenz bei Charakteren und Kleidung, ohne Einzelbilder vorzugeben.
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"])

Wenn Sie noch keine öffentliche URL für Ihr Ankerbild haben, senden Sie die Bytes an /v1/files; Kunavo hostet die Datei dann unter files.kunavo.com für Sie:

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 und andere Modelle

Dieselbe Endpunktstruktur funktioniert für jedes Videomodell im Katalog — übergeben Sie den passenden Modell-Slug:

  • veo-3 — cineastisch, 1080p, unterstützt Bild-zu-Video. Jetzt verfügbar.
  • seedance-2, seedance-2-5 — ByteDance, besonders stark bei Charakterbewegungen.

OpenAI Sora (sora-2) steht auf der Roadmap und kann auf Kunavo noch nicht aufgerufen werden. Da /v1/video/generations modellunabhängig ist, ändert sich am Tag der Einführung an den obigen Aufrufen nur das Feld model; bis dahin ist Veo 3 das verfügbare Gegenstück über denselben Endpunkt.

Unter /models finden Sie die aktuelle Liste und den Preis für jedes Modell.

Aus 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);

Preismodell

Videomodelle rechnen pro Video oder pro Sekunde der Ausgabe ab, nicht pro Token: die Veo-Modelle pro Video, wobei jeder Clip 8 Sekunden lang ist, und die Seedance-Modelle und Wan 2.7 pro Sekunde. Kunavo veröffentlicht unter /pricing für jedes Modell den Preis. Ein 8-sekündiger Clip von Veo 3 in 1080p kostet $0.42. Fehlgeschlagene Generierungen (4xx / 5xx) werden niemals berechnet.

Checkliste für den Produktivbetrieb

  • Setzen Sie ein HTTP-Timeout von 10 Minuten. Das Gateway fragt den Upstream bis zu 540 s lang ab und gibt 504 zurück, wenn das Modell danach noch arbeitet. Bei sehr langen Jobs sollten Sie es erneut versuchen — Generierungen sind pro Prompt idempotent.
  • Speichern Sie die Ergebnis-URL dauerhaft. Auch wenn URLs von files.kunavo.com dauerhaft sind, sollte Ihr Produkt eine eigene Kopie in dem von Ihnen kontrollierten Speicher besitzen.
  • Behandeln Sie 429-Fehler mit Backoff. Videomodelle sind GPU-beschränkt; kurze Engpässe sind normal. Der retry-after-Header wird berücksichtigt, sofern vorhanden.
  • Cache nach Möglichkeit anhand des Prompt-Hashes. Wird derselbe Prompt zweimal gesendet, entstehen zwei Clips, und es wird zweimal abgerechnet: Das Gateway verwendet kein früheres Ergebnis wieder und sendet dem Modell keinen Seed.

Fragen: contact@kunavo.com. Das Team hinter dem Gateway liest jede E-Mail und antwortet innerhalb von 24 Stunden.