Einrichtung per API

Ein Token reicht, um ein Projekt aus einem Skript oder von einem KI-Agenten einzurichten: ein Kanal für seine Ereignisse, Monitore für seine Seiten und Jobs, eine Website für seine Besuche und sein Feedback.

Der Token

Erstelle ihn unter Einstellungen, API-Tokens. Er gehört zu einem Workspace, also landet alles Folgende dort. Eine Website hinzuzufügen oder zu ändern erfordert den Token eines Eigentümers oder Admins.

So funktionieren Tokens

Kanal erstellen

Ein Kanal empfängt die Ereignisse deiner App. name ist erforderlich; description, icon, color und isPrivate sind optional.

bash
curl -X POST "https://zenhook.dev/api/channels" \
  -H "Authorization: Bearer $ZENHOOK_TOKEN" -H "Content-Type: application/json" \
  -d '{"name":"my-app","description":"Sign-ups and errors"}'

Die Antwort enthält webhookToken: Deine App sendet an https://zenhook.dev/api/webhook/ gefolgt von diesem Token. Wer diese Adresse hat, kann in den Kanal schreiben, bewahre sie also bei deinen Secrets auf. POST /api/channels/:id/regenerate-token ersetzt sie. Free erlaubt 3 Kanäle: Einer mehr antwortet 403 mit CHANNEL_LIMIT_REACHED.

Adresse überwachen

Zenhook fragt die Adresse ab und benachrichtigt dich, wenn sie ausfällt. url ist erforderlich; name ist standardmäßig der Hostname.

bash
curl -X POST "https://zenhook.dev/api/monitors" \
  -H "Authorization: Bearer $ZENHOOK_TOKEN" -H "Content-Type: application/json" \
  -d '{"name":"example.com","url":"https://example.com"}'

Ein Workspace überwacht jede URL nur einmal: Ein zweiter Monitor darauf antwortet 409. Free erlaubt 3 Monitore und Pro 20: Einer mehr antwortet 403 mit MONITOR_LIMIT_REACHED. Eine Adresse in einem privaten Netzwerk antwortet 400 mit PRIVATE_TARGET_REQUIRES_PUSH: Nutze einen PUSH-Monitor, siehe unten. Monitor-Alerts landen im Kanal Monitore des Workspace, den du nicht auswählst.

So funktionieren die Prüfungen

Geplanten Job überwachen

Ein PUSH-Monitor arbeitet umgekehrt: Dein Job meldet sich bei Zenhook, und der Monitor fällt aus, wenn die Meldungen ausbleiben. Er deckt auch einen Dienst in einem privaten Netzwerk ab.

bash
curl -X POST "https://zenhook.dev/api/monitors" \
  -H "Authorization: Bearer $ZENHOOK_TOKEN" -H "Content-Type: application/json" \
  -d '{"name":"Nightly backup","url":"https://backup.example.com/nightly",
       "type":"PUSH","heartbeatInterval":3600,"heartbeatGrace":86400}'

url bleibt erforderlich und eindeutig, weil sie benennt, was überwacht wird: Zenhook fragt sie nicht ab. heartbeatGrace ist die erlaubte Stille in Sekunden: 60 bis 86400 und nie weniger als das Doppelte von heartbeatInterval (30 bis 3600). Ein Job, der alle 6 Stunden läuft, braucht mehr als 21600.

Die Antwort liefert heartbeatToken, nur einmal, und heartbeatCommand, einen fertigen Befehl, der die url von seinem Standort aus abfragt und das Ergebnis meldet. Oder melde dich am Ende deines Jobs:

bash
curl -X POST "https://zenhook.dev/api/monitors/heartbeat" \
  -H "Authorization: Bearer $ZENHOOK_HEARTBEAT_TOKEN" -H "Content-Type: application/json" \
  -d '{"status":"UP"}'

status ist UP (Standard) oder DOWN. responseTime in Millisekunden, statusCode und errorMessage sind optional. Die Antwort ist 204.

Website hinzufügen

Dieser Aufruf fügt die Domain zu Statistiken hinzu und gibt sie unter site zurück, mit ihrer id und ihrem Schlüssel key. feedback schaltet Feedback ein; analytics ist standardmäßig an. Eine Domain zweimal hinzuzufügen gibt die vorhandene Website zurück. Ein Workspace fasst während der Alpha höchstens 20 Websites.

bash
curl -X POST "https://zenhook.dev/api/sites" \
  -H "Authorization: Bearer $ZENHOOK_TOKEN" -H "Content-Type: application/json" \
  -d '{"domain":"example.com","feedback":true}'

Lies dann, was einzufügen ist, mit der Domain oder der id:

bash
curl "https://zenhook.dev/api/sites/example.com/setup" \
  -H "Authorization: Bearer $ZENHOOK_TOKEN"

snippet ist die Zeile für den <head> deiner Seiten, buttonSnippet dieselbe Zeile mit unserem Feedback-Button, privacyParagraph der Absatz für deine Datenschutzseite. agentInstructions enthält all das, geschrieben für einen KI-Agenten.

Um eine Website später zu ändern, sende PATCH /api/sites/:id mit analytics oder feedback auf true oder false. Diese Adresse nimmt die id der Website, nicht ihre Domain.

Feedback aller Websites des Workspace landet in seinem einen Kanal Feedback, mit der Website in der Quelle jedes Ereignisses.

Ereignisse, Ziele und das Lesen der Zahlen