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

API Veo 3 et Sora : ton premier appel texte vers vidéo en 5 minutes

Génère de la vidéo avec les vrais modèles Veo 3 et Sora via une API compatible OpenAI : texte vers vidéo, image vers vidéo, URL permanentes, facturation à la seconde. Sans liste d’attente.

Veo 3 et Sora hissent la génération de vidéo à partir de texte au même niveau de qualité où le texte vers image se trouvait il y a dix-huit mois. Le hic : les deux fournisseurs verrouillent l’accès derrière des listes d’attente, des restrictions régionales et des circuits de facturation sur mesure qui ne s’intègrent pas au reste de ta stack IA.

Ce guide te montre comment passer ton premier appel API Veo 3 et Sora via Brievio — les vrais modèles, sans liste d’attente, avec une auth compatible OpenAI, facturés à la seconde de vidéo générée, et des résultats servis depuis une URL permanente. Temps total : environ cinq minutes.

Mise en place

  1. Inscris-toi sur brievio.com/app/signup. Tu reçois 2 $ de crédit à l’inscription — de quoi tester deux clips de 5 secondes.
  2. Crée une clé dans /app/keys. Elle commence par sk-brievio-.
  3. Exporte-la : export BRIEVIO_API_KEY=sk-brievio-....

Texte vers vidéo avec Veo 3

Veo 3 est aujourd’hui le meilleur modèle de texte vers vidéo du marché pour les plans cinématographiques — il comprend le langage de la caméra (travelling, plan rapproché, transfert de point), produit un éclairage stable d’un plan à l’autre, et gère correctement le mouvement à 24 fps. Les générations prennent de 30 secondes à quelques minutes ; la réponse HTTP est synchrone — règle un long timeout côté client.

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,   # les générations prennent de 30 s à plusieurs minutes
)
resp.raise_for_status()
data = resp.json()
print(data["data"][0]["url"])

La réponse suit le format OpenAI : { data: [{ url: '...' }] }. L’URL est permanente, servie depuis files.brievio.com — télécharge-la une fois dans ton propre stockage si tu as besoin d’un hébergement à long terme. Le clip est la vraie sortie de Veo 3, pas une copie ré-encodée ni filigranée.

Image vers vidéo

Fixer un point de départ avec une image, c’est en général là que tu obtiens des résultats de qualité production. Veo 3 propose deux modes d’image :

  • image_mode: "frame" — une seule image devient la première image ; deux images donnent première + dernière image. C’est la valeur par défaut pour image_url.
  • image_mode: "reference" — jusqu’à 3 références de style pour la cohérence du personnage / des costumes, sans imposer d’images de cadrage.
image_to_video.py
# image vers vidéo : passe un image_url pour fixer la première image.
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",      # une image => première image
        "duration": 6,
        "aspect_ratio": "9:16",     # vertical, natif mobile
    },
    timeout=600,
)
print(resp.json()["data"][0]["url"])

Si tu n’as pas déjà une URL publique pour ton image de référence, envoie les octets vers /v1/files et Brievio héberge le fichier pour toi sous files.brievio.com :

upload_anchor.py
# Si tu n'as pas d'URL publique, envoie les octets ; Brievio héberge le fichier.
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"]   # URL files.brievio.com permanente

Sora et les autres modèles

Le même format d’endpoint fonctionne pour chaque modèle vidéo du catalogue — il suffit de passer le slug du modèle voulu :

  • veo-3 — cinématographique, 1080p, gère l’image vers vidéo.
  • sora-2 — Sora d’OpenAI.
  • seedance-1-5-pro, seedance-2-0-pro — ByteDance, très solides sur le mouvement des personnages.

Consulte /models pour la liste à jour et le prix à la seconde de chacun.

Depuis 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 n'est pas dans le format du SDK OpenAI, mais le même
// en-tête d'auth fonctionne — appelle-le avec 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);

Modèle de tarification

Les modèles vidéo facturent à la seconde de sortie, pas au token. Brievio publie le tarif à la seconde sur /pricing pour chaque modèle vidéo — fixé juste en dessous du tarif officiel. Un clip Veo 3 1080p de 8 secondes, cas courant, coûte quelques centimes. Les générations échouées (4xx / 5xx) ne sont jamais facturées.

Checklist de production

  • Règle un timeout HTTP de 10 minutes. La passerelle interroge l’amont jusqu’à 540 s, et renvoie un 504 si le modèle travaille encore au-delà. Pour les tâches très longues, réessaie — les générations sont idempotentes par prompt.
  • Conserve l’URL du résultat. Même si les URL files.brievio.com sont permanentes, ton produit doit posséder sa propre copie dans le stockage que tu contrôles.
  • Gère les 429 avec un backoff. Les modèles vidéo sont limités par le GPU ; une brève contention est normale. L’en-tête retry-after est respecté quand il est présent.
  • Mets en cache par hash de prompt si c’est pertinent. Le même prompt + seed + modèle renvoie une vidéo quasi identique — payer deux fois pour elle, c’est du gâchis.

Des questions : contact@brievio.com. L’équipe derrière la passerelle lit chaque e-mail et répond sous 24 heures.