Skip to main content
Use our SDKs to integrate status updates directly into your application code.

JavaScript / TypeScript

Installation

npm install @kodo-status/sdk

Quick Start

import { Kodo } from '@kodo-status/sdk';

const kodo = new Kodo({
  apiKey: process.env.KODO_API_KEY
});

// Update service status
await kodo.service.update('api-gateway', {
  status: 'degraded'
});

// Create incident
await kodo.incident.create({
  title: 'High latency detected',
  status: 'investigating',
  severity: 'minor',
  services: ['api-gateway']
});

// Send heartbeat
await kodo.heartbeat('worker-1');

Service Methods

// List services
const services = await kodo.services.list();

// Get service
const service = await kodo.service.get('svc_abc123');

// Update status
await kodo.service.update('api-gateway', {
  status: 'operational'
});

Incident Methods

// List incidents
const incidents = await kodo.incidents.list({
  status: 'investigating'
});

// Create incident
const incident = await kodo.incident.create({
  title: 'Database issues',
  status: 'investigating',
  severity: 'major',
  services: ['database'],
  message: 'We are investigating'
});

// Add update
await kodo.incident.update(incident.id, {
  status: 'identified',
  message: 'Root cause found'
});

// Resolve
await kodo.incident.resolve(incident.id, {
  message: 'Issue resolved'
});

Monitor Methods

// List monitors
const monitors = await kodo.monitors.list();

// Create monitor
const monitor = await kodo.monitor.create({
  name: 'API Health',
  url: 'https://api.example.com/health',
  interval: 300
});

// Pause monitor
await kodo.monitor.disable(monitor.id);

Heartbeat

// Simple heartbeat
await kodo.heartbeat('hb_abc123');

// With status
await kodo.heartbeat('hb_abc123', {
  status: 'up',
  message: 'Job completed successfully',
  duration: 1523
});

// Report failure
await kodo.heartbeat('hb_abc123', {
  status: 'down',
  message: 'Job failed'
});

Express Middleware

import { createKodoMiddleware } from '@kodo-status/express';

const kodo = createKodoMiddleware({
  apiKey: process.env.KODO_API_KEY,
  monitorId: process.env.KODO_MONITOR_ID
});

// Health endpoint
app.get('/health', kodo.healthCheck);

// Error tracking (add as last middleware)
app.use(kodo.errorHandler);

Next.js

// app/api/health/route.ts
import { createHealthHandler } from '@kodo-status/nextjs';

export const GET = createHealthHandler({
  apiKey: process.env.KODO_API_KEY,
  monitorId: process.env.KODO_MONITOR_ID
});

Error Handling

import { KodoError } from '@kodo-status/sdk';

try {
  await kodo.incident.create({ ... });
} catch (error) {
  if (error instanceof KodoError) {
    console.error(`Kodo error: ${error.code} - ${error.message}`);
  }
}

TypeScript

Full TypeScript support with types:
import { Kodo, Incident, Service, IncidentStatus } from '@kodo-status/sdk';

const kodo = new Kodo({ apiKey: '...' });

const incident: Incident = await kodo.incident.create({
  title: 'Issue',
  status: 'investigating' as IncidentStatus
});