Docs
TypeScript SDK
@switchboard/sdk client and proxy helpers.
Package:
@switchboard/sdk— multi-cell failover client + AI SDK proxy helpers.
Install / import
npm install @switchboard/sdk
# or from this monorepo while unpublished publicly:
# npm install ./sdk/typescript
import {
SwitchboardClient,
createProxyFetch,
providerProxyBaseUrl,
switchboardTiersBaseUrl,
THINKING_TIERS,
} from "@switchboard/sdk";
Source: sdk/typescript/ — see package CHANGELOG.md.
Hub-native client
const sb = new SwitchboardClient({
endpoints: [
process.env.SWITCHBOARD_BASE_URL!,
// optional failover cell
],
apiKey: process.env.SB_KEY!,
});
await sb.call({
op: "twilio.send_sms",
body: { To: "+15550192", Body: "hi" },
idempotencyKey: "sms-1",
feature: "onboarding",
});
Retries connection errors and 503 across endpoints, reusing the same Idempotency-Key. Non-retryable 4xx fail immediately.
AI SDK + thinking tiers
import { createOpenAI } from "@ai-sdk/openai";
import { createAnthropic } from "@ai-sdk/anthropic";
const cell = process.env.SWITCHBOARD_BASE_URL!;
const key = process.env.SB_KEY!;
const fetch = createProxyFetch(key, { headers: { "SB-Feature": "spine" } });
const tiers = createOpenAI({
apiKey: key,
baseURL: switchboardTiersBaseUrl(cell), // /v1/proxy/switchboard
fetch,
});
// model: "anybody" | "thinker" | "expert" — see THINKING_TIERS
const anthropic = createAnthropic({
apiKey: key,
baseURL: providerProxyBaseUrl(cell, "anthropic"),
fetch,
});
const openai = createOpenAI({
apiKey: key,
baseURL: providerProxyBaseUrl(cell, "openai"),
fetch,
});
createProxyFetch:
- Forces Switchboard Bearer; strips vendor auth headers / Google
?key= - Unwraps success
{ data, meta }→ providerdata - Keeps
{ error, data: null }failures intact - Passes SSE through unchanged
Env contract
SWITCHBOARD_BASE_URL=https://us1.switchboard.example
SB_KEY=sb_live_… # or SWITCHBOARD_API_KEY
USE_SWITCHBOARD=true # product flag if applicable
Types
Envelope types can be regenerated from platform/schemas/envelope.schema.json:
cd sdk/typescript && npm run gen