Skip to content

Appel via l'API (images / vidéos)

Format d'interface standard OpenAI, authentification par jeton. Images : réponse synchrone en base64 ; vidéos : tâche asynchrone (créer → interroger → télécharger).

Groupe du jeton

Le jeton doit appartenir au groupe media / media-gen, sinon vous obtiendrez l'erreur « aucun canal disponible ». Voir Choisir un groupe.

Images · Texte vers image

POST https://byesu.com/v1/images/generations
Authorization: Bearer sk-votre-jeton
Content-Type: application/json
ChampObligatoireDescription
modelNom du modèle, voir Génération d'images
promptPrompt
sizeLargeur x hauteur en pixels, détermine à la fois le ratio et le palier de résolution : grand côté ≈1024 → 1K, ≈2048 → 2K, ≈3840 → 4K. Par exemple "1024x1024" (1:1 · 1K), "2048x1152" (16:9 · 2K), "3840x3840" (1:1 · 4K). Si omis : 1:1 au palier de base
bash
curl https://byesu.com/v1/images/generations \
  -H "Authorization: Bearer sk-votre-jeton" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "nano-banana-2",
    "prompt": "Un golden retriever courant dans un champ de blé doré au crépuscule, ambiance cinématographique",
    "size": "2048x1152"
  }'

Réponse (l'image est un PNG encodé en base64) :

json
{ "data": [ { "b64_json": "<chaîne base64>" } ] }

Images · Image vers image (images de référence)

Utilisez POST /v1/images/edits au format multipart/form-data : les images de référence sont envoyées comme fichiers (champ image, répétable pour en transmettre plusieurs, ≤ 8 Mo chacune ; la limite dépend du modèle, voir Génération d'images) :

bash
curl https://byesu.com/v1/images/edits \
  -H "Authorization: Bearer sk-votre-jeton" \
  -F model="nano-banana-2" \
  -F prompt="Transforme cette photo en aquarelle" \
  -F size="1024x1024" \
  -F image=@ref1.png \
  -F image=@ref2.png

Le format de la réponse est identique à celui du texte vers image.

Vidéos (asynchrone, style Sora)

Trois étapes : créer la tâche → interroger l'état → télécharger le mp4.

python
import requests, time

BASE = "https://byesu.com"
H = {"Authorization": "Bearer sk-votre-jeton"}

# 1. Créer la tâche
task = requests.post(f"{BASE}/v1/videos", headers=H, json={
    "model": "gemini-veo31",
    "prompt": "Les vagues frappent les rochers, ralenti, ambiance cinématographique",
    "seconds": "6",           # durée (secondes), valeurs possibles selon le modèle
    "size": "1280x720",       # le ratio s'exprime via la taille ; 1920x1080 = 1080p (selon les modèles)
}).json()

# 2. Interroger jusqu'à la fin (de quelques dizaines de secondes à quelques minutes)
while task["status"] not in ("completed", "failed"):
    time.sleep(5)
    task = requests.get(f"{BASE}/v1/videos/{task['id']}", headers=H).json()

# 3. Télécharger le mp4
if task["status"] == "completed":
    mp4 = requests.get(f"{BASE}/v1/videos/{task['id']}/content", headers=H)
    open("out.mp4", "wb").write(mp4.content)

Image vers vidéo : à la création de la tâche, passez en multipart/form-data et placez l'image servant de première image de la vidéo dans le champ fichier input_reference (model / prompt / seconds / size sont transmis en même temps comme champs de formulaire). runway-gen4-turbo exige cette image de départ.

Vidéos facturées à la seconde

Prix de la vidéo = tarif par seconde × seconds. En cas d'échec de la tâche, remboursement automatique.

Messages d'erreur

  • « Aucun canal disponible » → le groupe du jeton n'est pas le bon, voir Choisir un groupe
  • too many reference images → le nombre d'images de référence dépasse la limite du modèle
  • 401 / Solde insuffisant / Autres → voir Erreurs courantes et solutions

Un problème ? Contactez le support ou rejoignez notre groupe.