Uptime Monitoring for Postman API Testing Infrastructure 2026
Postman is the industry-standard tool for API development and testing. Your team builds collections, writes test scripts, and runs automated checks. But Postman's job is to test your APIs — it doesn't monitor whether they're up between test runs.
By the end of this guide you'll have external uptime monitoring on the endpoints your Postman collections test, heartbeat monitoring for Newman CI runs, and instant alerts when services go down — all on the free tier.
The gap Postman doesn't cover
Postman runs tests when you trigger them. Uptime monitoring runs continuously.
Scheduled Postman Monitor vs. external uptime monitoring:
| | Postman Monitors | Vigilmon | |---|---|---| | Runs from | US regions only (free) | Multiple global regions | | Alerts on | Test failures | ANY non-2xx or timeout | | Background jobs | No | Yes (heartbeat monitors) | | Status page | No | Yes | | Free tier | 1000 calls/month | Unlimited monitors |
Postman Monitors are great for functional test assertions. External uptime monitoring catches infrastructure failures even before your test suite runs.
The two tools complement each other — run both.
Step 1: Add a health endpoint to the APIs your collections test
Before pointing an external monitor at your API, add a dedicated health endpoint that reflects real dependency status. This is what Vigilmon will probe continuously.
Node.js / Express example:
// routes/health.js
const express = require('express');
const { Pool } = require('pg');
const router = express.Router();
const pool = new Pool({ connectionString: process.env.DATABASE_URL });
router.get('/health', async (req, res) => {
const checks = {};
try {
await pool.query('SELECT 1');
checks.database = { status: 'ok' };
} catch (err) {
checks.database = { status: 'error', detail: err.message };
}
const allOk = Object.values(checks).every(c => c.status === 'ok');
res.status(allOk ? 200 : 503).json({
status: allOk ? 'ok' : 'degraded',
checks,
});
});
module.exports = router;
Test it with Postman itself:
Create a simple Postman request to GET /health and add a test script:
pm.test("Service is healthy", function () {
pm.response.to.have.status(200);
const body = pm.response.json();
pm.expect(body.status).to.eql("ok");
});
Add this to your collection and it doubles as both a functional test and a readiness check.
Step 2: Set up external HTTP monitoring with Vigilmon
With your health endpoint live, point Vigilmon at it:
- Sign up at vigilmon.online — free tier, no credit card
- Click New Monitor → HTTP
- Enter
https://yourdomain.com/health - Set the check interval (5 minutes on free tier)
- Save
For each environment your Postman collections test against, create a separate monitor:
| Environment | Monitor URL | What it catches |
|---|---|---|
| Production | https://api.yourdomain.com/health | Prod outages |
| Staging | https://staging.api.yourdomain.com/health | Broken deploys before promotion |
| Dev | https://dev.api.yourdomain.com/health | Broken dev environment blocking the team |
This gives you visibility into every environment without running Postman collections continuously.
Step 3: Heartbeat monitoring for Newman CI runs
Newman is the Postman CLI runner used in CI/CD pipelines. If a Newman run fails silently — an environment variable is missing, a runner exits non-zero without noise — you want to know.
The heartbeat pattern: ping a unique URL after each successful Newman run. If Vigilmon doesn't receive a ping within the expected window, it fires an alert.
In Vigilmon:
- Click New Monitor → Heartbeat
- Set the expected interval (e.g. 26 hours for a daily pipeline — add a buffer)
- Copy the unique ping URL
Add the heartbeat ping to your CI pipeline:
GitHub Actions:
# .github/workflows/api-tests.yml
name: API Tests
on:
schedule:
- cron: '0 6 * * *' # Daily at 6 AM UTC
push:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Newman
run: npm install -g newman newman-reporter-htmlextra
- name: Run Postman Collection
run: |
newman run postman/collection.json \
--environment postman/env.production.json \
--reporters cli,htmlextra \
--reporter-htmlextra-export newman-report.html
- name: Ping heartbeat on success
if: success()
run: curl -s "${{ secrets.NEWMAN_HEARTBEAT_URL }}"
GitLab CI:
# .gitlab-ci.yml
newman-tests:
stage: test
image: postman/newman
script:
- newman run postman/collection.json
--environment postman/env.production.json
after_script:
- |
if [ "$CI_JOB_STATUS" == "success" ]; then
curl -s "$NEWMAN_HEARTBEAT_URL"
fi
rules:
- if: '$CI_PIPELINE_SOURCE == "schedule"'
Add NEWMAN_HEARTBEAT_URL to your CI secrets. Now if your Newman pipeline stops running — because a cron is misconfigured, a runner is down, or tests start failing — Vigilmon will alert you.
Step 4: Monitor Postman's own API if you depend on it
Many teams use the Postman API in automation scripts — syncing collections, triggering monitors, managing environments. If your workflow depends on the Postman API, monitor it:
# In Vigilmon: New Monitor → HTTP
# URL: https://api.getpostman.com/me
# Add header: X-Api-Key: your-postman-api-key
Or monitor Postman Echo (often used in collection demos and training):
# URL: https://postman-echo.com/get
Add this to your monitors so you know if Postman's platform itself is causing test failures, not your own API.
Step 5: Webhook alerts to Slack or Discord
Configure alert delivery in Vigilmon:
For Slack:
- Create an incoming webhook in your workspace
- In Vigilmon go to Notifications → New Channel → Slack
- Paste your webhook URL
- Enable it on your monitors
For Discord:
- Go to Server Settings → Integrations → Webhooks → New Webhook
- Copy the URL
- In Vigilmon go to Notifications → New Channel → Discord
- Paste and enable
Post alerts to the same channel where your Newman CI reports go — your team sees the failure and the monitoring alert together.
Step 6: Add a public status page
When your API is down and your team is investigating, a status page tells users what's happening without flooding your support queue.
- Go to Status Pages → New Status Page
- Name it (e.g. "Acme API Status")
- Select your production monitors
- Save and link from your API docs
Add the status page URL to your API's 503 responses:
app.use((err, req, res, next) => {
res.status(503).json({
error: 'Service temporarily unavailable',
status: 'https://status.yourdomain.com',
});
});
What you've built
| What | How |
|---|---|
| Health endpoints | Per-environment /health with dependency checks |
| External uptime monitoring | Vigilmon HTTP monitors (multi-region, continuous) |
| Newman CI heartbeats | Ping on success; missed ping triggers alert |
| Postman API monitoring | Vigilmon watching getpostman.com if you depend on it |
| Instant alerts | Slack/Discord webhook notifications |
| Public status page | Vigilmon status page linked from API docs |
Postman tests your API behavior. Vigilmon monitors whether it's up. Together they give you complete coverage — functional correctness and continuous availability.
Get started free at vigilmon.online — your first monitor is running in under a minute.