New to Kestra?
Use blueprints to kickstart your first workflows.
Schedule an HTTP health check in Kestra. If the endpoint stops returning a 200 response, it logs the failure and sends an instant Slack alert.
Uptime monitoring should not depend on someone remembering to refresh a page. This blueprint turns any URL into a scheduled HTTP health check: Kestra calls the endpoint, inspects the response code, and pages your team on Slack the instant it stops returning a healthy 200. It is a lightweight, fully declarative synthetic monitor for APIs, websites, webhooks, and internal services, with no agent to install and no separate alerting stack to maintain.
io.kestra.plugin.core.trigger.Schedule trigger fires every day at 09:00 (cron: 0 9 * * *).api task (io.kestra.plugin.core.http.Request) sends an HTTP request to the uri input, which defaults to https://kestra.io.io.kestra.plugin.core.flow.If task evaluates the condition {{ outputs.api.code != 200 }}.200, the unhealthy task (io.kestra.plugin.core.log.Log) records the response body, and send_slack_alert (io.kestra.plugin.slack.notifications.SlackIncomingWebhook) posts a message that the server is down.healthy task logs that everything is fine.A bare curl in cron has no memory and no escalation path. Kestra adds the event-driven Schedule trigger, automatic retries, full execution history and lineage for every check, and conditional branching that routes failures straight to Slack, all from declarative YAML. The endpoint being monitored has no scheduler or alerting of its own, so Kestra supplies the recurring cadence, the pass/fail logic, and the notification fan-out in one place.
SLACK_WEBHOOK: the Slack Incoming Webhook URL used by send_slack_alert.SLACK_WEBHOOK secret to your Kestra instance.uri input to the endpoint you want to watch.cron to run every few minutes for near-real-time monitoring.api task to avoid alerting on a single transient blip.