Build a Website & API Uptime Monitor That DMs You on Failure
The Problem With Most Uptime Monitors
Pingdom, UptimeRobot, Better Uptime — they all do the same thing: fire an HTTP GET, check the status code, and send you "Your site is DOWN" if they get anything other than a 200.
That's useful. It's also where they stop.
What you actually want to know is: why is it down? Is the server unreachable, or is it returning 200 with an empty JSON body? Is it a timeout on /api/orders specifically, or everything? Is the response claiming success while the payload signals an internal error? Is the slowdown 400 ms or 14 seconds?
A status code can't answer those questions. An AI monitoring agent can.
This post walks you through building a 24/7 monitoring agent that polls your endpoints on a schedule, reads the actual response, and sends you a plain-language diagnosis on Telegram when something looks wrong — not just when it's technically "down."
What We're Building
A monitoring agent that:
- Runs on a schedule (every 1–5 minutes, your choice)
- Hits one or more HTTP endpoints — your app, your API, a competitor's status page, anything
- Checks not just the status code but the response body and latency
- Passes the result to an LLM that decides if something is actually wrong and writes a brief explanation
- Sends a Telegram message to you only when there's a real problem — no alert noise from transient blips
Option A: Build It in n8n (Visual Workflow, No Code)
If you want full control over the logic and you're comfortable with a node canvas, your own n8n instance is the fastest path.
The Node Layout
Schedule Trigger → HTTP Request → IF (status / latency check) → AI/LLM Node → Telegram node
↓ (no problem)
(Stop — no alert)
Step 1 — Schedule Trigger
Add a Schedule Trigger node. Set it to run every 5 minutes:
Trigger Interval: Minutes
Every: 5
For critical payment endpoints, drop this to 1 minute. For informational pages, 15 minutes is fine.
Step 2 — HTTP Request
Add an HTTP Request node. Configure:
- Method: GET (or POST if your endpoint expects a payload)
- URL:
https://your-app.com/api/health(or whatever endpoint matters) - Response Format: JSON
- Timeout: 10000 ms (10 seconds — if it doesn't respond by then, that's the problem)
Enable "Include Response Headers" so you can inspect content-type and any custom status headers.
For APIs that require auth, add an Authorization header and store the token as an n8n Credential — it won't appear in the workflow export and won't be exposed if you share the workflow JSON.
Step 3 — IF Node (First-Pass Filter)
Add an IF node to catch obvious failures before burning LLM credits:
| Condition | Operator | Value |
|---|---|---|
{{ $json.statusCode }} |
Is not | 200 |
Add a second branch: OR {{ $json.responseTime }} greater than 8000 (8 seconds).
The true branch (something suspicious) goes to the AI node. The false branch (looks fine) ends here — no message, no noise.
Step 4 — AI / LLM Node
This is where the diagnosis happens. Add the AI/LLM node (under the "AI" section in n8n's node palette). On AgentRoost, this node is already connected to included credits — you don't configure a credential or pick a provider. Just write the prompt.
System prompt:
You are a site reliability assistant. You receive HTTP response data from a monitoring check.
Analyze it and decide if there is a real problem. If yes, write a concise 2-3 sentence
diagnosis that a developer would find useful — include the status code, response time,
and any relevant snippet from the body. If no real problem, reply only with: OK
User message (with expression):
Endpoint: {{ $node["HTTP Request"].json.url }}
Status: {{ $node["HTTP Request"].json.statusCode }}
Response time: {{ $node["HTTP Request"].json.responseTime }}ms
Body (first 500 chars): {{ $node["HTTP Request"].json.body.toString().slice(0, 500) }}
Set Max Tokens to 200. You need a paragraph, not an essay.
Step 5 — Second IF (Skip "OK" Responses)
Add another IF node:
{{ $json.text }}does not containOK
True branch → Telegram. False branch → end. This prevents the LLM from sending you a message when everything is fine but the first-pass filter caught a brief anomaly.
Step 6 — Telegram Node
Add the Telegram node. You'll need a bot token (create one via BotFather — takes 2 minutes) and your own chat ID. Then:
- Operation: Send Message
- Chat ID: your personal Telegram chat ID
- Text:
🔴 Monitor Alert — {{ $node["HTTP Request"].json.url }}
{{ $node["AI/LLM"].json.text }}
Checked at: {{ $now.toISO() }}
Save and activate the workflow. Done.
Note: The BotFather step only applies to this n8n path, where you're wiring your own Telegram node. If you use Hermes (Option B below), AgentRoost auto-provisions the Telegram bot for you — no BotFather required.
Option B: Hermes (If You Want It to Just Run Forever, No Canvas)
If you'd rather not manage a workflow canvas, Hermes is AgentRoost's always-on agent framework. You describe the monitoring task in plain language, connect your Telegram bot in one click, and Hermes handles the scheduling, the HTTP calls, and the LLM reasoning natively.
Hermes is particularly good for:
- Multi-endpoint monitoring where you want the agent to correlate failures across endpoints before alerting (is just
/api/authslow, or is the whole service degraded?) - Stateful awareness — Hermes remembers the last N check results, so it can tell you "this has been slow for 20 minutes" rather than alerting on every single check
- Plain-language configuration — no node canvas required, which is useful if the person maintaining the monitor isn't a developer
Run It on AgentRoost
Here's how to get either version live in about 2 minutes:
For n8n:
- Sign up at agentroost.app
- Pick the n8n framework, give your instance a name
- Your private n8n editor opens at
https://<your-id>.agentroost.app— this is your instance, your data, your workflows - Build the workflow above — the AI/LLM node already has credits, no API key needed
- Activate the workflow; it starts polling on schedule immediately
For Hermes:
- Sign up, pick the Hermes framework
- Open the AgentRoost manager bot on Telegram,
/startyour new agent - Configure your endpoints and check interval in plain language
- Hermes starts running and will DM you directly when it finds something wrong — no BotFather, no YAML, no server
Both paths cost $19.99/mo all-in — that's the server, the scheduling infrastructure, and the LLM credits for the AI reasoning, bundled together. No separate OpenAI bill. No "we don't host the LLM, BYOK" footnote.
Compare plans and get started →
Tips and Common Pitfalls
Don't alert on every anomaly. The double-IF pattern above (first pass on status/latency, second pass on LLM output) filters out transient blips. A single slow response isn't an incident.
Include the response body, not just the status. Many APIs return 200 OK with {"success": false, "error": "payment_gateway_timeout"} in the body. A status-only check would call this healthy.
Limit the body slice. Passing 10 KB of HTML to the LLM on every check wastes credits and slows the alert. 500–1000 characters is enough for the model to understand what's happening.
Check your own downstream dependencies, not just your frontend. Set up separate monitors for /api/health, /api/auth/verify, /api/checkout, and your payment webhook endpoint. They fail independently.
Test the alert path before you rely on it. Manually trigger your workflow (or tell Hermes to run a check now) against a URL that returns 503. Confirm the Telegram message arrives before you go live.
What You End Up With
A monitoring agent that wakes up every few minutes, checks whether your endpoints are not just reachable but actually working, and sends you a human-readable explanation if something's wrong — all without managing a server, configuring an LLM API key, or babysitting a cron job.
For a solo developer or a small team, this replaces a dedicated uptime tool plus a separate AI API bill, for a single $19.99/mo subscription. And because you own your n8n instance (or your Hermes agent runs under your account), your monitoring logic and alert history are yours — not locked in a SaaS dashboard you can't export.
Frequently asked questions
Do I need to provide my own OpenAI or Anthropic API key?
No. AgentRoost includes LLM/AI credits in the subscription price. The AI nodes in n8n and the reasoning layer in Hermes are pre-wired to those credits. You never touch an API key.
How often can the agent poll my endpoints?
With n8n's Schedule Trigger you can go as frequent as every minute. For Hermes you configure the check interval in the agent's task schedule — common choices are every 1, 5, or 15 minutes.
Will I get alerted even if my phone is off?
Telegram stores messages server-side, so you'll see the alert the next time you open the app. The agent itself never sleeps — it runs always-on on dedicated hardware.
Can I monitor APIs that require authentication headers?
Yes. The HTTP Request node in n8n supports any header including Authorization: Bearer .... Store the token as an n8n Credential so it never sits in plain text in the workflow JSON.
Can I cancel if it doesn't work for my use case?
Yes. Every plan comes with a 14-day money-back guarantee, and subscriptions are monthly with no lock-in. Cancel anytime from your AgentRoost dashboard.