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