API Reference

REST API complète pour gérer vos projets, rendus, partages et plus encore. Base URL : https://api.demobro.com

Content-Type: application/json
Auth: Bearer JWT
Responses: JSON

Authentification

JWT (JSON Web Token) pour toutes les requêtes authentifiées. Les tokens access expirent après 5 min, utilisez le refresh token pour en obtenir un nouveau.

Utilisation du token

# Ajoutez le header Authorization à chaque requête
curl -H "Authorization: Bearer <access_token>" \
     https://api.demobro.com/api/projects/

Projets

CRUD complet sur vos projets de démo. Chaque projet contient une configuration YAML DemoDSL.

Rendus

Lancez des rendus vidéo à partir d'un projet. Le rendu est asynchrone — le statut progresse de pending → processing → completed.

Partages

Créez des liens de partage publics pour vos rendus avec analytics, protection par mot de passe et expiration.

Endpoints publics (sans authentification)

GET/api/share/public/{token}/ — Récupérer la page de partage publique
POST/api/share/public/{token}/session/— Créer une session de vue
POST/api/share/public/{token}/events/— Enregistrer des événements analytics

Templates

Galerie de templates publics que vous pouvez forker dans vos projets.

Facturation

Gestion des abonnements Stripe, crédits et consommation.

LLM

Génération IA pour vos configurations YAML, narrations et effets visuels.

Plugins

Plugins de rendu extensibles : Blender, Mobile, Webinar, 3D Product.

Connecteurs

Intégrations CRM et webhooks pour synchroniser vos données.

SDK Python

Wrapper Python pour l'API REST. Installez avec pip et commencez en 3 lignes.

Installation

pip install demodsl

Authentification

from demodsl import DemoBroClient

# Option 1 : credentials file (~/.demodsl/credentials)
client = DemoBroClient()

# Option 2 : token direct
client = DemoBroClient(token="eyJ...")

Créer un projet et lancer un rendu

# Créer un projet
project = client.projects.create(
    name="Mon Produit",
    yaml_config=open("demo.yaml").read(),
)

# Lancer un rendu cloud
render = client.renders.create(project_id=project.id)

# Attendre la fin du rendu
render.wait()
print(render.status)      # "completed"
print(render.video_url)   # https://...
print(render.duration)    # 154.0

Partager un rendu

share = client.shares.create(
    render=render.id,
    title="Démo pour le client",
    allow_download=True,
    expires_at="2024-12-31",
)

print(share.share_url)    # https://app.demobro.com/share/xK9mQ2p...

CLI

# Login
$ demodsl login

# Rendu cloud
$ demodsl run cloud demo.yaml

# Rendu local
$ demodsl run local demo.yaml --out video.mp4

# Lister les projets
$ demodsl projects list

Codes d'erreur

L'API retourne des codes HTTP standards avec un body JSON détaillé.

CodeDescription
200Succès
201Ressource créée
204Suppression réussie (pas de body)
400Requête invalide — vérifiez les champs envoyés
401Non authentifié — token manquant ou expiré
403Accès refusé — vous n'êtes pas propriétaire de cette ressource
404Ressource introuvable
429Trop de requêtes — rate limit atteint
500Erreur serveur interne
503Service indisponible (ex: provider LLM down)
// Exemple d'erreur 400
{
  "yaml_config": ["Ce champ ne contient pas du YAML valide."],
  "name": ["Ce champ est requis."]
}

// Exemple d'erreur 401
{
  "detail": "Authentication credentials were not provided."
}