Skip to content

Add 20 new BaseServiceChecker modules (5 probes each)#16

Merged
Strvm merged 1 commit intomainfrom
codex/add-checkers-for-20-new-services
Feb 27, 2026
Merged

Add 20 new BaseServiceChecker modules (5 probes each)#16
Strvm merged 1 commit intomainfrom
codex/add-checkers-for-20-new-services

Conversation

@Strvm
Copy link
Copy Markdown
Owner

@Strvm Strvm commented Feb 27, 2026

Motivation

  • Expand the repository's coverage by adding new service health checkers so more third-party services can be monitored automatically.
  • Follow the existing checker architecture and quality bar (statuspage probe + site/docs/blog/robots checks) to ensure consistent behavior across checkers.
  • Provide a predictable set of lightweight, read-only probes that exercise public endpoints and expose debug metadata for degraded/down cases.

Description

  • Added 20 new modules under src/is_it_down/checkers/services/: beehiiv, convertkit, deepl, dockerhub, drift, fastmail, freshdesk, godaddy, hetzner, linode, mailerlite, mongodbatlas, namecheap, quickbooks, replit, resend, todoist, vultr, wise, and xero, each implementing a BaseServiceChecker subclass.
  • Each service module defines five BaseCheck probes (status page API using /api/v2/status.json with apply_statuspage_indicator, homepage, docs, blog/news, and robots.txt) and exposes service_key, logo_url, official_uptime, and dependencies.
  • Check implementations reuse shared utilities (status_from_http, response_latency_ms, apply_statuspage_indicator, add_non_up_debug_metadata, json_dict_or_none) and include Google-style docstrings and doc sections for linters.

Testing

  • Ran linting with uv run --extra dev ruff check . and it passed.
  • Ran the full test suite with uv run --extra dev pytest and all tests passed.
  • Verified discovery and runtime behavior with uv run is-it-down-run-service-checker --list and spot-checked deepl using uv run is-it-down-run-service-checker deepl --json and --verbose, which executed and returned expected error/debug handling (the environment returned 403 Forbidden for the deepl probes, demonstrating error paths).

Codex Task

@github-actions
Copy link
Copy Markdown

Service Checker Preview

Generated at 2026-02-27T06:41:18.328494+00:00.

Changed service checker modules:

  • beehiiv
  • convertkit
  • deepl
  • dockerhub
  • drift
  • fastmail
  • freshdesk
  • godaddy
  • hetzner
  • linode
  • mailerlite
  • mongodbatlas
  • namecheap
  • quickbooks
  • replit
  • resend
  • todoist
  • vultr
  • wise
  • xero
Service Checker Dependencies Result
beehiiv is_it_down.checkers.services.beehiiv.BeehiivServiceChecker - 4 up / 1 degraded / 0 down (5 checks)
convertkit is_it_down.checkers.services.convertkit.ConvertkitServiceChecker - 5 up / 0 degraded / 0 down (5 checks)
deepl is_it_down.checkers.services.deepl.DeeplServiceChecker - 4 up / 0 degraded / 1 down (5 checks)
dockerhub is_it_down.checkers.services.dockerhub.DockerHubServiceChecker - 4 up / 1 degraded / 0 down (5 checks)
drift is_it_down.checkers.services.drift.DriftServiceChecker - 4 up / 0 degraded / 1 down (5 checks)
fastmail is_it_down.checkers.services.fastmail.FastmailServiceChecker - 4 up / 0 degraded / 1 down (5 checks)
freshdesk is_it_down.checkers.services.freshdesk.FreshdeskServiceChecker - 2 up / 3 degraded / 0 down (5 checks)
godaddy is_it_down.checkers.services.godaddy.GodaddyServiceChecker - 1 up / 4 degraded / 0 down (5 checks)
hetzner is_it_down.checkers.services.hetzner.HetznerServiceChecker - 3 up / 1 degraded / 1 down (5 checks)
linode is_it_down.checkers.services.linode.LinodeServiceChecker - 1 up / 4 degraded / 0 down (5 checks)
mailerlite is_it_down.checkers.services.mailerlite.MailerliteServiceChecker - 5 up / 0 degraded / 0 down (5 checks)
mongodbatlas is_it_down.checkers.services.mongodbatlas.MongodbAtlasServiceChecker - 4 up / 1 degraded / 0 down (5 checks)
namecheap is_it_down.checkers.services.namecheap.NamecheapServiceChecker - 2 up / 2 degraded / 1 down (5 checks)
quickbooks is_it_down.checkers.services.quickbooks.QuickbooksServiceChecker - 2 up / 0 degraded / 3 down (5 checks)
replit is_it_down.checkers.services.replit.ReplitServiceChecker - 4 up / 1 degraded / 0 down (5 checks)
resend is_it_down.checkers.services.resend.ResendServiceChecker - 4 up / 1 degraded / 0 down (5 checks)
todoist is_it_down.checkers.services.todoist.TodoistServiceChecker - 4 up / 1 degraded / 0 down (5 checks)
vultr is_it_down.checkers.services.vultr.VultrServiceChecker - 0 up / 5 degraded / 0 down (5 checks)
wise is_it_down.checkers.services.wise.WiseServiceChecker - 5 up / 0 degraded / 0 down (5 checks)
xero is_it_down.checkers.services.xero.XeroServiceChecker - 5 up / 0 degraded / 0 down (5 checks)

Full JSON payload is uploaded as the workflow artifact checker-preview-results.

beehiiv (beehiiv)

Official uptime: https://status.beehiiv.com/

Check Status HTTP Latency Error
beehiiv_status_page degraded 200 377ms -
beehiiv_homepage up 200 302ms -
beehiiv_docs up 200 60ms -
beehiiv_blog up 200 2735ms -
beehiiv_robots up 200 224ms -
Verbose non-up check logs (1)

Check: beehiiv_status_page

{
  "check_key": "beehiiv_status_page",
  "error_code": null,
  "error_message": null,
  "http_status": 200,
  "latency_ms": 377,
  "metadata": {
    "debug": {
      "body_preview": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <!-- force IE browsers in compatibility mode to use their most aggressive rendering engine -->\n\n    <meta charset=\"utf-8\">\n    <title>beehiiv Status</title>\n    <meta name=\"description\" content=\"Welcome to beehiiv&#39;s home for real-time and historical data on system performance.\">\n\n    <!-- Mobile viewport optimization -->\n    <meta name=\"HandheldFriendly\" content=\"True\">\n    <meta name=\"MobileOptimized\" content=\"320\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0\">\n\n    <!-- Time this page was rendered - http://purl.org/dc/terms/issued -->\n    <meta name=\"issued\" content=\"1772174453\">\n\n    <!-- Mobile IE allows us to activate ClearType technology for smoothing fonts for easy reading -->\n    <meta http-equiv=\"cleartype\" content=\"on\">\n\n      <!-- Atlassian Sans & Mono Fonts -->\n<link\n  rel=\"preconnect\"\n  href=\"https://",
      "body_truncated": true,
      "content_type": "text/html; charset=utf-8",
      "reason_phrase": "OK",
      "status_code": 200,
      "url": "https://www.beehiivstatus.com/"
    },
    "score_band": "minor_issues",
    "severity_level": 2,
    "status_detail": "degraded"
  },
  "observed_at": "2026-02-27T06:40:53.842603+00:00",
  "status": "degraded"
}
convertkit (convertkit)

Official uptime: https://status.kit.com/

Check Status HTTP Latency Error
convertkit_status_page up 200 279ms -
convertkit_homepage up 200 122ms -
convertkit_docs up 200 72ms -
convertkit_blog up 200 133ms -
convertkit_robots up 200 107ms -
deepl (deepl)

Official uptime: https://status.deepl.com/

Check Status HTTP Latency Error
deepl_status_page down - - CHECK_EXECUTION_ERROR / [Errno -2] Name or service not known
deepl_homepage up 200 307ms -
deepl_docs up 200 63ms -
deepl_blog up 200 177ms -
deepl_robots up 200 80ms -
Verbose non-up check logs (1)

Check: deepl_status_page

{
  "check_key": "deepl_status_page",
  "error_code": "CHECK_EXECUTION_ERROR",
  "error_message": "[Errno -2] Name or service not known",
  "http_status": null,
  "latency_ms": null,
  "metadata": {
    "score_band": "critical",
    "severity_level": 4,
    "status_detail": "check_error"
  },
  "observed_at": "2026-02-27T06:40:56.466771+00:00",
  "status": "down"
}
dockerhub (dockerhub)

Official uptime: https://www.dockerstatus.com/

Check Status HTTP Latency Error
dockerhub_status_page degraded 404 287ms -
dockerhub_homepage up 200 112ms -
dockerhub_docs up 200 109ms -
dockerhub_blog up 200 112ms -
dockerhub_robots up 200 101ms -
Verbose non-up check logs (1)

Check: dockerhub_status_page

{
  "check_key": "dockerhub_status_page",
  "error_code": null,
  "error_message": null,
  "http_status": 404,
  "latency_ms": 287,
  "metadata": {
    "debug": {
      "body_preview": "<html><head><title>Error</title></head><body><style>body {\nbackground-color: #272822;\nfont-family: 'Helvetica Neue', Arial, Helvetica, Geneva, sans-serif;\nfont-size: 55px;\nfont-style: normal;\nfont-variant: normal;\ncolor: rgb(255, 255, 255);\ntext-align: center;\nopacity: 0.7;\n}</style><p style=\"margin-top:200px; opacity: 0.7; font-size: 75px;\">404</p><p style=\"margin-top:5px; font-size: 20px;\">Page Not Found</p></body></html>",
      "body_truncated": false,
      "content_type": "text/html; charset=utf-8",
      "reason_phrase": "Not Found",
      "status_code": 404,
      "url": "https://www.dockerstatus.com/api/v2/status.json"
    },
    "score_band": "minor_issues",
    "severity_level": 2,
    "status_detail": "client_error"
  },
  "observed_at": "2026-02-27T06:40:57.215308+00:00",
  "status": "degraded"
}
drift (drift)

Official uptime: https://status.drift.com/

Check Status HTTP Latency Error
drift_status_page down - - CHECK_EXECUTION_ERROR / [Errno -2] Name or service not known
drift_homepage up 200 132ms -
drift_docs up 200 283ms -
drift_blog up 200 139ms -
drift_robots up 200 130ms -
Verbose non-up check logs (1)

Check: drift_status_page

{
  "check_key": "drift_status_page",
  "error_code": "CHECK_EXECUTION_ERROR",
  "error_message": "[Errno -2] Name or service not known",
  "http_status": null,
  "latency_ms": null,
  "metadata": {
    "score_band": "critical",
    "severity_level": 4,
    "status_detail": "check_error"
  },
  "observed_at": "2026-02-27T06:40:57.215499+00:00",
  "status": "down"
}
fastmail (fastmail)

Official uptime: https://status.fastmail.com/

Check Status HTTP Latency Error
fastmail_status_page down - - CHECK_EXECUTION_ERROR / [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: Hostname mismatch, certificate is not valid for 'status.fastmail.com'. (_ssl.c:1081)
fastmail_homepage up 200 255ms -
fastmail_docs up 200 295ms -
fastmail_blog up 200 253ms -
fastmail_robots up 200 255ms -
Verbose non-up check logs (1)

Check: fastmail_status_page

{
  "check_key": "fastmail_status_page",
  "error_code": "CHECK_EXECUTION_ERROR",
  "error_message": "[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: Hostname mismatch, certificate is not valid for 'status.fastmail.com'. (_ssl.c:1081)",
  "http_status": null,
  "latency_ms": null,
  "metadata": {
    "score_band": "critical",
    "severity_level": 4,
    "status_detail": "check_error"
  },
  "observed_at": "2026-02-27T06:40:57.960297+00:00",
  "status": "down"
}
freshdesk (freshdesk)

Official uptime: https://updates.freshdesk.com/

Check Status HTTP Latency Error
freshdesk_status_page degraded 404 446ms -
freshdesk_homepage up 200 150ms -
freshdesk_docs up 200 142ms -
freshdesk_blog degraded 404 1492ms -
freshdesk_robots degraded 404 281ms -
Verbose non-up check logs (3)

Check: freshdesk_status_page

{
  "check_key": "freshdesk_status_page",
  "error_code": null,
  "error_message": null,
  "http_status": 404,
  "latency_ms": 446,
  "metadata": {
    "debug": {
      "body_preview": "<!DOCTYPE html><html><head><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"/><title class=\"jsx-2496376812\">Status page Powered by Freshstatus</title><meta name=\"Description\" content=\"Status page Powered by Freshstatus\" class=\"jsx-2496376812\"/><meta name=\"keywords\" content=\"Status page, Status page,  Free status page, Live status page, Public status, private status, Public status page, Status pages\" class=\"jsx-2496376812\"/><meta charSet=\"utf-8\" class=\"jsx-2496376812\"/><meta name=\"viewport\" content=\"initial-scale=1.0, width=device-width\" class=\"jsx-2496376812\"/><link rel=\"shortcut icon\" href=\"/favicon.ico\" class=\"jsx-2496376812\"/><meta name=\"next-head-count\" content=\"7\"/><noscript data-n-css=\"\"></noscript><link rel=\"preload\" href=\"/_next/static/chunks/webpack-22796eb6ce64680fff56.js\" as=\"script\"/><link rel=\"preload\" href=\"/_next/static/chunks/framework.e211d7f05b03fbde77ec.js\" as=\"script\"/><link rel=\"preload\" href=\"/_next/static/chunks/cec99eca0d27350651aff686b50c9e0ee2c9a2cb.27ac69e",
      "body_truncated": true,
      "content_type": "text/html; charset=utf-8",
      "reason_phrase": "Not Found",
      "status_code": 404,
      "url": "https://updates.freshdesk.com/api/v2/status.json"
    },
    "score_band": "minor_issues",
    "severity_level": 2,
    "status_detail": "client_error"
  },
  "observed_at": "2026-02-27T06:40:59.910083+00:00",
  "status": "degraded"
}

Check: freshdesk_blog

{
  "check_key": "freshdesk_blog",
  "error_code": null,
  "error_message": null,
  "http_status": 404,
  "latency_ms": 1492,
  "metadata": {
    "body_chars": 189859,
    "content_type": "text/html; charset=utf-8",
    "debug": {
      "body_preview": "<!DOCTYPE html><html lang=\"en\"><head><meta charSet=\"utf-8\"/><meta name=\"viewport\" content=\"width=device-width\"/><link rel=\"preload\" as=\"image\" href=\"https://dam.freshworks.com/m/1d230ee78c07681a/original/headerLogoLight.webp\"/><title>404 Page</title><meta name=\"google-site-verification\" content=\"p1kXiLh_RXdISzpdgWbzTnGp0pbeWIXKOYGHN98BTwc\"/><meta name=\"description\" content=\"Freshworks makes ridiculously easy-to-use marketing, sales, support and IT solutions.\"/><meta name=\"application-name\" content=\"404 Page\"/><meta name=\"robots\" content=\"noindex, nofollow\"/><meta property=\"og:site_name\" content=\"Freshworks\"/><meta property=\"og:type\" content=\"website\"/><meta property=\"og:url\" content=\"https://www.freshworks.com/page-not-found/\"/><meta property=\"og:title\" content=\"404 Page\"/><meta property=\"og:description\" content=\"Freshworks makes ridiculously easy-to-use marketing, sales, support and IT solutions.\"/><meta property=\"og:image\" content=\"https://dam.freshworks.com/m/43eb62587c3e3bbd/origin",
      "body_truncated": true,
      "content_type": "text/html; charset=utf-8",
      "reason_phrase": "Not Found",
      "status_code": 404,
      "url": "https://www.freshworks.com/company/blog/"
    },
    "score_band": "major_issues",
    "severity_level": 2,
    "status_detail": "client_error"
  },
  "observed_at": "2026-02-27T06:41:00.957871+00:00",
  "status": "degraded"
}

Check: freshdesk_robots

{
  "check_key": "freshdesk_robots",
  "error_code": null,
  "error_message": null,
  "http_status": 404,
  "latency_ms": 281,
  "metadata": {
    "body_chars": 162,
    "content_type": "text/html",
    "debug": {
      "body_preview": "<html>\r\n<head><title>404 Not Found</title></head>\r\n<body bgcolor=\"white\">\r\n<center><h1>404 Not Found</h1></center>\r\n<hr><center>nginx</center>\r\n</body>\r\n</html>\r\n",
      "body_truncated": false,
      "content_type": "text/html",
      "reason_phrase": "Not Found",
      "status_code": 404,
      "url": "https://www.freshworks.com/freshdesk/robots.txt"
    },
    "score_band": "minor_issues",
    "severity_level": 2,
    "status_detail": "client_error"
  },
  "observed_at": "2026-02-27T06:40:59.747470+00:00",
  "status": "degraded"
}
godaddy (godaddy)

Official uptime: https://status.godaddy.com/

Check Status HTTP Latency Error
godaddy_status_page degraded 200 165ms -
godaddy_homepage degraded 403 156ms -
godaddy_docs up 200 147ms -
godaddy_blog degraded 403 22ms -
godaddy_robots degraded 403 171ms -
Verbose non-up check logs (4)

Check: godaddy_status_page

{
  "check_key": "godaddy_status_page",
  "error_code": null,
  "error_message": null,
  "http_status": 200,
  "latency_ms": 165,
  "metadata": {
    "debug": {
      "body_preview": "{\"page\":{\"id\":\"mnlz85pm9zhx\",\"name\":\"GoDaddy\",\"url\":\"https://status.godaddy.com\",\"time_zone\":\"Etc/UTC\",\"updated_at\":\"2026-02-27T05:53:38.166Z\"},\"status\":{\"indicator\":\"minor\",\"description\":\"Partially Degraded Service\"}}",
      "body_truncated": false,
      "content_type": "application/json; charset=utf-8",
      "json_preview": "{\"page\": {\"id\": \"mnlz85pm9zhx\", \"name\": \"GoDaddy\", \"time_zone\": \"Etc/UTC\", \"updated_at\": \"2026-02-27T05:53:38.166Z\", \"url\": \"https://status.godaddy.com\"}, \"status\": {\"description\": \"Partially Degraded Service\", \"indicator\": \"minor\"}}",
      "json_truncated": false,
      "reason_phrase": "OK",
      "status_code": 200,
      "url": "https://status.godaddy.com/api/v2/status.json"
    },
    "description": "Partially Degraded Service",
    "indicator": "minor",
    "score_band": "minor_issues",
    "severity_level": 3,
    "status_detail": "partial_outage"
  },
  "observed_at": "2026-02-27T06:41:01.124174+00:00",
  "status": "degraded"
}

Check: godaddy_homepage

{
  "check_key": "godaddy_homepage",
  "error_code": null,
  "error_message": null,
  "http_status": 403,
  "latency_ms": 156,
  "metadata": {
    "body_chars": 369,
    "content_type": "text/html",
    "debug": {
      "body_preview": "<HTML><HEAD>\n<TITLE>Access Denied</TITLE>\n</HEAD><BODY>\n<H1>Access Denied</H1>\n \nYou don't have permission to access \"http&#58;&#47;&#47;www&#46;godaddy&#46;com&#47;\" on this server.<P>\nReference&#32;&#35;18&#46;ce5ec817&#46;1772174461&#46;125b3734\n<P>https&#58;&#47;&#47;errors&#46;edgesuite&#46;net&#47;18&#46;ce5ec817&#46;1772174461&#46;125b3734</P>\n</BODY>\n</HTML>\n",
      "body_truncated": false,
      "content_type": "text/html",
      "reason_phrase": "Forbidden",
      "status_code": 403,
      "url": "https://www.godaddy.com/"
    },
    "score_band": "minor_issues",
    "severity_level": 2,
    "status_detail": "auth_challenge"
  },
  "observed_at": "2026-02-27T06:41:01.115926+00:00",
  "status": "degraded"
}

Check: godaddy_blog

{
  "check_key": "godaddy_blog",
  "error_code": null,
  "error_message": null,
  "http_status": 403,
  "latency_ms": 22,
  "metadata": {
    "body_chars": 378,
    "content_type": "text/html",
    "debug": {
      "body_preview": "<HTML><HEAD>\n<TITLE>Access Denied</TITLE>\n</HEAD><BODY>\n<H1>Access Denied</H1>\n \nYou don't have permission to access \"http&#58;&#47;&#47;www&#46;godaddy&#46;com&#47;resources\" on this server.<P>\nReference&#32;&#35;18&#46;ce5ec817&#46;1772174461&#46;125b37db\n<P>https&#58;&#47;&#47;errors&#46;edgesuite&#46;net&#47;18&#46;ce5ec817&#46;1772174461&#46;125b37db</P>\n</BODY>\n</HTML>\n",
      "body_truncated": false,
      "content_type": "text/html",
      "reason_phrase": "Forbidden",
      "status_code": 403,
      "url": "https://www.godaddy.com/resources"
    },
    "score_band": "minor_issues",
    "severity_level": 2,
    "status_detail": "auth_challenge"
  },
  "observed_at": "2026-02-27T06:41:01.157952+00:00",
  "status": "degraded"
}

Check: godaddy_robots

{
  "check_key": "godaddy_robots",
  "error_code": null,
  "error_message": null,
  "http_status": 403,
  "latency_ms": 171,
  "metadata": {
    "body_chars": 383,
    "content_type": "text/html",
    "debug": {
      "body_preview": "<HTML><HEAD>\n<TITLE>Access Denied</TITLE>\n</HEAD><BODY>\n<H1>Access Denied</H1>\n \nYou don't have permission to access \"http&#58;&#47;&#47;www&#46;godaddy&#46;com&#47;robots&#46;txt\" on this server.<P>\nReference&#32;&#35;18&#46;ce5ec817&#46;1772174461&#46;125b378c\n<P>https&#58;&#47;&#47;errors&#46;edgesuite&#46;net&#47;18&#46;ce5ec817&#46;1772174461&#46;125b378c</P>\n</BODY>\n</HTML>\n",
      "body_truncated": false,
      "content_type": "text/html",
      "reason_phrase": "Forbidden",
      "status_code": 403,
      "url": "https://www.godaddy.com/robots.txt"
    },
    "score_band": "minor_issues",
    "severity_level": 2,
    "status_detail": "auth_challenge"
  },
  "observed_at": "2026-02-27T06:41:01.133371+00:00",
  "status": "degraded"
}
hetzner (hetzner)

Official uptime: https://status.hetzner.com/

Check Status HTTP Latency Error
hetzner_status_page degraded 404 389ms -
hetzner_homepage up 200 465ms -
hetzner_docs up 200 759ms -
hetzner_blog up 200 182ms -
hetzner_robots down - - TIMEOUT / Check timed out after 5.0s
Verbose non-up check logs (2)

Check: hetzner_status_page

{
  "check_key": "hetzner_status_page",
  "error_code": null,
  "error_message": null,
  "http_status": 404,
  "latency_ms": 389,
  "metadata": {
    "debug": {
      "body_preview": "<!DOCTYPE html><html lang=\"en\"><head><meta charSet=\"UTF-8\" data-next-head=\"\"/><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" data-next-head=\"\"/><title data-next-head=\"\">Hetzner Online Status</title><meta name=\"description\" content=\"Hetzner Online Status \u2013 On this site, you\u2019ll find status reports about Hetzner Online\u2019s products and services.\" data-next-head=\"\"/><link rel=\"shortcut icon\" href=\"/favicon.ico\" data-next-head=\"\"/><link rel=\"alternate\" type=\"application/rss+xml\" title=\"German atom feed for Hetzner status\" href=\"./de.atom\"/><link rel=\"alternate\" type=\"application/rss+xml\" title=\"English atom feed for Hetzner status\" href=\"./en.atom\"/><link data-next-font=\"size-adjust\" rel=\"preconnect\" href=\"/\" crossorigin=\"anonymous\"/><link rel=\"preload\" href=\"/_next/static/css/be5cd2eabf43d0d1.css\" as=\"style\"/><script type=\"text/javascript\">var _paq = window._paq = window._paq || [];\n        /* tracker methods like \"setCustomDimension\" should be called before \"trackPageVi",
      "body_truncated": true,
      "content_type": "text/html; charset=utf-8",
      "reason_phrase": "Not Found",
      "status_code": 404,
      "url": "https://status.hetzner.com/api/v2/status.json"
    },
    "score_band": "minor_issues",
    "severity_level": 2,
    "status_detail": "client_error"
  },
  "observed_at": "2026-02-27T06:41:01.548630+00:00",
  "status": "degraded"
}

Check: hetzner_robots

{
  "check_key": "hetzner_robots",
  "error_code": "TIMEOUT",
  "error_message": "Check timed out after 5.0s",
  "http_status": null,
  "latency_ms": null,
  "metadata": {
    "score_band": "critical",
    "severity_level": 5,
    "status_detail": "timeout"
  },
  "observed_at": "2026-02-27T06:41:01.160756+00:00",
  "status": "down"
}
linode (linode)

Official uptime: https://status.linode.com/

Check Status HTTP Latency Error
linode_status_page up 200 185ms -
linode_homepage degraded 403 249ms -
linode_docs degraded 403 518ms -
linode_blog degraded 403 335ms -
linode_robots degraded 403 255ms -
Verbose non-up check logs (4)

Check: linode_homepage

{
  "check_key": "linode_homepage",
  "error_code": null,
  "error_message": null,
  "http_status": 403,
  "latency_ms": 249,
  "metadata": {
    "body_chars": 2982,
    "content_type": "text/html",
    "debug": {
      "body_preview": "<!DOCTYPE html><html lang=\"en\" dir=\"ltr\"><head> <meta charset=\"utf-8\"> <meta http-equiv=\"x-ua-compatible\" content=\"ie=edge\"> <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\"> <link rel=\"shortcut icon\" href=\"https://assets.linode.com/icons/favicon.ico\"> <meta name='robots' content='noindex, nofollow'/> <meta name=\"google\" content=\"notranslate\"/><title>403 Forbidden</title> <meta name=\"description\" content=\"You are not allowed to access this.\"/> <link rel=\"preconnect\" href=\"https://assets.linode.com\" crossorigin> <link rel=\"preload\" href=\"https://assets.linode.com/fonts/source-sans-pro-v14-latin-regular.woff2\" as=\"font\" type=\"font/woff2\" crossorigin=\"\"> <link rel=\"preload\" href=\"https://assets.linode.com/fonts/source-sans-pro-v14-latin-600.woff2\" as=\"font\" type=\"font/woff2\" crossorigin=\"\"><style>@font-face{font-display:swap;font-family:\"Source Sans Pro\";font-style:normal;font-weight:400;src:local(\"\"),url(\"https://assets.linode.com/fonts/source-sans-pr",
      "body_truncated": true,
      "content_type": "text/html",
      "reason_phrase": "Forbidden",
      "status_code": 403,
      "url": "https://www.linode.com/"
    },
    "score_band": "minor_issues",
    "severity_level": 2,
    "status_detail": "auth_challenge"
  },
  "observed_at": "2026-02-27T06:41:06.417888+00:00",
  "status": "degraded"
}

Check: linode_docs

{
  "check_key": "linode_docs",
  "error_code": null,
  "error_message": null,
  "http_status": 403,
  "latency_ms": 518,
  "metadata": {
    "body_chars": 2982,
    "content_type": "text/html",
    "debug": {
      "body_preview": "<!DOCTYPE html><html lang=\"en\" dir=\"ltr\"><head> <meta charset=\"utf-8\"> <meta http-equiv=\"x-ua-compatible\" content=\"ie=edge\"> <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\"> <link rel=\"shortcut icon\" href=\"https://assets.linode.com/icons/favicon.ico\"> <meta name='robots' content='noindex, nofollow'/> <meta name=\"google\" content=\"notranslate\"/><title>403 Forbidden</title> <meta name=\"description\" content=\"You are not allowed to access this.\"/> <link rel=\"preconnect\" href=\"https://assets.linode.com\" crossorigin> <link rel=\"preload\" href=\"https://assets.linode.com/fonts/source-sans-pro-v14-latin-regular.woff2\" as=\"font\" type=\"font/woff2\" crossorigin=\"\"> <link rel=\"preload\" href=\"https://assets.linode.com/fonts/source-sans-pro-v14-latin-600.woff2\" as=\"font\" type=\"font/woff2\" crossorigin=\"\"><style>@font-face{font-display:swap;font-family:\"Source Sans Pro\";font-style:normal;font-weight:400;src:local(\"\"),url(\"https://assets.linode.com/fonts/source-sans-pr",
      "body_truncated": true,
      "content_type": "text/html",
      "reason_phrase": "Forbidden",
      "status_code": 403,
      "url": "https://www.linode.com/docs/"
    },
    "score_band": "degraded",
    "severity_level": 2,
    "status_detail": "auth_challenge"
  },
  "observed_at": "2026-02-27T06:41:06.686987+00:00",
  "status": "degraded"
}

Check: linode_blog

{
  "check_key": "linode_blog",
  "error_code": null,
  "error_message": null,
  "http_status": 403,
  "latency_ms": 335,
  "metadata": {
    "body_chars": 2982,
    "content_type": "text/html",
    "debug": {
      "body_preview": "<!DOCTYPE html><html lang=\"en\" dir=\"ltr\"><head> <meta charset=\"utf-8\"> <meta http-equiv=\"x-ua-compatible\" content=\"ie=edge\"> <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\"> <link rel=\"shortcut icon\" href=\"https://assets.linode.com/icons/favicon.ico\"> <meta name='robots' content='noindex, nofollow'/> <meta name=\"google\" content=\"notranslate\"/><title>403 Forbidden</title> <meta name=\"description\" content=\"You are not allowed to access this.\"/> <link rel=\"preconnect\" href=\"https://assets.linode.com\" crossorigin> <link rel=\"preload\" href=\"https://assets.linode.com/fonts/source-sans-pro-v14-latin-regular.woff2\" as=\"font\" type=\"font/woff2\" crossorigin=\"\"> <link rel=\"preload\" href=\"https://assets.linode.com/fonts/source-sans-pro-v14-latin-600.woff2\" as=\"font\" type=\"font/woff2\" crossorigin=\"\"><style>@font-face{font-display:swap;font-family:\"Source Sans Pro\";font-style:normal;font-weight:400;src:local(\"\"),url(\"https://assets.linode.com/fonts/source-sans-pr",
      "body_truncated": true,
      "content_type": "text/html",
      "reason_phrase": "Forbidden",
      "status_code": 403,
      "url": "https://www.linode.com/blog/"
    },
    "score_band": "minor_issues",
    "severity_level": 2,
    "status_detail": "auth_challenge"
  },
  "observed_at": "2026-02-27T06:41:06.504615+00:00",
  "status": "degraded"
}

Check: linode_robots

{
  "check_key": "linode_robots",
  "error_code": null,
  "error_message": null,
  "http_status": 403,
  "latency_ms": 255,
  "metadata": {
    "body_chars": 2982,
    "content_type": "text/html",
    "debug": {
      "body_preview": "<!DOCTYPE html><html lang=\"en\" dir=\"ltr\"><head> <meta charset=\"utf-8\"> <meta http-equiv=\"x-ua-compatible\" content=\"ie=edge\"> <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\"> <link rel=\"shortcut icon\" href=\"https://assets.linode.com/icons/favicon.ico\"> <meta name='robots' content='noindex, nofollow'/> <meta name=\"google\" content=\"notranslate\"/><title>403 Forbidden</title> <meta name=\"description\" content=\"You are not allowed to access this.\"/> <link rel=\"preconnect\" href=\"https://assets.linode.com\" crossorigin> <link rel=\"preload\" href=\"https://assets.linode.com/fonts/source-sans-pro-v14-latin-regular.woff2\" as=\"font\" type=\"font/woff2\" crossorigin=\"\"> <link rel=\"preload\" href=\"https://assets.linode.com/fonts/source-sans-pro-v14-latin-600.woff2\" as=\"font\" type=\"font/woff2\" crossorigin=\"\"><style>@font-face{font-display:swap;font-family:\"Source Sans Pro\";font-style:normal;font-weight:400;src:local(\"\"),url(\"https://assets.linode.com/fonts/source-sans-pr",
      "body_truncated": true,
      "content_type": "text/html",
      "reason_phrase": "Forbidden",
      "status_code": 403,
      "url": "https://www.linode.com/robots.txt"
    },
    "score_band": "minor_issues",
    "severity_level": 2,
    "status_detail": "auth_challenge"
  },
  "observed_at": "2026-02-27T06:41:06.425368+00:00",
  "status": "degraded"
}
mailerlite (mailerlite)

Official uptime: https://status.mailerlite.com/

Check Status HTTP Latency Error
mailerlite_status_page up 200 267ms -
mailerlite_homepage up 200 694ms -
mailerlite_docs up 200 133ms -
mailerlite_blog up 200 460ms -
mailerlite_robots up 200 78ms -
mongodbatlas (mongodbatlas)

Official uptime: https://status.mongodb.com/

Check Status HTTP Latency Error
mongodbatlas_status_page up 200 168ms -
mongodbatlas_homepage up 200 793ms -
mongodbatlas_docs up 200 176ms -
mongodbatlas_blog up 200 2211ms -
mongodbatlas_robots degraded 404 174ms -
Verbose non-up check logs (1)

Check: mongodbatlas_robots

{
  "check_key": "mongodbatlas_robots",
  "error_code": null,
  "error_message": null,
  "http_status": 404,
  "latency_ms": 174,
  "metadata": {
    "body_chars": 8893,
    "content_type": "text/html; charset=utf-8",
    "debug": {
      "body_preview": "<!doctype html><html lang=\"en-us\">\n  \n    <head>\n      <meta name=\"viewport\" content=\"width=device-width,initial-scale=1,maximum-scale=5\">\n      <meta charset=\"utf-8\">\n      <meta http-equiv=\"Accept-CH\" content=\"DPR\">\n      <link rel=\"preconnect\" href=\"https://static.mongodb.com\" crossorigin />\n      <link rel=\"dns-prefetch\" href=\"https://static.mongodb.com\" />\n      <link rel=\"preconnect\" href=\"https://webassets.mongodb.com\" />\n      <link rel=\"dns-prefetch\" href=\"https://webassets.mongodb.com\" />\n      <link rel=\"preconnect\" href=\"https://webimages.mongodb.com\" />\n      <link rel=\"dns-prefetch\" href=\"https://webimages.mongodb.com\" />\n      <link rel=\"preconnect\" href=\"https://cdn.cookielaw.org\" />\n      <link rel=\"dns-prefetch\" href=\"https://cdn.cookielaw.org\" />\n      <link rel=\"preload\" href=\"https://static.mongodb.com/com/fonts/DINWeb-Bold.woff\" as=\"font\" type=\"font/woff\" crossorigin />\n      <link rel=\"preload\" href=\"https://static.mongodb.com/com/fonts/EuclidCircularA-Regular-We",
      "body_truncated": true,
      "content_type": "text/html; charset=utf-8",
      "reason_phrase": "Not Found",
      "status_code": 404,
      "url": "https://www.mongodb.com/atlas/robots.txt"
    },
    "score_band": "minor_issues",
    "severity_level": 2,
    "status_detail": "client_error"
  },
  "observed_at": "2026-02-27T06:41:07.560976+00:00",
  "status": "degraded"
}
namecheap (namecheap)

Official uptime: https://status.namecheap.com/

Check Status HTTP Latency Error
namecheap_status_page down - - CHECK_EXECUTION_ERROR / [Errno -2] Name or service not known
namecheap_homepage degraded 403 138ms -
namecheap_docs up 200 346ms -
namecheap_blog degraded 403 146ms -
namecheap_robots up 200 146ms -
Verbose non-up check logs (3)

Check: namecheap_status_page

{
  "check_key": "namecheap_status_page",
  "error_code": "CHECK_EXECUTION_ERROR",
  "error_message": "[Errno -2] Name or service not known",
  "http_status": null,
  "latency_ms": null,
  "metadata": {
    "score_band": "critical",
    "severity_level": 4,
    "status_detail": "check_error"
  },
  "observed_at": "2026-02-27T06:41:09.600259+00:00",
  "status": "down"
}

Check: namecheap_homepage

{
  "check_key": "namecheap_homepage",
  "error_code": null,
  "error_message": null,
  "http_status": 403,
  "latency_ms": 138,
  "metadata": {
    "body_chars": 8816,
    "content_type": "text/html; charset=UTF-8",
    "debug": {
      "body_preview": "<!DOCTYPE html><html lang=\"en-US\"><head><title>Just a moment...</title><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"><meta name=\"robots\" content=\"noindex,nofollow\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"><style>*{box-sizing:border-box;margin:0;padding:0}html{line-height:1.15;-webkit-text-size-adjust:100%;color:#313131;font-family:system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans\",sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\"}body{display:flex;flex-direction:column;height:100vh;min-height:100vh}.main-content{margin:8rem auto;padding-left:1.5rem;max-width:60rem}@media (width <= 720px){.main-content{margin-top:4rem}}.h2{line-height:2.25rem;font-size:1.5rem;font-weight:500}@media (width <= 720px){.h2{line-height:1.5rem;font-size:1.25rem}}#challenge-error-text{background-image:url(\"data:image/svg+xml;base64,P",
      "body_truncated": true,
      "content_type": "text/html; charset=UTF-8",
      "reason_phrase": "Forbidden",
      "status_code": 403,
      "url": "https://www.namecheap.com/"
    },
    "score_band": "minor_issues",
    "severity_level": 2,
    "status_detail": "auth_challenge"
  },
  "observed_at": "2026-02-27T06:41:09.740730+00:00",
  "status": "degraded"
}

Check: namecheap_blog

{
  "check_key": "namecheap_blog",
  "error_code": null,
  "error_message": null,
  "http_status": 403,
  "latency_ms": 146,
  "metadata": {
    "body_chars": 8834,
    "content_type": "text/html; charset=UTF-8",
    "debug": {
      "body_preview": "<!DOCTYPE html><html lang=\"en-US\"><head><title>Just a moment...</title><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"><meta name=\"robots\" content=\"noindex,nofollow\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"><style>*{box-sizing:border-box;margin:0;padding:0}html{line-height:1.15;-webkit-text-size-adjust:100%;color:#313131;font-family:system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans\",sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\"}body{display:flex;flex-direction:column;height:100vh;min-height:100vh}.main-content{margin:8rem auto;padding-left:1.5rem;max-width:60rem}@media (width <= 720px){.main-content{margin-top:4rem}}.h2{line-height:2.25rem;font-size:1.5rem;font-weight:500}@media (width <= 720px){.h2{line-height:1.5rem;font-size:1.25rem}}#challenge-error-text{background-image:url(\"data:image/svg+xml;base64,P",
      "body_truncated": true,
      "content_type": "text/html; charset=UTF-8",
      "reason_phrase": "Forbidden",
      "status_code": 403,
      "url": "https://www.namecheap.com/blog/"
    },
    "score_band": "minor_issues",
    "severity_level": 2,
    "status_detail": "auth_challenge"
  },
  "observed_at": "2026-02-27T06:41:09.749250+00:00",
  "status": "degraded"
}
quickbooks (quickbooks)

Official uptime: https://status.developer.intuit.com/

Check Status HTTP Latency Error
quickbooks_status_page up 200 211ms -
quickbooks_homepage down - - TIMEOUT / Check timed out after 5.0s
quickbooks_docs up 200 696ms -
quickbooks_blog down - - TIMEOUT / Check timed out after 5.0s
quickbooks_robots down - - TIMEOUT / Check timed out after 5.0s
Verbose non-up check logs (3)

Check: quickbooks_homepage

{
  "check_key": "quickbooks_homepage",
  "error_code": "TIMEOUT",
  "error_message": "Check timed out after 5.0s",
  "http_status": null,
  "latency_ms": null,
  "metadata": {
    "score_band": "critical",
    "severity_level": 5,
    "status_detail": "timeout"
  },
  "observed_at": "2026-02-27T06:41:09.949570+00:00",
  "status": "down"
}

Check: quickbooks_blog

{
  "check_key": "quickbooks_blog",
  "error_code": "TIMEOUT",
  "error_message": "Check timed out after 5.0s",
  "http_status": null,
  "latency_ms": null,
  "metadata": {
    "score_band": "critical",
    "severity_level": 5,
    "status_detail": "timeout"
  },
  "observed_at": "2026-02-27T06:41:09.950801+00:00",
  "status": "down"
}

Check: quickbooks_robots

{
  "check_key": "quickbooks_robots",
  "error_code": "TIMEOUT",
  "error_message": "Check timed out after 5.0s",
  "http_status": null,
  "latency_ms": null,
  "metadata": {
    "score_band": "critical",
    "severity_level": 5,
    "status_detail": "timeout"
  },
  "observed_at": "2026-02-27T06:41:09.951391+00:00",
  "status": "down"
}
replit (replit)

Official uptime: https://status.replit.com/

Check Status HTTP Latency Error
replit_status_page degraded 404 564ms -
replit_homepage up 200 94ms -
replit_docs up 200 61ms -
replit_blog up 200 231ms -
replit_robots up 200 95ms -
Verbose non-up check logs (1)

Check: replit_status_page

{
  "check_key": "replit_status_page",
  "error_code": null,
  "error_message": null,
  "http_status": 404,
  "latency_ms": 564,
  "metadata": {
    "debug": {
      "body_preview": "<!doctype html>\n<html lang=\"en\" >\n    <head>\n        \n<script type=\"text/javascript\" nonce=\"DNux+eLUFr+QLk5qbEg1K2DYMg/C8XG7ca1Y5zRjDBk=\">window.NREUM||(NREUM={});NREUM.info={\"beacon\":\"bam.nr-data.net\",\"errorBeacon\":\"bam.nr-data.net\",\"licenseKey\":\"92b677be6b\",\"applicationID\":\"8841359\",\"transactionName\":\"clcIRUBYW1xTRUsVTVNUD1IdUk9TU0cQDFdfS0lfXUNoVllCCgE=\",\"queueTime\":300,\"applicationTime\":23,\"agent\":\"\"}</script>\n<script type=\"text/javascript\" nonce=\"DNux+eLUFr+QLk5qbEg1K2DYMg/C8XG7ca1Y5zRjDBk=\">(window.NREUM||(NREUM={})).init={privacy:{cookies_enabled:true},ajax:{deny_list:[]},feature_flags:[\"soft_nav\"]};(window.NREUM||(NREUM={})).loader_config={licenseKey:\"92b677be6b\",applicationID:\"8841359\",browserID:\"8841392\"};;/*! For license information please see nr-loader-rum-1.310.1.min.js.LICENSE.txt */\n(()=>{var e,t,r={163:(e,t,r)=>{\"use strict\";r.d(t,{j:()=>E});var n=r(384),i=r(1741);var s=r(2555);r(860).K7.genericEvents;const a=\"experimental.resources\",o=\"register\",c=e=>{if(!e||\"string\"!=t",
      "body_truncated": true,
      "content_type": "text/html; charset=utf-8",
      "reason_phrase": "Not Found",
      "status_code": 404,
      "url": "https://status.replit.com/api/v2/status.json"
    },
    "score_band": "degraded",
    "severity_level": 2,
    "status_detail": "client_error"
  },
  "observed_at": "2026-02-27T06:41:15.521663+00:00",
  "status": "degraded"
}
resend (resend)

Official uptime: https://status.resend.com/

Check Status HTTP Latency Error
resend_status_page degraded 200 496ms -
resend_homepage up 200 145ms -
resend_docs up 200 91ms -
resend_blog up 200 174ms -
resend_robots up 200 116ms -
Verbose non-up check logs (1)

Check: resend_status_page

{
  "check_key": "resend_status_page",
  "error_code": null,
  "error_message": null,
  "http_status": 200,
  "latency_ms": 496,
  "metadata": {
    "debug": {
      "body_preview": "<!DOCTYPE html><html lang=\"en\" class=\"__className_0ad670 h-full dark\"><head><meta charSet=\"utf-8\"/><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/><link rel=\"preload\" as=\"image\" imageSrcSet=\"/_next/image?url=https%3A%2F%2Fstorage.googleapis.com%2Fincident-io-status-page-logos%2F01GXE8HECH2BKY1NNC8T6E88NB%2Fresend%2Fadfat5n4.png&amp;w=640&amp;q=75&amp;dpl=dpl_D6cnaHcneLXmYmTZrpa47tRLccpz 640w, /_next/image?url=https%3A%2F%2Fstorage.googleapis.com%2Fincident-io-status-page-logos%2F01GXE8HECH2BKY1NNC8T6E88NB%2Fresend%2Fadfat5n4.png&amp;w=750&amp;q=75&amp;dpl=dpl_D6cnaHcneLXmYmTZrpa47tRLccpz 750w, /_next/image?url=https%3A%2F%2Fstorage.googleapis.com%2Fincident-io-status-page-logos%2F01GXE8HECH2BKY1NNC8T6E88NB%2Fresend%2Fadfat5n4.png&amp;w=828&amp;q=75&amp;dpl=dpl_D6cnaHcneLXmYmTZrpa47tRLccpz 828w, /_next/image?url=https%3A%2F%2Fstorage.googleapis.com%2Fincident-io-status-page-logos%2F01GXE8HECH2BKY1NNC8T6E88NB%2Fresend%2Fadfat5n4.png&amp;w=1080&amp;q=75&amp;dpl=dpl_D6",
      "body_truncated": true,
      "content_type": "text/html; charset=utf-8",
      "reason_phrase": "OK",
      "status_code": 200,
      "url": "https://resend-status.com"
    },
    "score_band": "minor_issues",
    "severity_level": 2,
    "status_detail": "degraded"
  },
  "observed_at": "2026-02-27T06:41:16.085962+00:00",
  "status": "degraded"
}
todoist (todoist)

Official uptime: https://status.todoist.net/

Check Status HTTP Latency Error
todoist_status_page degraded 404 211ms -
todoist_homepage up 200 143ms -
todoist_docs up 200 114ms -
todoist_blog up 200 124ms -
todoist_robots up 200 144ms -
Verbose non-up check logs (1)

Check: todoist_status_page

{
  "check_key": "todoist_status_page",
  "error_code": null,
  "error_message": null,
  "http_status": 404,
  "latency_ms": 211,
  "metadata": {
    "debug": {
      "body_preview": "<!DOCTYPE html><!--t4pZ34JTEurg3WoAP71AO--><html><head><meta charSet=\"utf-8\"/><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/><link rel=\"preload\" as=\"script\" fetchPriority=\"low\" href=\"/_next/static/chunks/webpack-95fa6d8a9ff506e3.js\"/><script src=\"/_next/static/chunks/87c73c54-dd8d81ac9604067c.js\" async=\"\"></script><script src=\"/_next/static/chunks/18-2e1704a096d0179e.js\" async=\"\"></script><script src=\"/_next/static/chunks/main-app-57aa1716f0d0f500.js\" async=\"\"></script><meta name=\"robots\" content=\"noindex\"/><title>404: This page could not be found.</title><script src=\"/_next/static/chunks/polyfills-42372ed130431b0a.js\" noModule=\"\"></script></head><body><div hidden=\"\"><!--$--><!--/$--></div><div style=\"font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center\"><div><style>body{color:#",
      "body_truncated": true,
      "content_type": "text/html; charset=utf-8",
      "reason_phrase": "Not Found",
      "status_code": 404,
      "url": "https://status.todoist.net/api/v2/status.json"
    },
    "score_band": "minor_issues",
    "severity_level": 2,
    "status_detail": "client_error"
  },
  "observed_at": "2026-02-27T06:41:16.298572+00:00",
  "status": "degraded"
}
vultr (vultr)

Official uptime: https://status.vultr.com/

Check Status HTTP Latency Error
vultr_status_page degraded 404 81ms -
vultr_homepage degraded 403 260ms -
vultr_docs degraded 403 174ms -
vultr_blog degraded 403 260ms -
vultr_robots degraded 403 265ms -
Verbose non-up check logs (5)

Check: vultr_status_page

{
  "check_key": "vultr_status_page",
  "error_code": null,
  "error_message": null,
  "http_status": 404,
  "latency_ms": 81,
  "metadata": {
    "debug": {
      "body_preview": "",
      "content_type": "text/html; charset=UTF-8",
      "reason_phrase": "Not Found",
      "status_code": 404,
      "url": "https://status.vultr.com/api/v2/status.json"
    },
    "score_band": "minor_issues",
    "severity_level": 2,
    "status_detail": "client_error"
  },
  "observed_at": "2026-02-27T06:41:16.473029+00:00",
  "status": "degraded"
}

Check: vultr_homepage

{
  "check_key": "vultr_homepage",
  "error_code": null,
  "error_message": null,
  "http_status": 403,
  "latency_ms": 260,
  "metadata": {
    "body_chars": 8748,
    "content_type": "text/html; charset=UTF-8",
    "debug": {
      "body_preview": "<!DOCTYPE html><html lang=\"en-US\"><head><title>Just a moment...</title><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"><meta name=\"robots\" content=\"noindex,nofollow\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"><style>*{box-sizing:border-box;margin:0;padding:0}html{line-height:1.15;-webkit-text-size-adjust:100%;color:#313131;font-family:system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans\",sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\"}body{display:flex;flex-direction:column;height:100vh;min-height:100vh}.main-content{margin:8rem auto;padding-left:1.5rem;max-width:60rem}@media (width <= 720px){.main-content{margin-top:4rem}}.h2{line-height:2.25rem;font-size:1.5rem;font-weight:500}@media (width <= 720px){.h2{line-height:1.5rem;font-size:1.25rem}}#challenge-error-text{background-image:url(\"data:image/svg+xml;base64,P",
      "body_truncated": true,
      "content_type": "text/html; charset=UTF-8",
      "reason_phrase": "Forbidden",
      "status_code": 403,
      "url": "https://www.vultr.com/"
    },
    "score_band": "minor_issues",
    "severity_level": 2,
    "status_detail": "auth_challenge"
  },
  "observed_at": "2026-02-27T06:41:16.652352+00:00",
  "status": "degraded"
}

Check: vultr_docs

{
  "check_key": "vultr_docs",
  "error_code": null,
  "error_message": null,
  "http_status": 403,
  "latency_ms": 174,
  "metadata": {
    "body_chars": 8771,
    "content_type": "text/html; charset=UTF-8",
    "debug": {
      "body_preview": "<!DOCTYPE html><html lang=\"en-US\"><head><title>Just a moment...</title><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"><meta name=\"robots\" content=\"noindex,nofollow\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"><style>*{box-sizing:border-box;margin:0;padding:0}html{line-height:1.15;-webkit-text-size-adjust:100%;color:#313131;font-family:system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans\",sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\"}body{display:flex;flex-direction:column;height:100vh;min-height:100vh}.main-content{margin:8rem auto;padding-left:1.5rem;max-width:60rem}@media (width <= 720px){.main-content{margin-top:4rem}}.h2{line-height:2.25rem;font-size:1.5rem;font-weight:500}@media (width <= 720px){.h2{line-height:1.5rem;font-size:1.25rem}}#challenge-error-text{background-image:url(\"data:image/svg+xml;base64,P",
      "body_truncated": true,
      "content_type": "text/html; charset=UTF-8",
      "reason_phrase": "Forbidden",
      "status_code": 403,
      "url": "https://docs.vultr.com/"
    },
    "score_band": "minor_issues",
    "severity_level": 2,
    "status_detail": "auth_challenge"
  },
  "observed_at": "2026-02-27T06:41:16.566558+00:00",
  "status": "degraded"
}

Check: vultr_blog

{
  "check_key": "vultr_blog",
  "error_code": null,
  "error_message": null,
  "http_status": 403,
  "latency_ms": 260,
  "metadata": {
    "body_chars": 8788,
    "content_type": "text/html; charset=UTF-8",
    "debug": {
      "body_preview": "<!DOCTYPE html><html lang=\"en-US\"><head><title>Just a moment...</title><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"><meta name=\"robots\" content=\"noindex,nofollow\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"><style>*{box-sizing:border-box;margin:0;padding:0}html{line-height:1.15;-webkit-text-size-adjust:100%;color:#313131;font-family:system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans\",sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\"}body{display:flex;flex-direction:column;height:100vh;min-height:100vh}.main-content{margin:8rem auto;padding-left:1.5rem;max-width:60rem}@media (width <= 720px){.main-content{margin-top:4rem}}.h2{line-height:2.25rem;font-size:1.5rem;font-weight:500}@media (width <= 720px){.h2{line-height:1.5rem;font-size:1.25rem}}#challenge-error-text{background-image:url(\"data:image/svg+xml;base64,P",
      "body_truncated": true,
      "content_type": "text/html; charset=UTF-8",
      "reason_phrase": "Forbidden",
      "status_code": 403,
      "url": "https://www.vultr.com/news/"
    },
    "score_band": "minor_issues",
    "severity_level": 2,
    "status_detail": "auth_challenge"
  },
  "observed_at": "2026-02-27T06:41:16.653613+00:00",
  "status": "degraded"
}

Check: vultr_robots

{
  "check_key": "vultr_robots",
  "error_code": null,
  "error_message": null,
  "http_status": 403,
  "latency_ms": 265,
  "metadata": {
    "body_chars": 8778,
    "content_type": "text/html; charset=UTF-8",
    "debug": {
      "body_preview": "<!DOCTYPE html><html lang=\"en-US\"><head><title>Just a moment...</title><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"><meta name=\"robots\" content=\"noindex,nofollow\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"><style>*{box-sizing:border-box;margin:0;padding:0}html{line-height:1.15;-webkit-text-size-adjust:100%;color:#313131;font-family:system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans\",sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\"}body{display:flex;flex-direction:column;height:100vh;min-height:100vh}.main-content{margin:8rem auto;padding-left:1.5rem;max-width:60rem}@media (width <= 720px){.main-content{margin-top:4rem}}.h2{line-height:2.25rem;font-size:1.5rem;font-weight:500}@media (width <= 720px){.h2{line-height:1.5rem;font-size:1.25rem}}#challenge-error-text{background-image:url(\"data:image/svg+xml;base64,P",
      "body_truncated": true,
      "content_type": "text/html; charset=UTF-8",
      "reason_phrase": "Forbidden",
      "status_code": 403,
      "url": "https://www.vultr.com/robots.txt"
    },
    "score_band": "minor_issues",
    "severity_level": 2,
    "status_detail": "auth_challenge"
  },
  "observed_at": "2026-02-27T06:41:16.658911+00:00",
  "status": "degraded"
}
wise (wise)

Official uptime: https://status.wise.com/

Check Status HTTP Latency Error
wise_status_page up 200 300ms -
wise_homepage up 200 1029ms -
wise_docs up 200 440ms -
wise_blog up 200 623ms -
wise_robots up 200 421ms -
xero (xero)

Official uptime: https://status.developer.xero.com/

Check Status HTTP Latency Error
xero_status_page up 200 290ms -
xero_homepage up 200 67ms -
xero_docs up 200 364ms -
xero_blog up 200 471ms -
xero_robots up 200 144ms -

Changed files considered:

  • src/is_it_down/checkers/services/beehiiv.py
  • src/is_it_down/checkers/services/convertkit.py
  • src/is_it_down/checkers/services/deepl.py
  • src/is_it_down/checkers/services/dockerhub.py
  • src/is_it_down/checkers/services/drift.py
  • src/is_it_down/checkers/services/fastmail.py
  • src/is_it_down/checkers/services/freshdesk.py
  • src/is_it_down/checkers/services/godaddy.py
  • src/is_it_down/checkers/services/hetzner.py
  • src/is_it_down/checkers/services/linode.py
  • src/is_it_down/checkers/services/mailerlite.py
  • src/is_it_down/checkers/services/mongodbatlas.py
  • src/is_it_down/checkers/services/namecheap.py
  • src/is_it_down/checkers/services/quickbooks.py
  • src/is_it_down/checkers/services/replit.py
  • src/is_it_down/checkers/services/resend.py
  • src/is_it_down/checkers/services/todoist.py
  • src/is_it_down/checkers/services/vultr.py
  • src/is_it_down/checkers/services/wise.py
  • src/is_it_down/checkers/services/xero.py

@Strvm Strvm merged commit bf58302 into main Feb 27, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant