Generate keys in your dashboard under Settings > API Access. Use Bearer token format. Keys are rotated every 90 days for compliance with SOC 2 Type II standards. Read-only keys are prefixed with sp_live_ while write-enabled keys use sp_prod_.
API Reference
Enterprise-grade uptime for distributed systems
Endpoints
Core resources for managing uptime monitors, alert policies, and synthetic checks.
Create a new HTTP, TCP, or DNS monitor. Requires name, type, interval_seconds, and targets array. Returns monitor UUID and initial status.
Update monitor configuration. Supports partial updates for maintenance windows, escalation policies, and TLS certificate tracking thresholds.
Permanently remove a monitor and associated historical data. Purges cached DNS records and cancels active synthetic probes within 60 seconds.
Retrieve real-time health metrics, including last check latency, error rate, and SSL expiration timeline. Supports JSON and CSV response formats.
Authentication
All requests require a valid API key passed via the Authorization header. Keys are scoped to your organization and environment.
curl -X GET https://api.sentinelpulse.io/v2/monitors \ -H "Authorization: Bearer sp_live_8f9a2b1c4d5e6f7g8h9i0j" \ -H "Content-Type: application/json"
Rate Limits
Requests are throttled per API key to ensure platform stability during incident response windows.
Exceeding limits returns a 429 Too Many Requests response with a Retry-After header. Burst allowance is capped at 150 requests within a 10-second window. Enterprise plans support custom limit negotiations via your CSM.
Examples
Implementation patterns for provisioning monitors across your CI/CD pipeline.
Python (requests)
import requests
headers = {"Authorization": "Bearer sp_live_8f9a2b1c4d5e6f7g8h9i0j"}
payload = {
"name": "Production API Gateway",
"type": "http",
"interval_seconds": 30,
"targets": ["https://api.example.com/health"],
"alert_policy": "critical_pagerduty"
}
response = requests.post(
"https://api.sentinelpulse.io/v2/monitors",
json=payload,
headers=headers
)
print(response.json())
Go (net/http)
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
)
func main() {
monitor := map[string]interface{}{
"name": "Database Replica Sync",
"type": "tcp",
"interval_seconds": 15,
"targets": []string{"db-replica.internal:5432"},
}
body, _ := json.Marshal(monitor)
req, _ := http.NewRequest("POST", "https://api.sentinelpulse.io/v2/monitors", bytes.NewBuffer(body))
req.Header.Set("Authorization", "Bearer sp_live_8f9a2b1c4d5e6f7g8h9i0j")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
fmt.Println(resp.Status)
Node.js (fetch)
const createMonitor = async () => {
const response = await fetch('https://api.sentinelpulse.io/v2/monitors', {
method: 'POST',
headers: {
'Authorization': 'Bearer sp_live_8f9a2b1c4d5e6f7g8h9i0j',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'Checkout Microservice',
type: 'http',
interval_seconds: 10