Tous les articles

Publier des sites depuis Make, n8n et Zapier : l’API REST de Hostilo

Tout outil capable d’envoyer une requête HTTP peut désormais créer, mettre à jour et restaurer des sites sur Hostilo. L’API REST a les mêmes 10 actions que le connecteur MCP pour Claude et ChatGPT, chaque action a sa propre adresse, et le fichier public openapi.json décrit toute l’interface. Voici quatre usages concrets et deux scénarios à importer tels quels, pour n8n et pour Make.

Ce que fait l’API

ActionMéthodeÀ quoi elle sert
list_sitesGETListe de tes sites avec leur id
get_siteGETHTML complet d’un site (jusqu’à 5 Mo)
create_sitePOSTNouveau site : vide, avec HTML, avec fichiers ou depuis un modèle
update_sitePOSTNouveau HTML, site par id ou par nom
publish_filesPOSTSite en plusieurs fichiers : index.html, CSS, JS, images
import_zipPOSTProjet complet depuis un ZIP
list_templatesGETModèles Hostilo prêts à l’emploi
list_versionsGETVersions enregistrées d’un site
restore_versionPOSTRetour à la version choisie
get_site_statsGETPages vues et visiteurs

Chaque action se trouve à https://hostilo.app/api/v1/<action>. Requêtes et réponses en JSON.

Clé, limites et offre

La première requête

curl -X POST https://hostilo.app/api/v1/create_site \
  -H "Authorization: Bearer hk_..." \
  -H "Content-Type: application/json" \
  -d '{"site_name": "tarifs-2026", "html": "<!DOCTYPE html><html>...</html>"}'

Réponse :

{"success": true, "message": "Strona utworzona.", "site_id": 124, "url": "https://tarifs-2026.hostilo.page"}

Le nom compte de 3 à 30 caractères : minuscules, chiffres et tirets. Il donne l’adresse nom.hostilo.page.

Usage 1 : une feuille ou un formulaire devient un site

Quelqu’un remplit un formulaire ou tu ajoutes une ligne dans Google Sheets, et peu après nom.hostilo.page affiche une page terminée. La première exécution crée le site, les suivantes remplacent son contenu. Les deux scénarios prêts fonctionnent ainsi :

1

Le scénario envoie update_site avec le nom du site dans site_id.

2

Si le site n’existe pas encore, l’API répond avec le statut 400 et le message « Strona nie istnieje… » (le site n’existe pas). Le scénario appelle alors create_site avec le même HTML.

3

À la ligne suivante, le site existe déjà et tout s’arrête à update_site. La version précédente rejoint l’historique.

POST https://hostilo.app/api/v1/update_site
{"site_id": "tarifs-2026", "html": "<!DOCTYPE html><html>...</html>"}

n8n

Télécharge n8n-hostilo-publish.json et choisis Import from File dans n8n (ou colle le contenu dans un workflow vide). Tu obtiens cinq nœuds : Webhook → Build HTML → update_site → condition → create_site. Dans les deux nœuds Hostilo, crée un seul identifiant Header Auth : nom Authorization, valeur Bearer hk_.... Clique sur Test workflow et envoie :

curl -X POST "<Webhook test URL>" \
  -H "Content-Type: application/json" \
  -d '{"site":"tarifs-2026","title":"Tarifs 2026","text":"Coupe : 25 EUR"}'

À la place du webhook, tu peux utiliser un nœud Google Sheets Trigger avec les colonnes site, title et text. Si les données contiennent un champ html, le scénario le publie tel quel : tu peux donc placer avant un nœud de modèle d’IA qui écrit la page entière.

Make

Télécharge make-hostilo-publish.json, crée un nouveau scénario et choisis Import Blueprint dans le menu à trois points. Modules : Google Sheets Watch Rows (colonne A : nom du site, B : titre, C : texte) → JSON Transform to JSON → HTTP Make an API Key Auth request avec update_site → le même module avec create_site et un filtre « le site n’existe pas encore ». Après l’import, choisis ta feuille et ajoute la clé : Credentials → Add, Key Bearer hk_..., API Key placement In the header, nom du paramètre Authorization. Sélectionne la même clé dans les deux modules HTTP.

Pourquoi Transform to JSON

Un HTML plein de guillemets et de retours à la ligne, collé directement dans le corps de la requête, casse le JSON. Transform to JSON en fait une chaîne valide, et l’API reçoit exactement le contenu de la feuille.

Zapier

Zapier n’importe pas de scénarios depuis un fichier, une étape suffit : Webhooks by Zapier → Custom Request, méthode POST, URL https://hostilo.app/api/v1/update_site, en-têtes Authorization: Bearer hk_... et Content-Type: application/json, et le JSON ci-dessus dans Data. Le plus simple : créer le site une fois dans le tableau de bord et laisser le Zap le mettre à jour.

Usage 2 : chaque nouveau produit a sa page

Un nouveau produit arrive dans le catalogue et le scénario lui crée une page, par exemple creme-spf50.hostilo.page, avec description, prix et bouton de commande. Un appel à create_site avec un nom tiré de la référence suffit. Si la page a besoin de sa propre feuille de style, d’un script et de photos, utilise publish_files :

POST https://hostilo.app/api/v1/publish_files
{
  "site_id": "creme-spf50",
  "files": [
    {"path": "index.html", "content": "<!DOCTYPE html><html>...</html>"},
    {"path": "style.css", "content": "body { font-family: sans-serif }"},
    {"path": "photo.jpg", "content": "/9j/4AAQ...", "encoding": "base64"}
  ]
}

index.html devient la page, les autres fichiers vont dans le dossier assets/, et Hostilo corrige lui-même les liens du HTML. Tu peux aussi partir d’un design : list_templates renvoie les modèles et create_site avec le champ template crée le site à partir de l’un d’eux. Pense à la limite : 5 sites en Free, 20 en PRO. Pour un grand catalogue, une seule page avec la liste des produits, rafraîchie par update_site, convient mieux.

Usage 3 : une page qui se met à jour seule

Une grille tarifaire tirée d’une feuille, un planning de cours, des créneaux libres, les résultats d’un championnat. Un scénario lancé toutes les heures ou chaque matin (le nœud Schedule Trigger dans n8n, la planification du scénario dans Make) récupère les données, construit le HTML et envoie update_site. Hostilo garde les 10 dernières versions : si la source de données casse quelque chose, un appel suffit pour revenir en arrière :

GET  https://hostilo.app/api/v1/list_versions?site_id=tarifs-2026

POST https://hostilo.app/api/v1/restore_version
{"site_id": "tarifs-2026", "version_id": "1760601600"}

Lors d’une restauration, la version actuelle rejoint aussi l’historique, ce retour en arrière peut donc lui-même être annulé. Une fois par semaine, le même scénario peut récupérer les statistiques et noter les pages vues dans une feuille ou les envoyer sur Slack :

GET https://hostilo.app/api/v1/get_site_stats?site_id=tarifs-2026&days=7

L’offre Free affiche 7 jours ; PRO jusqu’à 365 jours, avec pays, sources et appareils.

Usage 4 : ton propre GPT qui publie des sites

Crée un GPT dans ChatGPT, puis Configure → Actions → Create new action → Import from URL avec https://hostilo.app/openapi.json. Authentication : API Key, Auth Type Bearer, colle ta clé. Comme politique de confidentialité, https://hostilo.app/privacy. Le GPT reçoit les 10 actions avec leur description et choisit la bonne quand tu écris « publie cette page sous le nom cafe-de-la-place ».

Deux remarques. GPT Actions accepte des réponses d’environ 100 Ko au maximum, get_site d’une très grande page peut donc ne pas passer. Et si tu utilises ChatGPT, Claude ou Perplexity juste pour toi, le connecteur MCP est plus simple : tu te connectes avec ton compte Hostilo au lieu de copier une clé.

Pour les agences et les spécialistes de l’automatisation

Un scénario peut gérer de nombreux sites clients, car le nom du site n’est qu’un champ de la feuille ou du CRM. Le client ajoute une promotion dans la feuille, la page change toute seule, et tu disposes de l’historique des versions et des statistiques pour le rapport mensuel avec une seule API. Les adresses /api.php?action= des anciennes intégrations fonctionnent toujours. Référence complète : documentation REST.

Questions fréquentes

L’API REST est-elle payante ?

Non. Elle fonctionne en Free et en PRO avec la même limite de 60 requêtes par minute. L’offre détermine le nombre de sites, la profondeur des statistiques et la nécessité de visiter régulièrement le compte.

Quelle différence entre l’API REST et le connecteur MCP ?

Les actions sont les mêmes. Le connecteur MCP sert aux applications d’IA (Claude, ChatGPT, Perplexity, Cursor), où tu te connectes avec ton compte Hostilo. REST avec une clé hk_ sert aux outils d’automatisation, aux scripts et aux GPT personnalisés.

La clé est-elle en sécurité dans un scénario ?

Garde-la dans les identifiants de l’outil (n8n : Header Auth, Make : Credentials), pas dans les champs des nœuds. Les fichiers prêts ne la contiennent pas. En cas de fuite, génère-en une nouvelle dans le tableau de bord : l’ancienne cesse aussitôt de fonctionner.

Que se passe-t-il au-delà de 60 requêtes par minute ?

L’API renvoie le statut 429 avec un en-tête Retry-After. Dans n8n, active Retry On Fail ou Batching dans le nœud HTTP Request ; dans Make, ajoute un module Sleep entre les appels.

Connecte ton premier scénario

Crée un compte gratuit, génère une clé dans API et outils et importe un fichier prêt dans n8n ou Make. Sans carte bancaire.

Créer un compte gratuit

À lire aussi