Getting Started
Installation
Section titled “Installation”npm install @openstatus/sdk-nodenpx jsr add @openstatus/sdk-nodeimport { createOpenStatusClient } from "jsr:@openstatus/sdk-node";bun add @openstatus/sdk-nodeQuick Start
Section titled “Quick Start”import { createOpenStatusClient, Periodicity, Region,} from "@openstatus/sdk-node";
const client = createOpenStatusClient({ apiKey: process.env.OPENSTATUS_API_KEY,});
// Create an HTTP monitorconst { monitor } = await client.monitor.v1.MonitorService.createHTTPMonitor({ monitor: { name: "My API", url: "https://api.example.com/health", periodicity: Periodicity.PERIODICITY_1M, regions: [Region.FLY_AMS, Region.FLY_IAD, Region.FLY_SYD], active: true, },});
console.log(`Monitor created: ${monitor?.id}`);
// List all monitorsconst { httpMonitors, tcpMonitors, dnsMonitors, totalSize } = await client.monitor.v1.MonitorService.listMonitors({});
console.log(`Found ${totalSize} monitors`);Runtime Support
Section titled “Runtime Support”| Runtime | Version | Module Format |
|---|---|---|
| Node.js | 18+ | ESM and CJS |
| Deno | 2+ | ESM (native) |
| Bun | Latest | ESM |
Full Workflow Example
Section titled “Full Workflow Example”A complete example: create a monitor, set up a status page, add the monitor as a component, configure a Slack notification, and check overall status.
import { createOpenStatusClient, NotificationProvider, Periodicity, Region,} from "@openstatus/sdk-node";
const client = createOpenStatusClient({ apiKey: process.env.OPENSTATUS_API_KEY,});
// 1. Check API healthconst health = await client.health.v1.HealthService.check({});console.log(`API status: ${health.status}`);
// 2. Create an HTTP monitorconst { monitor } = await client.monitor.v1.MonitorService.createHTTPMonitor({ monitor: { name: "Production API", url: "https://api.example.com/health", periodicity: Periodicity.PERIODICITY_1M, regions: [Region.FLY_AMS, Region.FLY_IAD, Region.FLY_SYD], active: true, },});
// 3. Create a status pageconst { statusPage } = await client.statusPage.v1.StatusPageService .createStatusPage({ title: "Example Status", slug: "example-status", description: "Status page for Example services", });
// 4. Add the monitor as a componentconst { component } = await client.statusPage.v1.StatusPageService .addMonitorComponent({ pageId: statusPage!.id, monitorId: monitor!.id, name: "Production API", });
// 5. Set up Slack notificationsconst { notification } = await client.notification.v1.NotificationService .createNotification({ name: "Slack Alerts", provider: NotificationProvider.SLACK, data: { data: { case: "slack", value: { webhookUrl: "https://hooks.slack.com/services/..." }, }, }, monitorIds: [monitor!.id], });
// 6. Check overall statusconst { overallStatus } = await client.statusPage.v1.StatusPageService .getOverallStatus({ identifier: { case: "id", value: statusPage!.id }, });
console.log(`Overall status: ${overallStatus}`);