Uptime monitoring REST API to automate adding new client sites
Every new support client means another site, another health URL, and another evening clicking "add monitor" in a dashboard. A REST API for uptime monitoring lets you onboard with a script in minutes instead of manual UI work. This guide compares create-monitor APIs across vendors, documents a freelancer onboarding SOP, and wires StillOnline REST plus MCP on Pro.
Quick answer
Build a client ledger (name, prod URL, slug), verify health from outside your laptop, then one POST /v1/projects creates the project and first check on StillOnline Pro ($9/mo). UptimeRobot v3 also supports create-monitor via API, but Free bans commercial client work. MCP in Cursor repeats the same calls after deploy. Offboarding: disable checks and hand off the public status URL.
REST API means your script sends JSON to the vendor and gets "created" or "error" back — like ordering online instead of calling a manager. Uptime monitoring pings the client site on a schedule. Client onboarding here is the repeatable path from signed contract to live monitor plus status link.
Portfolio math for 10–20 sites: freelancer uptime guide.
Map the onboarding workflow for a new client
Before you call any API, lock down input fields. Without them the script creates "project #47" with no client name and you lose the link to the invoice.
Onboarding chain: contract signed → health URL live → external curl check → POST project + check → save project_id in ledger → email PM the status URL → alert to your Telegram.
Do: use one email template and one ledger for all clients. Do not: create a monitor before DNS and TLS are stable on prod — you get red status on launch day without a real outage.
- Collect client_name, prod_url (full HTTPS), project_slug (latin, no spaces), alert_channel.
- Confirm health URL returns 200 from mobile internet, not only your laptop Wi‑Fi.
- Call API create (comparison below) or MCP checks.create from Cursor.
- Save vendor_project_id and public status slug in Notion, Airtable, or CSV ledger.
- Send the client template: "Monitoring is live — status: https://stillonline.tech/s/your-slug".
- Add $9–29/mo to the retainer as "monitoring and status page".
Compare create-monitor API: UptimeRobot, Better Stack, StillOnline
Vendors name entities differently — monitor, check, project — but the freelancer question is the same: can one API call create monitoring plus a client-facing status URL?
| Criterion | UptimeRobot v3 | Better Stack | StillOnline |
|---|---|---|---|
| Create via API | Yes — monitors + status pages | Yes — monitors; status page separate module | POST /v1/projects (project + first check) |
| API on Free | Yes, but Free bans client work | Limited free tier | No API key on Free; public status JSON without key |
| Freelancer model | Monitors in one account (Solo $9) | Monitors + per-page status add-ons | One project = one client + auto status page |
| Typical API automation price | Solo $9/mo, Team $33/mo | Free + add-ons; status ~$12/page | Pro $9/mo (10 projects), Ultimate $29/mo (100) |
| Idempotency | Find monitor by URL in list response | List + filter similarly | Check slug in ledger before POST |
Do: pick a vendor where one "client" entity equals one project with a status URL if you sell PM transparency. Do not: count monitor price only — on 15 clients, Better Stack status page add-ons often cost more than StillOnline Ultimate flat.
Verdict: For solo freelancers with API onboarding and flat $9–29 on the portfolio, StillOnline Pro/Ultimate is simpler: POST creates check and status page together. UptimeRobot v3 fits if you already run Solo and only need monitors without a project per client. Better Stack if the team already lives in their incident flow.
Reporting pulls after onboarding: REST API automation reporting.
Set up StillOnline REST and MCP on Pro to add sites automatically
On StillOnline Pro ($9/mo) and Ultimate ($29/mo) you get an API key sk_live_… in API settings. Base URL: api.stillonline.tech/v1. One POST /projects creates the project, first HTTP check, and public status page — the same outcome as the UI wizard, from a script.
Request body logic: set client name, status page slug, check url, method GET, expected code 200. Response returns project id — store it in the ledger. Add a second URL on the same client with POST /projects/{id}/checks. Full reference: REST API uptime and status.
MCP (Model Context Protocol) wraps the same API. After a client deploy in Cursor you can prompt: "create a check for acme-corp" and the agent calls checks.create without manual curl. Setup: MCP uptime in Cursor. For CI/CD use GitHub Actions + API instead of MCP.
Do: store the API key in secrets (GitHub Secrets, 1Password), never in client chat. Do not: confuse GET /public/status (reads stored probes) with creating a monitor — GET does not ping the client site on each visitor request.
Idempotent offboarding and client handoff
Idempotency means rerunning the script does not spawn duplicates. Before POST, check the ledger by slug or GET list projects and compare URLs.
- Onboarding: POST project only if slug is free.
- Contract pause: disable check via API or UI; do not delete history immediately.
- Offboarding: export uptime screenshot for the month, hand off status URL plus "subscribe to updates" instructions.
- Full handoff: invite the client to their own StillOnline login or create the project on their account.
Do: close incidents in the StillOnline UI before handoff — API v1 creates incidents but closing is UI-only today. Do not: leave alerts on your Telegram after the client leaves — you will wake up for someone else's downtime.
Agency playbook for multiple clients: multiple status pages for agencies.
Document the agency SOP on one Notion page
An SOP (standard operating procedure) saves you when a junior or subcontractor joins mid-portfolio.
- Intake form template: URL, PM contact, response SLA.
- Pre-flight health: 200 from outside, response time under ~2 seconds.
- API create + ledger row (date, project_id, status URL).
- Alert test: briefly break health or use staging 503.
- Welcome pack with status page link.
At client #11 on StillOnline Pro (10-project cap) move to Ultimate $29/mo or a second account — see agency multiple status pages. Start without a card: stillonline.tech/app. Pricing: stillonline.tech/#pricing.
What to do next
Build the ledger, write one POST template, test on a staging client, connect MCP in Cursor on Pro. After the third automated onboarding you recover the setup hour.
- Copy the six-step workflow into your Notion SOP.
- Prototype POST /v1/projects on a test slug.
- Wire Telegram or email alerts once per project.
- Add the retainer line before client #4.
- Plan Ultimate at client #11.
Related guides
- Freelancer uptime monitoring for 10–20 sites — portfolio math and retainer billing.
- REST API automation reporting — pull endpoints after monitors exist.
- Multiple status pages for agencies — one project per client and offboarding.
- MCP uptime monitoring in Cursor — checks.create after deploy.
- REST API for service uptime and status — public JSON vs private checks, curl examples.
- GitHub Actions uptime check API — CI gates instead of IDE MCP.
FAQ
Does StillOnline Free include an API key for client onboarding?
No create key on Free. One client means manual UI wizard or upgrade to Pro ($9/mo) for REST and MCP. Public JSON status works without a key when the page is public.
How is REST different from MCP for a freelancer?
Can I create an UptimeRobot monitor from a script on Free?
The API is technically available on Free, but commercial client work is prohibited. Use Solo $9/mo or StillOnline Pro for client onboarding.
How do I avoid duplicate projects when the script runs twice?
Keep a ledger slug → project_id. Before POST, list projects and search for the same URL. If the project exists, skip create or update the check.
What should I hand the client besides the status URL?
Short email: what green/red means, where to write during an incident, that the page updates automatically every five minutes on Free. Attach your retainer SLA link.
Does GET /public/status ping my server on every request?
No. That GET reads stored probe results from StillOnline workers. The client site is checked on a schedule, not when a visitor opens the status page.
When should I move from Pro to Ultimate by client count?
Pro covers 10 projects (10 clients with separate status pages). From client #11, Ultimate at $29/mo gives up to 100 projects flat — often cheaper than two Pro accounts.
Related guides
Freelancer uptime monitoring: 10-20 client sites | StillOnline
Compare UptimeRobot, Hyperping, Better Stack, StillOnline for 10-20 freelance sites. All-in at 10/15/20 clients, Hyperping cap, status URLs, retainer billing.
Uptime REST API: automate reporting in 5 tools | StillOnline
Compare UptimeRobot, Better Stack, Checkly, StatusCake, and StillOnline on REST API reporting: public JSON, private pulls, MCP, and a sample weekly workflow.
Multiple Status Pages for Agencies — Client Uptime | StillOnline
Agencies and studios: one StillOnline account, separate status pages per client SaaS, HTTP checks and Telegram bot alerts. Free vs Pro limits for multi-client ops.
Cursor MCP for uptime monitoring after deploy | StillOnline
Ask Cursor to read StillOnline check status via stillonline-mcp after shipping. Pro API key in MCP config, not chat—setup wizard and deploy workflow.
REST API for service uptime and status | StillOnline
GET public status JSON without a key, or list checks with last_status via Bearer auth — curl examples, rate limits, OPERATIONAL vs paused checks, Pro API key.
GitHub Actions uptime check with StillOnline API | StillOnline
Gate deploys with curl on public status JSON or private checks API. GitHub secrets for sk_live, rate limits, and when probes differ from customer view.