new
Crée un nouveau projet vide. Renvoie le projectSlug et l’editorUrl. Ajoutez des diapositives avec faces slides create + faces slides update. Le projet est créé sous l’équipe à laquelle votre clé API est associée (voir Authentification).
| Flag | Description |
|---|---|
--name <text> | Nom d’affichage du nouveau projet (par défaut : Untitled) |
--api-key <key> | Remplace la clé API |
generate
Génère une nouvelle présentation interactive à partir d’un prompt textuel. Décrivez ce que vous voulez (un pitch, un portfolio, un guide ou une proposition) et Faces s’occupe du contenu, des animations et de la mise en page.
| Flag | Description |
|---|---|
--prompt <text> | (obligatoire) Description du projet à générer |
--template <id> | Utiliser un projet existant comme template |
--wait | Attendre que le projet termine sa génération |
--api-key <key> | Remplace la clé API |
status
Vérifie le statut d’un job de génération.
| Flag | Description |
|---|---|
--wait | Interroge jusqu’à ce que le job réussisse ou échoue |
--api-key <key> | Remplace la clé API |
list
Liste vos projets.
| Flag | Description |
|---|---|
--published | Affiche uniquement les projets publiés |
--limit <n> | Nombre maximum de résultats (par défaut : 20, max : 100) |
--api-key <key> | Remplace la clé API |
get
Récupère les détails d’un projet spécifique.
rename
Renomme un projet. Modifie uniquement le nom d’affichage ; le slug et les URLs restent identiques.
| Flag | Description |
|---|---|
--name <text> | (obligatoire) Nouveau nom d’affichage |
--api-key <key> | Remplace la clé API |
duplicate
Crée une copie complète d’un projet, y compris toutes ses diapositives. La copie obtient son propre slug et une nouvelle URL non publiée.
publish
Publie la dernière version d’un projet sur son URL en direct.
unpublish
Met un projet publié hors ligne. Le projet et ses diapositives sont conservés et peuvent être republiés ultérieurement.
config get
Lit le fichier project.config.json d’un projet, y compris ses paramètres de mise en page et les design tokens partagés (palette et polices).
config update
Fusionne des clés dans project.config.json. Utilisez cette commande pour définir les design tokens du projet. Seules les clés que vous passez sont modifiées ; le reste est préservé.
| Flag | Description |
|---|---|
--config <json-or-file> | (obligatoire) Un objet JSON ou un chemin vers un fichier JSON contenant les clés de config à fusionner |
--api-key <key> | Remplace la clé API |
url get
Récupère la configuration d’URL actuelle d’un projet ainsi que les sous-domaines et domaines disponibles pour en changer.
url set
Modifie le chemin, change de sous-domaine, ou pointe le projet vers un domaine personnalisé. Nécessite un forfait payant.
| Flag | Description |
|---|---|
--path <p> | (obligatoire) Segment de chemin après le nom d’hôte (utilisez "" pour la racine) |
--subdomain-id <id> | Sous-domaine à héberger (depuis faces url get) |
--domain-id <id> | Domaine personnalisé à héberger (depuis faces url get ou faces domains create) |
--api-key <key> | Remplace la clé API |
--subdomain-id ou --domain-id.
Exemples :
subdomains create
Crée un sous-domaine personnalisé pour l’équipe du projet, puis connectez-le avec faces url set. Nécessite un forfait payant.
| Flag | Description |
|---|---|
--subdomain <label> | (obligatoire) Label du sous-domaine (lettres minuscules, chiffres, tirets) |
--api-key <key> | Remplace la clé API |
domains create
Connecte un domaine personnalisé et renvoie les enregistrements DNS à ajouter. Nécessite un forfait payant.
| Flag | Description |
|---|---|
--hostname <host> | (obligatoire) Domaine à connecter, sans protocole ni www (par ex. example.com) |
--api-key <key> | Remplace la clé API |
faces url set <slug> --path <p> --domain-id <id>.
teams list
Liste les équipes auxquelles votre clé API a accès. L’équipe personnelle est signalée par isPersonal.
slides list
Liste toutes les diapositives d’un projet.
slides get
Lit les fichiers source d’une diapositive (face.tsx, face.content.json, face.controls.json).
slides create
Crée une nouvelle diapositive vide. Renvoie l’ID de la nouvelle diapositive.
| Flag | Description |
|---|---|
--name <text> | (obligatoire) Nom d’affichage de la nouvelle diapositive |
--after <slide-id> | Insère après cette diapositive. Omettez pour ajouter à la fin |
--editing | Affiche immédiatement le dégradé de chargement sur la nouvelle diapositive. Appelez slides finish-editing une fois terminé |
--api-key <key> | Remplace la clé API |
slides reorder
Réordonne toutes les diapositives d’un projet selon un ordre donné, en un seul appel atomique. La liste --ids doit contenir exactement les IDs des diapositives existantes du projet, dans l’ordre final souhaité.
| Flag | Description |
|---|---|
--ids <slide-ids> | (obligatoire) Liste ordonnée complète, séparée par des virgules, de tous les IDs de diapositive existants |
--api-key <key> | Remplace la clé API |
slides update
Met à jour les fichiers source d’une diapositive. Seuls les fichiers fournis sont modifiés. Le code est validé avant l’enregistrement et renvoie des erreurs s’il ne compile pas.
| Flag | Description |
|---|---|
--tsx <file> | Chemin vers le fichier face.tsx (ou code inline) |
--content <file> | Chemin vers le fichier face.content.json (ou JSON inline) |
--controls <file> | Chemin vers le fichier face.controls.json (ou JSON inline) |
--api-key <key> | Remplace la clé API |
slides start-editing
Affiche un indicateur de chargement dans l’éditeur pendant l’édition d’une diapositive. À appeler avant de faire des modifications, et appelez toujours finish-editing une fois terminé.
| Flag | Description |
|---|---|
--api-key <key> | Remplace la clé API |
slides finish-editing
Efface l’indicateur de chargement pour une diapositive. Appelez toujours cette commande après l’édition, même si l’édition a échoué.
slides screenshot
Capture une capture d’écran JPEG d’une diapositive telle qu’elle est actuellement rendue et renvoie une URL CDN publique. Utile pour vérifier visuellement une diapositive après l’avoir éditée.
| Flag | Description |
|---|---|
--mobile | Capture la mise en page mobile au lieu du desktop |
--api-key <key> | Remplace la clé API |
slides guide
Affiche la référence de création de diapositive : le même guide renvoyé par le server MCP et l’API. Couvre la structure de face.tsx, les types de blocs de face.content.json, les types de contrôles de face.controls.json, la typographie, les polices, le CSS et des exemples de code. Lisez-le avant d’écrire du code de diapositive pour la première fois.
| Flag | Description |
|---|---|
[slug] | Slug de projet optionnel ; adapte le guide à la taille du canvas mobile de ce projet |
--api-key <key> | Remplace la clé API |
Référence des fichiers de diapositive
Chaque diapositive est composée de trois fichiers :face.tsx (composant React)
- Doit exporter par défaut un composant React
- Le div extérieur doit avoir
w-full h-full(canvas : 1920×1080 desktop, 384×683 mobile) - Utilisez Tailwind CSS et les container queries (
@sm:,@md:,@lg:,@xl:) au lieu des media queries - Ne codez jamais le texte en dur. Stockez tout le texte visible par l’utilisateur dans face.content.json
- Vous pouvez importer n’importe quel package npm (résolu automatiquement, aucune installation requise)
- Disponibles :
react,motion/react(Framer Motion),lucide-react,@base-ui/react/* - Composants UI :
TextContentdepuis@/components/ui/text-content,Icondepuis@/components/ui/icon
face.content.json (contenu modifiable)
text:{ "type": "text", "content": "HTML string" }, à afficher avec<TextContent content={blocks.key.content} />image:{ "type": "image", "src": "url | null" }, à afficher avec<img src={blocks.key.src} />icon:{ "type": "icon", "name": "lucide-icon-name" }, à afficher avec<Icon name={blocks.key.name} />table:{ "type": "table", "columns": [...], "rows": [...] }, à parcourir avecblocks.key.rows.map(...)
face.controls.json (contrôles de l’éditeur)
slider:{ "type": "slider", "min": 0, "max": 100, "step": 1, "value": 50 }switch:{ "type": "switch", "value": true }selector:{ "type": "selector", "options": ["A", "B"], "value": "A" }
controls.key.value
login
Se connecter et enregistrer une clé API.
| Flag | Description |
|---|---|
--team <slug-or-id> | Associe la clé API à une équipe spécifique (par défaut : votre équipe personnelle) |
--api-url <url> | URL de base de l’API (par défaut : FACES_API_URL ou https://faces.app) |
~/.config/faces/credentials.json. La valeur de --team peut être un slug ou un id d’équipe (voir GET /api/v1/teams). Omettez --team pour associer la clé à votre équipe personnelle.