API Reference v2
Uptime monitoring without compromises
Secure Access & API Keys
All API v2 requests require a valid Bearer token attached to the Authorization header. Generate keys from your StatusPulse dashboard under Settings > Integrations > API Access.
Tokens are scoped to specific workspaces. Standard workspace keys support read/write operations on monitors and alerts, while enterprise keys unlock bulk configuration and audit log endpoints. Never expose keys in client-side code or public repositories. Rotate keys every 90 days to maintain compliance with SOC 2 Type II standards.
Authorization: Bearer sk_live_8f3a9c2d1e4b5f6a7c8d9e0f1a2b3c4d
Monitor Management
POST /v2/monitors
Create a new uptime monitor. Requires target URL, check interval (30–300 seconds), and expected HTTP status codes. Returns a monitor object with a unique UUID and initial health state.
GET /v2/monitors/:id
Retrieve detailed configuration and historical performance metrics for a specific monitor. Includes SSL certificate expiry, DNS resolution times, and geographic probe results.
PUT /v2/monitors/:id
Update monitor parameters. Supports partial JSON payloads. Changing the check interval triggers a background recalculation of SLA thresholds without downtime.
DELETE /v2/monitors/:id
Permanently remove a monitor and its associated alert rules. Historical data is retained for 180 days before archival. Returns 204 No Content on success.
Request Samples & Data Models
Interact with the StatusPulse infrastructure using standard HTTP clients. The API expects JSON payloads and returns structured responses with consistent envelope formatting.
cURL:
curl -X POST https://api.statuspulse.io/v2/monitors \
-H "Authorization: Bearer sk_live_8f3a9c2d1e4b5f6a7c8d9e0f1a2b3c4d" \
-H "Content-Type: application/json" \
-d '{"url": "https://checkout.acme-payments.com", "interval": 60, "expected_status": [200, 201], "tags": ["production", "payments"]}'
Python (requests):
import requests
headers = {"Authorization": "Bearer sk_live_8f3a9c2d1e4b5f6a7c8d9e0f1a2b3c4d"}
payload = {
"url": "https://checkout.acme-payments.com",
"interval": 60,
"expected_status": [200, 201],
"tags": ["production", "payments"]
}
response = requests.post("https://api.statuspulse.io/v2/monitors", headers=headers, json=payload)
print(response.json())
Monitor Object Schema: uuid (string), url (string), interval (integer, seconds), expected_status (array), tags (array), status (enum: active, paused, failed), created_at (ISO 8601), sla_30d (float, percentage)
Throttling & Quotas
StatusPulse enforces tiered rate limits to ensure consistent probe delivery and dashboard responsiveness across all workspaces.
Standard plans allow 120 requests per minute per API key. Enterprise plans scale to 600 requests per minute with dedicated routing. Exceeding limits triggers a 429 Too Many Requests response with a Retry-After header specifying seconds until quota refresh. Bulk monitor creation should be spaced with 500ms delays to avoid triggering adaptive throttling. Monitor deletion and configuration updates count toward the same window but are exempt from background job quotas.
Track your current usage via the X-RateLimit-Remaining and X-RateLimit-Reset response headers. Implement exponential backoff with jitter for resilient integration workflows.