Documentation Fabrique API
Référence du système de publication HTML, PDF et ZIP intégré au portfolio
Vue d'ensemble de l'API Fabrique
Fabrique adapte le flux de publication de PageDrop à l'architecture du portfolio 1282. Le principe reste simple : vous envoyez du HTML, vous uploadez un PDF ou un projet ZIP, vous récupérez immédiatement une URL publique, puis vous conservez un jeton de suppression pour pouvoir modifier ou supprimer la publication plus tard.
https://lblaster.com/api/v1Route publique :
https://lblaster.com/fabric/:siteId Authentification
Aucun compte n'est nécessaire pour créer une publication. En revanche, les opérations de mise à jour et de suppression utilisent l'en-tête X-Delete-Token renvoyé lors de la création initiale.
Créer une publication
Crée une nouvelle page hébergée. L'endpoint accepte soit du HTML ou du Markdown en JSON, soit un envoi multipart pour des fichiers HTML, PDF ou ZIP.
Corps JSON
| Champ | Type | Requis | Description |
|---|---|---|---|
html | string | requis* | Contenu HTML brut à héberger. Utilisez html ou markdown. |
markdown | string | requis* | Contenu Markdown rendu automatiquement sous forme de page responsive. |
title | string | optionnel | Titre de page utilisé pour le rendu Markdown. |
ttl | string | optionnel | Durée de vie, par exemple 12h, 7d ou 30d. |
slug | string | optionnel | Slug personnalisé si votre backend prend en charge des routes lisibles. |
ogTitle | string | optionnel | Titre Open Graph personnalisé. |
ogDescription | string | optionnel | Description utilisée pour les aperçus et les embeds. |
ogImage | string | optionnel | URL de l'image d'aperçu Open Graph. |
password | string | optionnel | Protection par mot de passe pour la route publique. |
passwordExpiry | number | optionnel | Durée de vie du cookie de mot de passe, en heures. |
Envoi multipart
| Champ | Type | Requis | Description |
|---|---|---|---|
file | file | requis | Fichier HTML unique, fichier PDF unique, ou archive ZIP contenant un projet avec index.html à la racine. |
Exemple de requête
curl -X POST "https://lblaster.com/api/v1/sites" \
-H "Content-Type: application/json" \
-d '{
"html": "<h1>Hello World</h1><p>Published with Fabrique</p>",
"ogTitle": "Fabrique demo",
"ogDescription": "Published on the lblaster.com/fabric route"
}'Envoi de PDF
curl -X POST "https://lblaster.com/api/v1/sites" \ -F "file=@document.pdf"
Envoi de ZIP
curl -X POST "https://lblaster.com/api/v1/sites" \ -F "file=@project.zip"
Réponse de succès
{
"status": "success",
"data": {
"siteId": "a1b2c3d4",
"url": "https://lblaster.com/fabric/a1b2c3d4",
"deleteToken": "dlt_...",
"expiresAt": null,
"files": ["index.html"],
"totalSizeBytes": 1234,
"viewCount": 0,
"createdAt": "2026-04-23T12:00:00.000Z"
}
}deleteToken en lieu sûr. C'est la clé qui vous permettra de mettre à jour ou de supprimer la publication plus tard. Mettre à jour une publication existante
Remplace le contenu d'une publication existante sans modifier sa route publique. Le corps de la requête suit le même format que POST /sites.
| En-tête | Requis | Description |
|---|---|---|
X-Delete-Token | requis | Jeton de suppression renvoyé lors de la création. |
curl -X PUT "https://lblaster.com/api/v1/sites/a1b2c3d4" \
-H "Content-Type: application/json" \
-H "X-Delete-Token: dlt_..." \
-d '{"html": "<h1>Updated</h1>"}'Supprimer une publication
Supprime définitivement une route publiée. Cette opération exige le jeton de suppression reçu au moment de la création.
curl -X DELETE "https://lblaster.com/api/v1/sites/a1b2c3d4" \ -H "X-Delete-Token: dlt_..."
Route publique
Il s'agit du format de route publique utilisé par l'interface Fabrique. Une fois la publication créée, les visiteurs accèdent directement au résultat hébergé via /fabric/:siteId, au lieu de la route d'origine au format PageDrop.
Format d'URL courant
https://lblaster.com/fabric/a1b2c3d4
Intégration dans une iframe
Si votre backend conserve le comportement d'embed du système d'origine, une route dédiée comme /embed/:siteId peut toujours servir une version compatible iframe.
Opérations avancées
La documentation source mentionne aussi des opérations avancées que vous pouvez conserver dans le même namespace API si vous les implémentez côté serveur.
| Endpoint | Description |
|---|---|
POST /api/v1/sites/batch | Créer plusieurs pages dans une seule requête. |
POST /api/v1/sites/batch/delete | Supprimer plusieurs pages avec leurs jetons respectifs. |
POST /api/v1/sites/:siteId/fork | Créer une copie indépendante d'une page existante. |
GET /api/v1/sites/:siteId/analytics | Lire les statistiques de trafic ou de vues. |
GET /api/v1/sites/:siteId/files | Inspecter les fichiers stockés ou le contenu d'un ZIP uploadé. |
GET /embed/:siteId | Servir une vue intégrable. |
Exemples côté client
JavaScript
const response = await fetch("https://lblaster.com/api/v1/sites", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
html: "<h1>Hello World</h1><p>Published with Fabrique</p>"
})
});
const payload = await response.json();
const site = payload.data || payload;
console.log(site.url);
console.log(site.deleteToken);Python
import requests
response = requests.post(
"https://lblaster.com/api/v1/sites",
json={"html": "<h1>Hello World</h1>"}
)
payload = response.json()
site = payload.get("data", payload)
print(site.get("url"))
print(site.get("deleteToken"))Déployer automatiquement depuis Cursor, Codex ou Claude Code
Oui, c'est possible. En pratique, Fabrique ne détecte pas les changements tout seul : un script local, un watcher, une commande ou un hook doit appeler l'API une fois que le site a été généré.
Limites et notes d'implémentation
- Les envois HTML sont pensés pour un flux léger en fichier unique, idéal pour publier rapidement.
- Les uploads PDF et ZIP conviennent mieux à des livrables plus lourds ou à des projets multi-fichiers.
- Les jetons de suppression doivent être traités comme des identifiants sensibles pour la mise à jour et la suppression.
- Les URLs publiques suivent la structure
/fabric/:siteIdadoptée par le portfolio.