Monitor from your terminal. Automate it in CI.

Install the official UptimeRobot CLI and manage monitors, incidents, status pages, maintenance windows, and alert contacts from your shell, your CI pipeline, or the AI agent you already run.

Ping monitoring hero
GitHub logo
Slack logo
Gitlab logo
n8n logo
Canva logo
 OVHcloud logo
Akamai logo
rmit-logo
Atlassian logo
Intel logo
Electronic Arts (EA) logo
IBM logo
Adyen logo
Stanford University logo
BBC logo
Moody's logo
Siemens logo

From install to monitoring in 60 seconds.

To get started, install Node.js 22.12 or newer, grab an API key from your dashboard integrations page, run four commands, and your checkout endpoint will be up and running in under a minute.
# Install, log in, create a monitor, see it running.
npm install --global @uptimerobot/cli

uptimerobot auth login
? UptimeRobot API key ********************  Saved to your system keychain.

uptimerobot monitors create http \
  --name checkout-api \
  --url https://checkout.example.com \
  --interval 60 \
  --timeout 30

uptimerobot monitors list

ID         STATUS  NAME           TYPE  TARGET                          INTERVAL  IN STATE  TAGS
797054213  UP      checkout-api   HTTP  https://checkout.example.com    1m        4m        -
797054180  UP      marketing-www  HTTP  https://example.com             5m        21d       prod

Who is it for.

Use API to manage status pages

Terminal developers

You already have a shell open. Checking what's down, adding a monitor for the service you just shipped, or reading an incident stops costing you a trip to the browser.

Invite anyone to collaborate

CI and platform engineers

Monitoring becomes something you commit, not something someone remembers afterward. API key auth, real exit codes, and JSON output let a deploy job create its own checks and fail the build when it can't.

Custom domain

Developers running AI agents

Your agent gets structured output by default, help text with accepted values on every command, and guardrails that stop it deleting a monitor it only meant to read.

Technical highlights.

Generated from the spec

The command tree is built from UptimeRobot's published API v3 contract, not written by hand, so it moves when the API moves.

Output that fits the reader

Easy to read tables when you're interactive. Normalized JSON, JSONL, plain text, or the untouched API response when you're not.

Real exit codes

0 through 7, including a distinct code for a bulk job where some items failed. Branch on the code instead of parsing text.

Secrets stay out of your logs

Credential fields print as [REDACTED] in every output format, with a note on stderr naming what was hidden.

Writes you can check first

--dry-run validates locally with no key and no network call.  --confirm gates every delete. Mutations never auto-retry.

Runs where you do

Linux, macOS, and Windows on Node.js 22.12 or newer. Installs with npm or pnpm. Apache 2.0, source on GitHub.

The whole API surface, as commands.

Generated from the OpenAPI spec, the command tree includes the full API v3 command set. Use over 70 commands across 11 groups:

  • monitors, create, list, get, update, pause, start, delete, reset, plus bulk pause, start, and update
  • monitors create, a dedicated command per type: http, keyword, ping, port, dns, udp, api, heartbeat, and visual-comparison
  • monitors stats, uptime and response time, overall or by region
  • incidents, list, get, alerts, activity log, and comments
  • status-pages, including announcements, pin and unpin
  • maintenance-windowsmonitor-groupsalert-contactsintegrationstagsuser, and auth

Start with uptimerobot --help, then run --help again on any command group or command. Each level prints the required fields, accepted values, defaults, constraints, and examples straight from the API contract:

uptimerobot --help
uptimerobot monitors --help
uptimerobot monitors create --help
uptimerobot monitors create keyword --help
uptimerobot incidents comments create --help

Built for CI and automation.

The CLI automatically picks the best output format for the job. Run a command by hand and you get a readable table. Pipe it, redirect it, or run it in CI and you get normalized JSON. Same command, no flags needed.

uptimerobot monitors list                    # table
uptimerobot monitors list | jq '.items[]'    # JSON, automatically
uptimerobot monitors list --format jsonl     # one resource per line
uptimerobot monitors list --format plain     # tab separated, no headers
uptimerobot monitors list --raw              # the untouched API response

For CI, containers, and anywhere you don't want a stored credential, pass the key through the environment and skip the login step:

# .github/workflows/deploy.yml
- name: Monitor the new endpoint
  env:
    UPTIMEROBOT_API_KEY: ${{ secrets.UPTIMEROBOT_API_KEY }}
  run: |
    npx @uptimerobot/cli monitors create http \
      --name "checkout-api (${{ github.ref_name }})" \
      --url https://checkout.example.com \
      --interval 60 \
      --timeout 30 \
      --json

Exit codes are real, so your pipeline can branch on them instead of parsing text. 0 for success, 2 for invalid input, 4 for unauthenticated, 5 for forbidden, 6 for not found, 7 for rate limited, and 3 for a bulk operation where some items failed but others went through.

Credential-like fields in a response, such as an HTTP monitor's password, print as [REDACTED] in every output format, with a note on stderr identifying the hidden fields. Your CI logs stay clean by default.

Safe to run under an agent.

AI agents don't stop to read warnings, so the CLI includes built-in guardrails:

  • Discovery is -help. Every level of the tree describes itself, with required fields, accepted values, defaults, and constraints taken from the API contract, so an agent can work out what a command takes before it runs it.
  • Destructive commands stop and ask. Non-interactive processes, including AI agents, must pass --confirm explicitly, so a delete never happens by accident.
  • -dry-run compiles and validates a write without authenticating or touching your account, then prints the exact method, path, and body it would have sent.
  • Only GET and HEAD are retried. A POST that times out won’t silently create two monitors.
  • Agents get JSON automatically, so there’s no table for them to misparse.
# Find out what exists and what it takes
uptimerobot --help
uptimerobot monitors create keyword --help

# Validate the request locally, no API key, no network call
uptimerobot monitors schema keyword
uptimerobot monitors schema keyword --example
uptimerobot monitors create http --body @monitor.json --dry-run

# Explicit confirmation, the only way an agent can delete
uptimerobot monitors delete 797054213 --confirm --json

Give your coding agent the UptimeRobot skills.

One command installs UptimeRobot's 24 AI skills into the coding agent you already use. You can pick which ones you want and where they go:

uptimerobot skills install

Your agent works from the real command contract. The CLI shows the exact external command, asks for confirmation before running it, and the skills are open source at github.com/uptimerobot/ai.

CLI, MCP, Terraform, or the API.

Four ways into the same account, each built for a different job. Many teams end up using more than one:

Surface

Reach for it when

What it looks like

CLI

You want repeatability. A command you can script, commit, and run the same way every time, by hand or in a pipeline.

uptimerobot monitors create http --name checkout-api

MCP

You want conversation. You ask a question in plain language and your assistant answers from your account.

"Which monitors went down this week, and for how long?"

Terraform

Your monitoring is part of a declared infrastructure state that gets planned, applied, and drift-checked with everything else.

resource "uptimerobot_monitor" "checkout" { ... }

API v3

You are building something of your own, in a language or a runtime the CLI does not fit into.

POST /v3/monitors

See it in action.

Install, log in, create your first monitor, and see how the CLI behaves inside a script. Just six minutes from start to finish.

How to install.

  1. Check your Node version. The CLI needs Node.js 22.12 or newer. Run node --version.
  2. Install from npm. npm install --global @uptimerobot/cli, then confirm it landed with uptimerobot --version.
  3. Create an API key. Go to Integrations in your dashboard and create a Main API key. A read-only key works for listing and reading, but you need the main key to create, update, or delete anything.
  4. Log in. uptimerobot auth login prompts for the key with masked input and stores it in your macOS Keychain, Windows Credential Manager, or Linux keyring, so it never lands in your shell history. In CI, set UPTIMEROBOT_API_KEY instead and skip this step.
  5. Run something. uptimerobot --help to see what's there, then uptimerobot monitors list.
This is the first step. Automatic setup and deeper agent integration are on the way.

Ready to install?

One command, and your monitoring is scriptable. The CLI is free, open source, and works with every UptimeRobot account, including our free plan.

Build trust with
 public status pages

Frequently asked questions.

Anything the UptimeRobot API v3 does. Create and manage monitors of all nine types, read and comment on incidents, pull uptime and response-time stats overall or by region, run status pages and their announcements, schedule maintenance windows, and manage monitor groups, alert contacts, integrations, and tags.

No. The CLI is free and open source, and it works with both free and paid UptimeRobot accounts. Your plan sets the limits it runs against, how many monitors you can have and how often they check. It does not change what the CLI can do. The free plan covers 50 monitors at 5-minute checks.

Linux, macOS, and Windows. It runs on Node.js 22.12 or newer, and installs with npm or pnpm.

In your operating system's secure credential store: macOS Keychain, Windows Credential Manager, or an available Linux keyring. The login prompt masks the key so it never enters your shell history. On minimal or headless Linux with no keyring available, it falls back to a file at ~/.config/uptimerobot/credentials.json with owner-only permissions.

Yes. Set UPTIMEROBOT_API_KEY in the environment and skip the login step entirely. The CLI resolves credentials from --api-key first, then the environment variable, then the stored key.

Yes, for reading. Listing monitors, pulling stats, and inspecting incidents all work with a read-only key. Creating, updating, or deleting needs a Main API key.

The same way you do, with --help. It works at every level of the tree, from uptimerobot --help down to a single command, and it prints the required fields, accepted values, defaults, and constraints from the API contract. For monitor creation there is also uptimerobot monitors schema <type>, and --example on top of it for a filled-in request body.

The command tree is generated from UptimeRobot's published OpenAPI contract rather than written by hand, so new API fields and endpoints come through the generator instead of waiting on a manual update.

MCP is for conversation, you ask your assistant a question in plain language and it answers from your account. The CLI is for repeatability, you write a command, commit it, and it runs the same way every time. Different jobs, and they work fine side by side.

Yes. It's built and maintained by UptimeRobot alongside the API, and it's open source under Apache 2.0 at github.com/uptimerobot/uptimerobot-cli. If you have been using a community-built wrapper, this is the one that tracks the API contract.

Open an issue at github.com/uptimerobot/uptimerobot-cli/issues, or email support@uptimerobot.com if you would rather not use GitHub. Either way, include the CLI version, the command, the output mode, and the error. Never include your API key.