SMS, Telegram or Bale? Choosing Alert Channels Without Alert Fatigue
Which downtime alerts should go by SMS and which to Telegram or Bale, how to route by urgency, and how to keep the important alerts from drowning in noise.
An API that returns 200 OK can still be broken. It might return an empty list, an error message wrapped in valid JSON, stale data from a cache, or take eight seconds to answer. Good API monitoring checks what the response says, not just that a response arrived.
noc724 checks your websites, servers and APIs around the clock and alerts you by SMS, Telegram or Bale the moment something breaks.
The minimum check sends a request and expects a specific status code:
curl -s -o /dev/null -w "%{http_code} %{time_total}\n" https://api.example.com/v1/health
200 0.142This catches crashed servers, broken deploys returning 502, and expired certificates. It misses everything that fails "politely".
Set a response-time threshold that reflects what clients tolerate. If your mobile app times out after 10 seconds, alerting at 3 seconds gives you room to act. Track the trend too: an endpoint that drifts from 150 ms to 900 ms over a week usually has a growing query or a missing index.
Assert on the response body. For JSON APIs, check fields whose values prove the system works end to end:
{
"status": "ok",
"database": "connected",
"queue_depth": 12,
"version": "2.14.0"
}Useful assertions:
status equals ok - the service reports itself healthy.database equals connected - the health endpoint actually tested the database.queue_depth is below a limit - background work isn't piling up.Content-Type should be application/json; an HTML error page from a proxy often arrives with status 200 and text/html. Cache headers and CORS headers break clients in surprising ways when a deploy changes them.
Most valuable endpoints need a token. Monitor them with a dedicated test account that:
Store its credentials in the monitoring tool's secret fields, never in a URL query string where they end up in logs.
Many real flows chain requests: log in, receive a token, call the API with it, and maybe follow a returned ID. A single-request monitor can't test that. A multi-step API monitor runs the steps in order, passes values from one response into the next request, and reports which step failed:
POST /auth/login - extract access_token from the response.GET /v1/orders?limit=1 with Authorization: Bearer {token} - expect 200 and a non-empty list.GET /v1/orders/{id} using the ID from step 2 - expect the same ID back.When step 1 fails you know it's authentication; when only step 3 fails, it's the detail endpoint.
GET requests. If you must test writes, use a sandbox or a test record that each run overwrites.User-Agent so your team can filter monitoring traffic out of logs and analytics.| Signal | Typical threshold |
|---|---|
| Status code | Anything other than the expected code, confirmed from 2+ locations |
| Response time | Above your client timeout minus a safety margin, for several checks |
| Body assertion | Any failed assertion |
| Certificate | Less than 14-30 days to expiry |
Both. A health endpoint tells you the service thinks it is fine; a real endpoint proves users can actually get data. Health endpoints that don't touch the database are easy to fool.
Every 1-5 minutes for most APIs, every 30-60 seconds for payment or login APIs where minutes of downtime are expensive.
Yes. Send the query as a POST body and assert on fields in the response, exactly as with REST.
Written by
The noc724 team
Uptime monitoring engineers
We build and run noc724, an uptime monitoring service that checks websites, servers and APIs from several cities in Iran. These guides come from the problems we and our users run into while keeping services online.
Contact the teamExpert on:Monitoring
Which downtime alerts should go by SMS and which to Telegram or Bale, how to route by urgency, and how to keep the important alerts from drowning in noise.
Why uptime monitors raise false alarms - network blips, timeouts, rate limits, content changes - and the settings that remove them while keeping real alerts fast.
How to set up a simple on-call rotation and escalation policy so every critical alert is answered, without burning out a small team.