Any monitoring tool

One API endpoint.
Any monitoring tool.

PingParrot works with any tool that can make an HTTP request — Nagios, Zabbix, Uptime Robot, New Relic, Datadog, custom shell scripts, CI pipelines, or code you write yourself. One POST request and your team is being paged.

Get Your API Key Free View API Docs

Works with any tool that supports webhooks or HTTP

Nagios Zabbix Uptime Robot New Relic Datadog Grafana Prometheus CheckMK LibreNMS Netdata cron jobs CI pipelines custom scripts

The API — simple by design

One endpoint. Five fields. That's it.

POST https://pingparrot.app/api/external/pages
X-Api-Key: YOUR_API_KEY
Content-Type: application/json

{
  "subject":  "Disk usage above 90% on db-prod-01",
  "message":  "Disk /dev/sda1 at 92%. Immediate attention required.",
  "priority": "critical",
  "target":   "oncall",
  "schedule_id": 1
}

Fields

subject
Short title for the page
message
Details — shown in push notification and email body
priority
low · normal · high · critical
target
oncall · group · user
schedule_id
group_id
user_id
ID matching your chosen target type

Response

{
  "success": true,
  "page_id": 42,
  "message": "Page created."
}

201 on success. 422 with validation errors. 401 for invalid API key. All errors include a descriptive message field.

Code examples

Nagios notification command
define command {
    command_name  notify-pingparrot
    command_line  /usr/bin/curl -s -X POST https://pingparrot.app/api/external/pages \
        -H "X-Api-Key: $USER1$" \
        -H "Content-Type: application/json" \
        -d '{"subject":"$NOTIFICATIONTYPE$: $HOSTNAME$ $SERVICEDESC$","message":"$SERVICEOUTPUT$","priority":"critical","target":"oncall","schedule_id":1}'
}
Shell script / cron alert
#!/bin/bash
API_KEY="your_api_key_here"
DISK=$(df -h / | awk 'NR==2{print $5}' | tr -d '%')

if [ "$DISK" -gt 85 ]; then
  curl -s -X POST https://pingparrot.app/api/external/pages \
    -H "X-Api-Key: $API_KEY" \
    -H "Content-Type: application/json" \
    -d "{
      \"subject\": \"Disk usage at ${DISK}% on $(hostname)\",
      \"message\": \"Root filesystem is ${DISK}% full. Investigate immediately.\",
      \"priority\": \"high\",
      \"target\": \"oncall\",
      \"schedule_id\": 1
    }"
fi
Python (requests)
import requests

def page_oncall(subject, message, priority="high", schedule_id=1):
    resp = requests.post(
        "https://pingparrot.app/api/external/pages",
        headers={"X-Api-Key": "YOUR_API_KEY"},
        json={
            "subject": subject,
            "message": message,
            "priority": priority,
            "target": "oncall",
            "schedule_id": schedule_id,
        },
        timeout=10,
    )
    resp.raise_for_status()
    return resp.json()

Connect your monitoring stack today

Free for up to 3 pagers. First call can be under a minute away.

Grafana Integration → vs PagerDuty → vs OpsGenie → Prometheus Integration → Outgoing Webhook Docs →