DEV Community

Alex Spinov
Alex Spinov

Posted on

Uptime Kuma Has a Free API: Self-Hosted Monitoring That Actually Looks Good

What is Uptime Kuma?

Uptime Kuma is a self-hosted monitoring tool that checks if your websites, APIs, and services are up. Think of it as a free, open-source alternative to UptimeRobot, Pingdom, or Better Uptime — with a beautiful UI and 20+ notification methods.

Why Uptime Kuma?

  • 100% free — open-source, self-hosted
  • Beautiful UI — modern dashboard, status pages included
  • 20+ notifications — Slack, Discord, Telegram, Email, PagerDuty, Webhooks
  • Multiple check types — HTTP, TCP, Ping, DNS, Docker, gRPC, SQL
  • Status pages — public status page for your users
  • 2-minute setup — one Docker command

Quick Start

# One command to run
docker run -d --restart=always -p 3001:3001 \
  -v uptime-kuma:/app/data \
  --name uptime-kuma \
  louislam/uptime-kuma:1

# Dashboard at http://localhost:3001
Enter fullscreen mode Exit fullscreen mode

Monitor Types

HTTP(s)     — Check website availability and response time
TCP Port    — Check if a port is open (databases, Redis)
Ping        — ICMP ping for server availability
DNS         — Verify DNS records resolve correctly
Docker      — Check container health status
gRPC        — Monitor gRPC service health
SQL Query   — Run a query and check result
MQTT        — Monitor MQTT broker topics
Gamedig     — Monitor game servers
Push        — Heartbeat-based (your app pushes to Kuma)
Enter fullscreen mode Exit fullscreen mode

API Usage

# Uptime Kuma uses Socket.IO for real-time communication
# For REST-like access, use the Push monitor type:

# Your app sends heartbeat to Kuma
curl "http://kuma.yourdomain.com/api/push/YOUR_PUSH_TOKEN?status=up&msg=OK&ping=50"

# For cron jobs — report success/failure
0 * * * * curl -s "http://kuma.yourdomain.com/api/push/TOKEN?status=up&msg=Backup%20complete" || curl -s "http://kuma.yourdomain.com/api/push/TOKEN?status=down&msg=Backup%20failed"
Enter fullscreen mode Exit fullscreen mode

Public Status Page

# Built-in status page features:
- Custom domain support
- Group monitors by category
- Incident management
- Maintenance windows
- Custom CSS styling
- Embedded status badge for README
Enter fullscreen mode Exit fullscreen mode

Notification Setup (Telegram)

1. Create bot via @BotFather on Telegram
2. Get bot token and chat ID
3. Add notification in Uptime Kuma:
   Type: Telegram
   Token: YOUR_BOT_TOKEN
   Chat ID: YOUR_CHAT_ID
4. Test notification
5. Assign to monitors
Enter fullscreen mode Exit fullscreen mode

Uptime Kuma vs Alternatives

Feature Uptime Kuma UptimeRobot Better Uptime Pingdom
Cost Free Free/Pro $7 $20/mo $15/mo
Self-hosted Yes No No No
Monitors (free) Unlimited 50 10 1
Check interval 20s minimum 5m free 3m 1m
Status page Yes Yes Yes Yes
Notifications 20+ channels 5 channels 10+ channels 10+
Docker monitoring Yes No No No

Real-World Impact

A small agency monitored 30 client websites with UptimeRobot free tier. At 50 monitors they hit the limit and needed Pro at $7/month. After deploying Uptime Kuma on their existing $5 VPS: unlimited monitors, 20-second intervals (vs 5-minute on UptimeRobot free), Docker container health checks, and custom status pages per client. Saved $84/year and got better monitoring.


Setting up monitoring for your infrastructure? I help teams implement reliable observability. Contact spinov001@gmail.com or explore my data tools on Apify.

Top comments (0)