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
| Akcja | Metoda | Do czego |
|---|---|---|
list_sites | GET | Lista twoich stron z numerami |
get_site | GET | Cały HTML strony (do 5 MB) |
create_site | POST | Nowa strona: pusta, z HTML-em, z plikami albo z szablonu |
update_site | POST | Nowy HTML strony; strona po numerze albo po nazwie |
publish_files | POST | Strona z kilku plików: index.html, CSS, JS, obrazy |
import_zip | POST | Cały projekt z pliku ZIP |
list_templates | GET | Gotowe szablony Hostilo |
list_versions | GET | Zapisane wersje strony |
restore_version | POST | Powrót do wybranej wersji |
get_site_stats | GET | Odsł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
- Klucz: panel → API i narzędzia → API dla Agentów AI → wygeneruj klucz. Zaczyna się od
hk_i idzie w nagłówkuAuthorization: Bearer hk_.... Daje dostęp do wszystkich twoich stron, więc trzymaj go jak hasło: w poświadczeniach Make, n8n albo Zapiera, nigdy w treści scenariusza. Wygenerowanie nowego klucza od razu wyłącza stary. - Limit: 60 zapytań na minutę na klucz. Nagłówek
X-RateLimit-Remainingmówi, ile zostało. Po przekroczeniu dostajesz status 429 i nagłówekRetry-Afterz liczbą sekund. - Rozmiar: HTML do 5 MB na stronę. Zdjęcia wysyłaj jako osobne pliki przez
publish_files. - Błędy:
{"error": "..."}ze statusem 400, 401, 403 albo 429. Komunikaty są po polsku. - Plan: API działa także na planie Free (do 5 stron, statystyki z 7 dni). Konto Free trzeba jednak co jakiś czas odwiedzić w panelu, a wywołania API tego nie zastępują. Jeśli automat ma pracować miesiącami bez twojego udziału, weź PRO za 29 USD rocznie netto: bez tego warunku, z 20 stronami, własnymi domenami i statystykami do 365 dni. Więcej w porównaniu Free czy PRO.
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:
Scenariusz wysyła update_site z nazwą strony w polu site_id.
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.
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

