Documentation
Complete guide to setting up website monitoring with PingZen. API documentation, code examples, and best practices.
Authentication
All API requests require authentication. You can use either a personal API key (recommended for integrations) or a JWT token.
Recommended API Key (Recommended)
Create a personal API key from your profile menu. Use the X-API-Key header:
curl -H "X-API-Key: YOUR_API_KEY" \
https://pingzen.dev/api/v1/monitorsTo create an API key: Click on your profile → API Keys → Create New Key

JWT Token
For web applications, you can use JWT tokens from the /auth/login endpoint:
curl -H "Authorization: Bearer YOUR_JWT_TOKEN" \
https://pingzen.dev/api/v1/monitorsEndpoints
Complete list of all available API endpoints
Request Examples
Detailed cURL examples
List all monitors
curl -H "X-API-Key: YOUR_API_KEY" \
https://pingzen.dev/api/v1/monitors?workspace_id=1Create a new monitor
curl -X POST https://pingzen.dev/api/v1/monitors \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "My Site", "url": "https://example.com", "protocol": "https", "workspace_id": 1, "interval_seconds": 60}'Get monitor details
curl -H "X-API-Key: YOUR_API_KEY" \
https://pingzen.dev/api/v1/monitors/123Update monitor configuration
curl -X PUT https://pingzen.dev/api/v1/monitors/123 \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"interval_seconds": 30, "name": "Updated Name"}'Delete a monitor
curl -X DELETE https://pingzen.dev/api/v1/monitors/123 \
-H "X-API-Key: YOUR_API_KEY"Code Examples
🐍 Python Example
import requests
# Get your API key from: Profile → API Keys → Create New Key
PINGZEN_API_KEY = "YOUR_API_KEY"
BASE_URL = "https://pingzen.dev/api/v1"
headers = {
"X-API-Key": PINGZEN_API_KEY,
"Content-Type": "application/json"
}
# Create a monitor
monitor_data = {
"name": "My Website",
"url": "https://example.com",
"protocol": "https",
"interval": 60 # seconds
}
response = requests.post(
f"{BASE_URL}/monitors",
headers=headers,
json=monitor_data
)
print(response.json())
# Get all monitors
monitors = requests.get(
f"{BASE_URL}/monitors",
headers=headers
).json()
for monitor in monitors:
print(f"{monitor['name']}: {monitor['status']}")⚡ JavaScript Example
// Get your API key from: Profile → API Keys → Create New Key
const PINGZEN_API_KEY = 'pz_abc12345_...';
const BASE_URL = 'https://pingzen.dev/api/v1';
const headers = {
'X-API-Key': PINGZEN_API_KEY,
'Content-Type': 'application/json'
};
// Create a monitor
async function createMonitor() {
const response = await fetch(`${BASE_URL}/monitors`, {
method: 'POST',
headers: headers,
body: JSON.stringify({
name: 'My Website',
url: 'https://example.com',
protocol: 'https',
interval: 60
})
});
const data = await response.json();
console.log(data);
}
// Get all monitors
async function getMonitors() {
const response = await fetch(`${BASE_URL}/monitors`, {
headers: headers
});
const monitors = await response.json();
monitors.forEach(monitor => {
console.log(`${monitor.name}: ${monitor.status}`);
});
}
createMonitor();
getMonitors();OpenAPI & AI Agents
PingZen provides machine-readable specifications for AI agent integration and automation tools.
Rate Limits
| Plan | Requests/Hour | Burst Limit |
|---|---|---|
| Free | 100/hour | 10/minute |
Common Questions
What protocols can I monitor?
PingZen supports 19 protocols: HTTP/HTTPS, WebSocket (WS/WSS), TCP, UDP, ICMP Ping, gRPC, DNS, WHOIS, SSL certificates, Email (SMTP/IMAP/POP3), FTP/FTPS, DNSBL, and SafeBrowsing. You can monitor websites, APIs, servers, databases, and any network service.
How fast can I get alerts?
Telegram alerts are delivered within 1-2 seconds of detection. Slack and Discord notifications arrive almost instantly. You can configure multiple alert channels for redundancy.
Can I organize monitors by project?
Yes! PingZen supports workspaces, which let you organize monitors by project, environment, or team. Each workspace can have its own alert configurations and team members.
Is there an API for automation?
Absolutely. PingZen provides a full REST API with OpenAPI documentation. You can create, update, and delete monitors programmatically.
How do status pages work?
Status pages are public, branded pages showing your services' uptime. You can use a custom domain (status.yourdomain.com), display real-time status, and allow customers to subscribe for updates.
What happens if I reach my monitor limit?
We'll notify you when approaching your limit. You can pause some monitors or contact us for increased capacity. We never stop monitoring without warning, ensuring your critical services stay protected.
Ready to stop missing downtime?
Join thousands of teams who trust PingZen. Setup takes 30 seconds.