Checks
Each monitor has an interval (1 to 60 minutes depending on the plan) and a timeout (3 to 60 seconds). On schedule, a worker in Amsterdam sends the request with the user agent StanbyteMonitor/1.0 (+https://stanbyte.app/docs), follows up to five redirects and records the final status code and the total time in milliseconds.
A check passes when the status code matches what you configured (2xx by default) and, for keyword monitors, the body contains or lacks the keyword as requested. Anything else, including DNS failures, TLS errors and timeouts, counts as a failure with the reason stored on the check.
History is kept for 30 days on Starter and 90 days on Pro. Uptime percentages are computed from stored checks; a day with no checks is shown as grey on status bars.
Monitor types
| Type | What it does | Plan |
|---|---|---|
| HTTP(S) | GET, HEAD or POST request; passes on the expected status code. | Starter, Pro |
| Keyword | HTTP(S) check that also requires a phrase to be present or absent in the response body (case-insensitive). | Pro |
| TCP port | Opens a TCP connection to host:port. Use it for SMTP, IMAP, databases or anything without HTTP. | Pro |
For https monitors the TLS certificate is read every 12 hours. Its expiry date and issuer are shown on the monitor page; Pro accounts receive alerts 30, 14, 7, 3 and 1 day before expiry.
Incidents and alerts
The first failure of a healthy monitor does not raise an alert. A confirmation check runs 30 seconds later. If it also fails, the monitor is marked down, an incident opens and your alert channels are notified. When a check passes again the incident is resolved and a recovery message with the total duration follows.
Alerts go to every enabled channel on your account: e-mail addresses, Telegram chats and webhooks. If no channel is configured, alerts go to your account e-mail. Each monitor has its own "send alerts" switch.
Webhooks
Webhook channels receive a JSON POST with the header X-Stanbyte-Signature, the hex-encoded HMAC-SHA256 of the raw body using the channel's signing secret. Verify it before trusting the payload:
$expected = hash_hmac('sha256', $rawBody, $secret);
if (! hash_equals($expected, $_SERVER['HTTP_X_STANBYTE_SIGNATURE'] ?? '')) {
http_response_code(400);
exit;
}
Payloads share the same shape:
{
"event": "monitor.down", // monitor.down, monitor.up, ssl.expiring, test
"timestamp": "2026-10-11T19:04:12+00:00",
"monitor": { "id": 12, "name": "Shop", "type": "http", "url": "https://shop.example.com", "status": "down" },
"incident": { "id": 88, "started_at": "...", "cause": "Timeout: ...", "status_code": null }
}
Requests time out after 10 seconds and are not retried. A non-2xx response is recorded as the channel's last error so you can spot a broken endpoint from the dashboard.
Telegram
- Open the Stanbyte Monitor bot in Telegram and press Start. For a group, add the bot to the group.
- Find your numeric chat ID (for a private chat ask @userinfobot; group IDs start with -100).
- Add a Telegram channel in the dashboard with that ID and press Test.
Status pages
A status page lives at https://stanbyte.app/s/your-slug and shows the monitors you select, 90 daily uptime bars per monitor, the current state and incidents from the last 30 days. Pages can be public or hidden, light or dark, and refresh themselves every two minutes.
A badge is available at /s/your-slug/badge.svg for READMEs and internal wikis.
Checker addresses
All checks originate from Stanbyte infrastructure in Amsterdam, the Netherlands. The current outbound addresses are listed in your dashboard under Monitors so you can allow them in firewalls and rate limiters. Blocking the user agent or the addresses will show as downtime.
Licences
Starter (13 USD) and Pro (24 USD) are one-time licences valid for 12 months. Nothing renews automatically. When a licence ends, monitors pause and alerts stop; your configuration and history remain for 90 days so a new licence resumes everything. Buying the same plan again adds 12 months to the current end date. See the Terms of Service and Refund Policy.