A WordPress plugin that provides a secure REST API endpoint for uptime monitoring tools like Uptime Kuma, UptimeRobot, Pingdom, and more.
A simple HTTP check on your homepage only tells you the server responds β not that WordPress is actually working. This plugin verifies:
- β Database connectivity β MySQL/MariaDB is responding
- β WordPress core β Options table is readable
- β Theme β Active theme exists and loads
- β Homepage rendering (optional) β No PHP errors on the frontend
- Download the latest release
- Go to Plugins > Add New > Upload Plugin
- Upload the zip file and activate
- Download and extract to
/wp-content/plugins/wp-uptime-endpoint/ - Activate in WordPress admin
Go to Settings > WP Uptime Endpoint and:
- Click Generate New Token or enter your own
- Optionally enable Homepage Check
- Copy the configuration for your monitoring tool
define('UPTIHEEN_TOKEN', 'your-64-character-token-here');
define('UPTIHEEN_HOMEPAGE', true); // OptionalGenerate a secure token:
openssl rand -hex 32GET /wp-json/wp-uptime/v1/check
Header (recommended):
X-Healthcheck-Token: your-token
Query parameter (for tools that don't support headers):
?token=your-token
| Status | Body | Meaning |
|---|---|---|
200 |
{"status":"ok"} |
All checks passed |
403 |
{"status":"forbidden"} |
Invalid or missing token |
503 |
{"status":"fail"} |
One or more checks failed |
| Setting | Value |
|---|---|
| Monitor Type | HTTP(s) |
| URL | https://your-site.com/wp-json/wp-uptime/v1/check |
| Method | GET |
| Headers | X-Healthcheck-Token: your-token |
| Expected Status | 200 |
| Setting | Value |
|---|---|
| Monitor Type | HTTP(s) |
| URL | https://your-site.com/wp-json/wp-uptime/v1/check?token=your-token |
Note: UptimeRobot free plan doesn't support custom headers. Pro plans can use headers like Uptime Kuma.
- π Token required β No anonymous access
- β±οΈ Rate limiting β 10 failed attempts/minute per IP
- π‘οΈ Timing-safe comparison β Prevents timing attacks
- π« No sensitive data β Only returns
ok,fail, orforbidden
The healthcheck endpoint generates entries in your server access logs. To exclude it:
location = /wp-json/wp-uptime/v1/check {
access_log off;
try_files $uri $uri/ /index.php?$args;
}SetEnvIf Request_URI "^/wp-json/wp-uptime/v1/check" dontlog
CustomLog /var/log/apache2/access.log combined env=!dontlogShared hosting: Contact your hosting provider to exclude this URL from logging.
- WordPress 5.0+
- PHP 7.4+
GPL-2.0+
Kevin Allioli