Alle Beiträge

Websites aus Make, n8n und Zapier veröffentlichen: die REST API von Hostilo

Jedes Tool, das eine HTTP-Anfrage senden kann, kann jetzt Hostilo-Websites anlegen, aktualisieren und zurücksetzen. Die REST API hat dieselben 10 Aktionen wie der MCP-Connector für Claude und ChatGPT, jede Aktion hat eine eigene Adresse, und die öffentliche Datei openapi.json beschreibt die ganze Schnittstelle. Unten findest du vier konkrete Einsätze und zwei fertige Szenarien zum Importieren, für n8n und für Make.

Was die API kann

AktionMethodeWofür
list_sitesGETListe deiner Websites mit IDs
get_siteGETGesamtes HTML einer Website (bis 5 MB)
create_sitePOSTNeue Website: leer, mit HTML, mit Dateien oder aus einer Vorlage
update_sitePOSTNeues HTML, Website per ID oder Name
publish_filesPOSTWebsite aus mehreren Dateien: index.html, CSS, JS, Bilder
import_zipPOSTGanzes Projekt aus einer ZIP-Datei
list_templatesGETFertige Hostilo-Vorlagen
list_versionsGETGespeicherte Versionen
restore_versionPOSTZurück zu einer gewählten Version
get_site_statsGETSeitenaufrufe und Besucher

Jede Aktion liegt unter https://hostilo.app/api/v1/<aktion>. Anfragen und Antworten sind JSON.

Schlüssel, Limits und Tarif

Die erste Anfrage

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

Antwort:

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

Der Name hat 3 bis 30 Zeichen: Kleinbuchstaben, Ziffern und Bindestriche. Daraus entsteht die Adresse name.hostilo.page.

Einsatz 1: Aus Tabelle oder Formular wird eine Website

Jemand füllt ein Formular aus oder du fügst eine Zeile in Google Sheets hinzu, und kurz darauf steht unter name.hostilo.page eine fertige Seite. Der erste Lauf legt sie an, jeder weitere ersetzt den Inhalt. So arbeiten beide fertigen Szenarien:

1

Das Szenario sendet update_site mit dem Namen der Website in site_id.

2

Gibt es die Website noch nicht, antwortet die API mit Status 400 und der Meldung „Strona nie istnieje…“ (Website existiert nicht). Dann ruft das Szenario create_site mit demselben HTML auf.

3

Bei der nächsten Zeile gibt es die Website schon, der Lauf endet bei update_site. Die vorherige Version landet im Verlauf.

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

n8n

Lade n8n-hostilo-publish.json herunter und wähle in n8n Import from File (oder füge den Inhalt in einen leeren Workflow ein). Du bekommst fünf Knoten: Webhook → Build HTML → update_site → Bedingung → create_site. Lege in beiden Hostilo-Knoten eine gemeinsame Header Auth-Zugangsart an: Name Authorization, Wert Bearer hk_.... Klicke Test workflow und sende:

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

Statt des Webhooks kannst du einen Google Sheets Trigger mit den Spalten site, title und text nehmen. Enthalten die Daten ein Feld html, veröffentlicht das Szenario es unverändert. Davor passt also ein KI-Knoten, der die ganze Seite schreibt.

Make

Lade make-hostilo-publish.json herunter, lege ein neues Szenario an und wähle im Drei-Punkte-Menü Import Blueprint. Module: Google Sheets Watch Rows (Spalte A: Name der Website, B: Titel, C: Text) → JSON Transform to JSON → HTTP Make an API Key Auth request mit update_site → dasselbe Modul mit create_site und einem Filter „Website existiert noch nicht“. Nach dem Import wählst du deine Tabelle und fügst den Schlüssel hinzu: Credentials → Add, Key Bearer hk_..., API Key placement In the header, Parametername Authorization. Denselben Schlüssel in beiden HTTP-Modulen auswählen.

Wozu Transform to JSON

HTML voller Anführungszeichen und Zeilenumbrüche zerstört das JSON, wenn es direkt in den Anfragetext kommt. Transform to JSON macht daraus einen gültigen String, und die API bekommt genau das, was in der Tabelle steht.

Zapier

Zapier importiert keine Szenarien aus Dateien, hier reicht ein Schritt: Webhooks by Zapier → Custom Request, Methode POST, URL https://hostilo.app/api/v1/update_site, Header Authorization: Bearer hk_... und Content-Type: application/json, das JSON von oben unter Data. Am einfachsten legst du die Website einmal im Dashboard an und lässt den Zap sie nur aktualisieren.

Einsatz 2: Jedes neue Produkt bekommt eine eigene Seite

Ein neues Produkt kommt in den Katalog, und das Szenario legt dafür eine Seite an, etwa sonnencreme-spf50.hostilo.page, mit Beschreibung, Preis und Bestellknopf. Ein Aufruf von create_site mit dem Namen aus der Artikelnummer genügt. Braucht die Seite eigenes CSS, ein Skript und Fotos, nimm publish_files:

POST https://hostilo.app/api/v1/publish_files
{
  "site_id": "sonnencreme-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 wird zur Seite, die übrigen Dateien kommen in den Ordner assets/, und Hostilo korrigiert die Links im HTML selbst. Du kannst auch mit einem fertigen Design starten: list_templates liefert die Vorlagen, create_site mit dem Feld template baut die Seite daraus. Denk an das Limit: 5 Websites im Free-Tarif, 20 in PRO. Bei einem großen Katalog ist eine Seite mit Produktliste, die update_site auffrischt, die bessere Wahl.

Einsatz 3: Eine Seite, die sich selbst aktualisiert

Preisliste aus der Tabelle, Kursplan, freie Termine, Ligatabelle. Ein Szenario, das stündlich oder jeden Morgen läuft (in n8n der Knoten Schedule Trigger, in Make der Zeitplan des Szenarios), holt die Daten, baut das HTML und sendet update_site. Hostilo hebt die letzten 10 Versionen auf. Geht in den Daten etwas schief, bringt dich ein Aufruf zurück:

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

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

Beim Zurücksetzen landet auch die aktuelle Version im Verlauf, du kannst den Schritt also rückgängig machen. Einmal pro Woche kann dasselbe Szenario die Statistik abrufen und die Aufrufe in eine Tabelle schreiben oder an Slack schicken:

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

Free zeigt 7 Tage, PRO bis zu 365 Tage mit Ländern, Quellen und Geräten.

Einsatz 4: Ein eigener GPT, der Websites veröffentlicht

Lege in ChatGPT einen eigenen GPT an, dann Configure → Actions → Create new action → Import from URL mit https://hostilo.app/openapi.json. Authentication: API Key, Auth Type Bearer, Schlüssel einfügen. Als Datenschutzerklärung https://hostilo.app/privacy. Der GPT bekommt alle 10 Aktionen mit Beschreibung und wählt selbst die richtige, wenn du schreibst „veröffentliche diese Seite als cafe-am-markt“.

Zwei Hinweise. GPT Actions nimmt Antworten bis etwa 100 KB an, get_site einer sehr großen Seite passt dort eventuell nicht hinein. Und wenn du ChatGPT, Claude oder Perplexity nur für dich nutzt, ist der MCP-Connector einfacher: Du meldest dich mit deinem Hostilo-Konto an, statt einen Schlüssel zu kopieren.

Für Agenturen und Automatisierer

Ein Szenario kann viele Kundenseiten bedienen, denn der Name der Website ist nur ein Feld aus Tabelle oder CRM. Der Kunde trägt eine Aktion in die Tabelle ein, die Seite ändert sich von selbst, und du hast Versionsverlauf und Statistik für den Monatsbericht aus einer API. Die Adressen /api.php?action= aus älteren Integrationen funktionieren weiter. Vollständige Referenz: REST-Dokumentation.

Häufige Fragen

Kostet die REST API extra?

Nein. Sie läuft in Free und PRO mit demselben Limit von 60 Anfragen pro Minute. Der Tarif bestimmt die Zahl der Websites, den Zeitraum der Statistik und ob das Konto regelmäßig besucht werden muss.

Was unterscheidet die REST API vom MCP-Connector?

Die Aktionen sind dieselben. Der MCP-Connector ist für KI-Apps (Claude, ChatGPT, Perplexity, Cursor), dort meldest du dich mit deinem Hostilo-Konto an. REST mit einem hk_-Schlüssel ist für Automatisierungstools, Skripte und eigene GPTs.

Ist der Schlüssel im Szenario sicher?

Bewahre ihn in den Zugangsdaten des Tools auf (n8n: Header Auth, Make: Credentials), nicht in Feldern der Knoten. Die fertigen Dateien enthalten ihn nicht. Ist er durchgesickert, erzeuge im Dashboard einen neuen, der alte ist dann sofort ungültig.

Was passiert über 60 Anfragen pro Minute?

Die API antwortet mit Status 429 und einem Retry-After-Header. In n8n im HTTP-Request-Knoten Retry On Fail oder Batching einschalten, in Make ein Sleep-Modul zwischen die Aufrufe setzen.

Verbinde dein erstes Szenario

Lege ein kostenloses Konto an, erzeuge einen Schlüssel unter API & Tools und importiere eine fertige Datei in n8n oder Make. Ohne Kreditkarte.

Kostenloses Konto anlegen

Mehr aus dem Blog