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

FieldTypeDescription
tenant_idstringTenant identifier
key_idstring \nullAPI key used for the request
dailyBudgetPeriodStatusDaily spend tracking
monthlyBudgetPeriodStatusMonthly spend tracking
key_budgetobject \nullPer-key budget (if configured)

BudgetPeriodStatus

FieldTypeDescription
spent_usdnumberAmount spent in this period
limit_usdnumber \nullConfigured limit (null = none)
remaining_usdnumber \nullRemaining budget
period_keystringPeriod identifier (date/month)

KillSwitchStatus

FieldTypeDescription
tenant_idstringTenant identifier
activebooleanWhether kill switch is active
activated_atstring \nullISO timestamp of activation
activated_bystring \nullAPI key that activated
reasonstring \nullActivation reason
historyHistoryEntry[]Last 50 activation events