Pulse Quick Start

Create your first uptime monitor in under 5 minutes.

All endpoints require a Bearer token. See Authentication.

Create a monitor

curl -X POST "https://api.solenoid.systems/v1/pulse" \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://api.example.com/health",
    "interval": 60000,
    "webhook_url": "https://your-app.com/webhooks/pulse"
  }'

Response (201):

{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "url": "https://api.example.com/health",
  "method": "GET",
  "interval": 60000,
  "timeout": 10000,
  "consecutive_threshold": 1,
  "cooldown_ms": 300000,
  "active": true,
  "status": "unknown",
  "webhook_url": "https://your-app.com/webhooks/pulse",
  "notify_recovery": false,
  "created_at": 1234567890,
  "updated_at": 1234567890
}

Save the id — you need it for all subsequent operations.

Check status

curl "https://api.solenoid.systems/v1/pulse/550e8400-e29b-41d4-a716-446655440000" \
  -H "Authorization: Bearer YOUR_KEY"
{
  "monitor_id": "550e8400-e29b-41d4-a716-446655440000",
  "status": "up",
  "latency_ms": 142,
  "last_checked_at": 1234567890,
  "consecutive_failures": 0
}

List and filter monitors

List all monitors:

curl "https://api.solenoid.systems/v1/pulse" \
  -H "Authorization: Bearer YOUR_KEY"

Filter to only failing monitors:

curl "https://api.solenoid.systems/v1/pulse?status=down" \
  -H "Authorization: Bearer YOUR_KEY"

Trigger a manual check

Run an immediate check without waiting for the schedule:

curl -X POST "https://api.solenoid.systems/v1/pulse/550e8400-e29b-41d4-a716-446655440000/check" \
  -H "Authorization: Bearer YOUR_KEY"

Manual checks do not trigger webhook notifications.

Update a monitor

Send only the fields you want to change:

curl -X PUT "https://api.solenoid.systems/v1/pulse/550e8400-e29b-41d4-a716-446655440000" \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"interval": 300000, "notify_recovery": true}'

Delete a monitor

curl -X DELETE "https://api.solenoid.systems/v1/pulse/550e8400-e29b-41d4-a716-446655440000" \
  -H "Authorization: Bearer YOUR_KEY"

JavaScript example

const API = "https://api.solenoid.systems/v1/pulse";
const headers = {
  Authorization: "Bearer YOUR_KEY",
  "Content-Type": "application/json",
};

const monitor = await fetch(API, {
  method: "POST",
  headers,
  body: JSON.stringify({
    url: "https://api.example.com/health",
    interval: 60000,
    webhook_url: "https://your-app.com/webhooks/pulse",
  }),
}).then((r) => r.json());

const status = await fetch(`${API}/${monitor.id}`, { headers }).then((r) =>
  r.json()
);

const down = await fetch(`${API}?status=down`, { headers }).then((r) =>
  r.json()
);

Next steps