Budget & Kill Switch SDK
SDK methods for budget management and kill switch control.
TypeScript SDK
Budget
import BrainstormRouter from "brainstormrouter";
const client = new BrainstormRouter({ apiKey: "br_live_..." });
// Get current spend and limits
const status = await client.budget.status();
console.log(`Daily: $${status.daily.spent_usd} / $${status.daily.limit_usd}`);
console.log(`Remaining: $${status.daily.remaining_usd}`);
// Update limits (pass null to clear)
await client.budget.updateLimits({
daily_limit_usd: 50,
monthly_limit_usd: 500,
});
// Get spend forecast
const forecast = await client.budget.forecast();
console.log(`Projected daily: $${forecast.daily.projected_usd}`);
console.log(`On track: ${forecast.daily.on_track}`);
Kill Switch
// Activate — immediately stops all routing
const result = await client.killswitch.activate("security incident #123");
console.log(result.active); // true
// Check status
const status = await client.killswitch.status();
console.log(`Active: ${status.active}`);
console.log(`History: ${status.history.length} events`);
// Deactivate — resume routing
await client.killswitch.deactivate();
Python SDK
Budget
from brainstormrouter import BrainstormRouter
client = BrainstormRouter(api_key="br_live_...")
# Get current spend and limits
status = client.budget.status()
print(f"Daily: ${status['daily']['spent_usd']} / ${status['daily']['limit_usd']}")
# Update limits (pass None to clear)
client.budget.update_limits(daily_limit_usd=50, monthly_limit_usd=500)
# Get spend forecast
forecast = client.budget.forecast()
print(f"Projected daily: ${forecast['daily']['projected_usd']}")
Kill Switch
# Activate
client.killswitch.activate(reason="security incident #123")
# Check status
status = client.killswitch.status()
print(f"Active: {status['active']}")
# Deactivate
client.killswitch.deactivate()
Async Python
from brainstormrouter import AsyncBrainstormRouter
client = AsyncBrainstormRouter(api_key="br_live_...")
status = await client.budget.status()
await client.killswitch.activate(reason="incident")
await client.killswitch.deactivate()
Types
BudgetStatus
| Field | Type | Description |
|---|
tenant_id | string | Tenant identifier |
key_id | string \ | null | API key used for the request |
daily | BudgetPeriodStatus | Daily spend tracking |
monthly | BudgetPeriodStatus | Monthly spend tracking |
key_budget | object \ | null | Per-key budget (if configured) |
BudgetPeriodStatus
| Field | Type | Description |
|---|
spent_usd | number | Amount spent in this period |
limit_usd | number \ | null | Configured limit (null = none) |
remaining_usd | number \ | null | Remaining budget |
period_key | string | Period identifier (date/month) |
KillSwitchStatus
| Field | Type | Description |
|---|
tenant_id | string | Tenant identifier |
active | boolean | Whether kill switch is active |
activated_at | string \ | null | ISO timestamp of activation |
activated_by | string \ | null | API key that activated |
reason | string \ | null | Activation reason |
history | HistoryEntry[] | Last 50 activation events |