Authentication
The PulseOps API uses API keys for authentication. Include your API key in the Authorization header:
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://api.pulseop.net/v1/monitors
Generate API keys in your dashboard under Settings → API Keys.
Rate Limits
API requests are rate-limited based on your plan:
- Starter: 100 requests/minute
- Professional: 500 requests/minute
- Enterprise: Custom limits
Rate limit headers are included in all responses:
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1642584000
Monitors
List Monitors
GET
/v1/monitors
Retrieve all monitors in your account.
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://api.pulseop.net/v1/monitors
Response
{
"data": [
{
"id": "mon_abc123",
"name": "API Health Check",
"url": "https://api.example.com/health",
"type": "http",
"interval": 60,
"status": "up",
"created_at": "2026-01-01T00:00:00Z"
}
],
"pagination": {
"page": 1,
"per_page": 20,
"total": 45
}
}
Create Monitor
POST
/v1/monitors
curl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "API Health Check",
"url": "https://api.example.com/health",
"type": "http",
"interval": 60
}' \
https://api.pulseop.net/v1/monitors
Get Monitor
GET
/v1/monitors/:id
Update Monitor
PUT
/v1/monitors/:id
Delete Monitor
DELETE
/v1/monitors/:id
Incidents
List Incidents
GET
/v1/incidents
Retrieve incidents with optional filters.
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://api.pulseop.net/v1/incidents?status=open"
Query Parameters
status - Filter by status (open, resolved, investigating)
monitor_id - Filter by monitor ID
from - Start date (ISO 8601)
to - End date (ISO 8601)
Notifications
List Notification Channels
GET
/v1/notifications/channels
Create Notification Channel
POST
/v1/notifications/channels
{
"channel": "email",
"recipient": "alerts@example.com",
"config": {
"smtpHost": "smtp.gmail.com",
"smtpPort": 587,
"smtpUser": "user@example.com",
"smtpPassword": "password"
}
}
Status Pages
List Status Pages
GET
/v1/status-pages
Create Status Page
POST
/v1/status-pages
{
"name": "Production Services",
"slug": "production",
"isPublic": true,
"config": {
"monitorIds": ["mon_abc123", "mon_def456"]
}
}
Error Handling
The API uses standard HTTP status codes and returns errors in JSON format:
{
"error": {
"code": "invalid_request",
"message": "The request parameters are invalid",
"details": {
"field": "url",
"issue": "Must be a valid URL"
}
}
}
Status Codes
- 200 - Success
- 201 - Created
- 400 - Bad Request
- 401 - Unauthorized
- 403 - Forbidden
- 404 - Not Found
- 429 - Rate Limit Exceeded
- 500 - Server Error