@kill-switch/sdk
v0.1.1
Published
Kill Switch SDK — programmatic access to the Kill Switch API
Maintainers
Readme
@kill-switch/sdk
Zero-dependency TypeScript client for the Kill Switch API — monitor cloud spend and trip kill switches on runaway services programmatically.
npm install @kill-switch/sdkQuick start
import { KillSwitchClient } from "@kill-switch/sdk";
const client = new KillSwitchClient({ apiKey: "ks_live_..." });
// List connected cloud accounts
const accounts = await client.accounts.list();
// Run a monitoring check across all accounts
const result = await client.monitoring.checkAll();
// Apply a protection preset
await client.rules.applyPreset("cost-runaway");Get a personal API key (ks_live_…) from the dashboard at
app.kill-switch.net → Settings → API Keys.
Client options
new KillSwitchClient({
apiKey, // ks_live_… or ks_test_… key
jwtToken, // Clerk JWT — alternative to apiKey
orgId, // scope requests to an organization
baseUrl, // default: https://api.kill-switch.net
timeout, // request timeout in ms (default: 30000)
maxRetries, // retries for 5xx/429/network errors (default: 2)
fetch, // custom fetch (testing / edge runtimes)
hooks, // request/response event hooks for logging
});You can update credentials after construction with setApiKey(), setJwtToken(),
and setOrgId().
Resources
The client exposes one accessor per API area:
| Accessor | Covers |
|---|---|
| client.account | Current account / plan |
| client.accounts | Connected cloud accounts (CRUD) |
| client.rules | Kill-switch rules & shield presets |
| client.alerts | Alert channels (PagerDuty, Slack, Discord, email, webhook, GitHub) |
| client.database | Database kill sequences |
| client.auth | API keys & auth |
| client.billing | Plan & billing |
| client.teams | Team members & roles |
| client.orgs | Organizations |
| client.activity | Audit / activity log |
| client.analytics | FinOps analytics |
| client.monitoring | On-demand monitoring checks |
| client.providers | Supported providers & credential validation |
Errors
All failures throw a subclass of KillSwitchError, so you can branch on type:
import {
KillSwitchError,
ApiError,
AuthenticationError,
ForbiddenError,
NotFoundError,
RateLimitError,
TimeoutError,
NetworkError,
} from "@kill-switch/sdk";
try {
await client.accounts.list();
} catch (err) {
if (err instanceof AuthenticationError) {
// invalid or missing API key
} else if (err instanceof RateLimitError) {
// back off and retry
}
}Links
- Website: https://kill-switch.net
- API reference: https://kill-switch.net/docs
- CLI:
@kill-switch/cli
MIT © Kill Switch
