Wszystkie wpisy

Publikuj strony z Make, n8n i Zapier: REST API Hostilo

Każde narzędzie, które wysyła żądanie HTTP, może teraz zakładać, aktualizować i przywracać strony w Hostilo. REST API ma te same 10 akcji co konektor MCP dla Claude i ChatGPT, każda akcja ma własny adres, a cały interfejs opisuje publiczny plik openapi.json. Niżej cztery konkretne zastosowania i dwa gotowe scenariusze do zaimportowania: dla n8n i dla Make.

Co potrafi API

AkcjaMetodaDo czego
list_sitesGETLista twoich stron z numerami
get_siteGETCały HTML strony (do 5 MB)
create_sitePOSTNowa strona: pusta, z HTML-em, z plikami albo z szablonu
update_sitePOSTNowy HTML strony; strona po numerze albo po nazwie
publish_filesPOSTStrona z kilku plików: index.html, CSS, JS, obrazy
import_zipPOSTCały projekt z pliku ZIP
list_templatesGETGotowe szablony Hostilo
list_versionsGETZapisane wersje strony
restore_versionPOSTPowrót do wybranej wersji
get_site_statsGETOdsłony i odwiedzający

Adres każdej akcji to https://hostilo.app/api/v1/<akcja>. Żądania i odpowiedzi są w JSON.

Klucz, limity i plan

Pierwsze żądanie

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

Odpowiedź:

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

Nazwa strony ma od 3 do 30 znaków: małe litery, cyfry i myślniki. Z niej powstaje adres nazwa.hostilo.page.

Zastosowanie 1: arkusz albo formularz zamienia się w stronę

Ktoś wypełnia formularz albo dopisujesz wiersz w arkuszu Google, a po chwili pod adresem nazwa.hostilo.page stoi gotowa strona. Pierwsze uruchomienie ją zakłada, każde kolejne nadpisuje treść. Tak działają oba gotowe scenariusze:

1

Scenariusz wysyła update_site z nazwą strony w polu site_id.

2

Jeśli strony jeszcze nie ma, API odpowiada statusem 400 i komunikatem „Strona nie istnieje…”. Wtedy scenariusz woła create_site z tym samym HTML-em.

3

Przy następnym wierszu strona już jest, więc wszystko kończy się na update_site. Poprzednia wersja trafia do historii.

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

n8n

Pobierz n8n-hostilo-publish.json i w n8n wybierz Import from File (albo wklej zawartość pliku do pustego workflow). Dostajesz pięć węzłów: Webhook → Build HTML → update_site → warunek → create_site. W obu węzłach Hostilo utwórz jedno poświadczenie Header Auth: nazwa Authorization, wartość Bearer hk_.... Kliknij Test workflow i wyślij:

curl -X POST "<Webhook test URL>" \
  -H "Content-Type: application/json" \
  -d '{"site":"cennik-2026","title":"Cennik 2026","text":"Strzyżenie: 80 zł"}'

Zamiast webhooka możesz wstawić węzeł Google Sheets Trigger z kolumnami site, title i text. Gdy w danych jest pole html, scenariusz publikuje je bez zmian. Możesz więc wcześniej podpiąć węzeł z modelem AI, który napisze całą stronę.

Make

Pobierz make-hostilo-publish.json, utwórz nowy scenariusz i w menu z trzema kropkami wybierz Import Blueprint. Moduły: Google Sheets Watch Rows (kolumna A: nazwa strony, B: tytuł, C: treść) → JSON Transform to JSON → HTTP Make an API Key Auth request z update_site → ten sam moduł z create_site i filtrem „strona jeszcze nie istnieje”. Po imporcie wskaż swój arkusz i dodaj klucz: Credentials → Add, Key Bearer hk_..., API Key placement In the header, nazwa parametru Authorization. Ten sam klucz wybierz w obu modułach HTTP.

Po co Transform to JSON

HTML pełen cudzysłowów i nowych linii, wklejony wprost w treść żądania, psuje JSON. Moduł Transform to JSON zamienia go w poprawny napis, więc API dostaje dokładnie to, co jest w arkuszu.

Zapier

Zapier nie importuje scenariuszy z pliku, więc tu wystarczy jeden krok Webhooks by Zapier → Custom Request: metoda POST, URL https://hostilo.app/api/v1/update_site, nagłówki Authorization: Bearer hk_... i Content-Type: application/json, w polu Data JSON jak wyżej. Najprościej założyć stronę raz w panelu, a Zap niech ją tylko aktualizuje.

Zastosowanie 2: nowy produkt dostaje własną stronę

Do katalogu trafia nowy produkt, a scenariusz zakłada dla niego osobną stronę, np. krem-spf50.hostilo.page, z opisem, ceną i przyciskiem zamówienia. Wystarczy create_site z nazwą z kodu produktu. Gdy strona ma mieć własny arkusz stylów, skrypt i zdjęcia, użyj publish_files:

POST https://hostilo.app/api/v1/publish_files
{
  "site_id": "krem-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"}
  ]
}

Plik index.html staje się stroną, reszta trafia do folderu assets/, a Hostilo samo poprawia odnośniki w HTML-u. Możesz też zacząć od gotowego wyglądu: list_templates zwraca szablony, a create_site z polem template zakłada stronę z wybranego. Pamiętaj o limicie stron: 5 na Free i 20 na PRO. Przy dużym katalogu lepiej sprawdzi się jedna strona z listą produktów odświeżana przez update_site.

Zastosowanie 3: strona, która sama się odświeża

Cennik z arkusza, grafik zajęć, wolne terminy, wyniki ligi. Scenariusz uruchamiany co godzinę albo co rano (w n8n węzeł Schedule Trigger, w Make harmonogram scenariusza) pobiera dane, składa HTML i wysyła update_site. Hostilo trzyma 10 ostatnich wersji, więc gdy źródło danych coś popsuje, wracasz jednym wywołaniem:

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

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

Przy przywracaniu bieżąca wersja też trafia do historii, więc i ten krok da się cofnąć. Raz w tygodniu ten sam scenariusz może pobrać statystyki i wpisać odsłony do arkusza albo wysłać je na Slacka:

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

Plan Free pokazuje 7 dni, PRO do 365 dni z podziałem na kraje, źródła i urządzenia.

Zastosowanie 4: własny GPT, który publikuje strony

W ChatGPT utwórz własnego GPT, a potem Configure → Actions → Create new action → Import from URL i adres https://hostilo.app/openapi.json. Authentication: API Key, Auth Type Bearer, wklej klucz. Jako politykę prywatności podaj https://hostilo.app/privacy. GPT dostaje wszystkie 10 akcji z opisami i sam wybiera właściwą, gdy napiszesz „opublikuj tę stronę jako kawiarnia-pod-lipa”.

Dwie uwagi. GPT przyjmuje odpowiedzi do około 100 KB, więc get_site bardzo dużej strony może się tam nie zmieścić. A jeśli używasz ChatGPT, Claude albo Perplexity tylko dla siebie, prostszy jest konektor MCP: logujesz się kontem Hostilo i nie przepisujesz klucza.

Dla agencji i osób od automatyzacji

Jeden scenariusz obsłuży strony wielu klientów, bo nazwa strony to zwykłe pole z arkusza albo CRM-u. Klient dopisuje promocję w arkuszu, strona zmienia się sama, a ty masz historię wersji i statystyki do raportu z jednego API. Adresy /api.php?action= z wcześniejszych integracji działają dalej, nic nie trzeba przepisywać. Pełna instrukcja: dokumentacja REST.

Najczęstsze pytania

Czy REST API jest płatne?

Nie. Działa na planie Free i PRO, z tym samym limitem 60 zapytań na minutę. Od planu zależy liczba stron, zakres statystyk i to, czy konto trzeba co jakiś czas odwiedzać.

Czym REST API różni się od konektora MCP?

Akcje są te same. Konektor MCP jest dla aplikacji AI (Claude, ChatGPT, Perplexity, Cursor) i logujesz się w nim kontem Hostilo. REST z kluczem hk_ jest dla narzędzi do automatyzacji, skryptów i własnych GPT.

Czy klucz w scenariuszu jest bezpieczny?

Trzymaj go w poświadczeniach narzędzia (n8n: Header Auth, Make: Credentials), a nie w polach węzłów. Gotowe pliki go nie zawierają. Gdy klucz wycieknie, wygeneruj nowy w panelu: stary od razu przestaje działać.

Co się stanie, gdy przekroczę 60 zapytań na minutę?

API zwróci status 429 i nagłówek Retry-After. W n8n włącz w węźle HTTP Request opcję Retry On Fail albo Batching, w Make dodaj moduł Sleep między wywołaniami.

Podłącz swój pierwszy scenariusz

Załóż darmowe konto, wygeneruj klucz w zakładce API i narzędzia i zaimportuj gotowy plik do n8n albo Make. Bez karty płatniczej.

Załóż konto za darmo

Więcej z bloga