API Reference | SystemPulse Docs
Real-time Infrastructure Monitoring
Base URL & Authentication
All API requests must be routed through our primary gateway. Secure access using your organization's API key in the `Authorization` header.
Base URL: https://api.systempulse.io/v2
Authentication: Bearer token via header Authorization: Bearer <YOUR_API_KEY>. Keys are scoped to specific clusters (e.g., us-east-1-prod, eu-west-2-staging) and can be rotated without service interruption via the dashboard. All endpoints require HTTPS and validate TLS 1.2+ connections.
Endpoints, Rate Limits & Pagination
SystemPulse exposes a comprehensive REST interface for querying metrics, managing alert rules, and retrieving incident timelines. Standard rate limits are enforced at 120 requests per minute per API key.
Pagination follows the cursor-based model. Responses include a next_cursor field when additional data is available. Use the ?limit=100&cursor=abc123 query parameters to iterate through large datasets like log streams or historical CPU utilization records. Exceeding the rate limit returns 429 Too Many Requests with a Retry-After header. Bulk operations cap at 500 resources per payload.
GET /v2/hosts
Retrieve registered infrastructure nodes with filtering by region, status, and custom tags. Supports bulk export in CSV or JSON formats.
POST /v2/alerts/rules
Create or update threshold-based and anomaly-detection alert configurations. Returns rule ID and evaluation schedule.
GET /v2/incidents/{id}/timeline
Fetch chronological event logs, severity transitions, and resolution notes for active or archived incidents.
Code Examples
Integrate monitoring data into your CI/CD pipelines, custom dashboards, or incident response workflows using our officially supported language bindings.
Python (requests)
import requests
url = "https://api.systempulse.io/v2/hosts"
headers = {"Authorization": "Bearer sp_live_8f9a2c1d4e5b6789"}
params = {"limit": 50, "status": "active"}
response = requests.get(url, headers=headers, params=params)
for host in response.json()["data"]:
print(f"{host['hostname']}: {host['cpu_usage']}%")
Node.js (fetch)
const response = await fetch('https://api.systempulse.io/v2/hosts', {
headers: { 'Authorization': 'Bearer sp_live_8f9a2c1d4e5b6789' },
});
const data = await response.json();
console.log(`${data.data.length} nodes retrieved. Next cursor: ${data.next_cursor}`);
Go (net/http)
req, _ := http.NewRequest("GET", "https://api.systempulse.io/v2/hosts", nil)
req