TypeScript quickstart
Install @vendodev/sdk and fetch your first token in 5 minutes.
Install
npm install @vendodev/sdk
# or
yarn add @vendodev/sdk
# or
pnpm add @vendodev/sdkRequirements: Node 18+, Deno 1.40+, or any modern JS runtime. Zero runtime dependencies. The SDK is server-side — the constructor reads process.env.VENDO_API_KEY, so don't instantiate Vendo directly in a browser bundle.
OSS mode (no account needed)
Set the conventional env var for each integration:
# .env — no VENDO_API_KEY needed
OPENAI_API_KEY=sk-...
TELEGRAM_BOT_TOKEN=12345:abcdeThe TypeScript constructor requires a non-empty apiKey (it throws AuthError otherwise), so in OSS mode pass any placeholder string — token() then resolves against BYOK env vars and never sends the placeholder anywhere:
import { Vendo } from "@vendodev/sdk";
const vendo = new Vendo({ apiKey: "byok" }); // OSS-mode placeholder
const openaiKey = await vendo.token("openai"); // returns OPENAI_API_KEY
const botToken = await vendo.token("telegram"); // returns TELEGRAM_BOT_TOKENVendo mode (OAuth refresh + managed keys)
Set VENDO_API_KEY from your Vendo dashboard. Keys start with the vendo_sk_ prefix and are sent as Authorization: Bearer <key> to the proxy.
VENDO_API_KEY=vendo_sk_...import { Vendo } from "@vendodev/sdk";
const vendo = new Vendo(); // reads VENDO_API_KEY from env
const openaiKey = await vendo.token("openai");
// List connections
const connections = await vendo.connections.list();
// Check balance
const balance = await vendo.billing.balance();Explicit constructor options
const vendo = new Vendo({
apiKey: "vendo_sk_...",
baseUrl: "https://vendo.run", // default; do NOT append `/api` — every call site already prefixes it
apiVersion: "2026-05-02",
});Bulk tokens
The return type is Record<string, string | null> — slugs with no resolvable credential map to null:
const tokens = await vendo.tokens(["openai", "slack", "telegram"]);
// { openai: "sk-...", slack: "xoxb-...", telegram: null }Check the mode
import { isVendoMode } from "@vendodev/sdk";
isVendoMode(); // true if VENDO_API_KEY is setPer-slug override (escape hatch)
Set VENDO_TOKEN_<UPPER_SLUG> to short-circuit the resolution chain for a specific slug. This wins over both Vendo mode and the BYOK env var, and is useful when testing a custom integration that isn't in the catalog:
VENDO_TOKEN_MYTOOL=sk-test-...await vendo.token("mytool"); // returns the override valueNext steps
- Concepts: Two modes — resolution chain explained
- Concepts: Request scoping —
forRequestandforUser - Concepts: Errors — the 12 typed error classes
- SDK reference: TypeScript — full public surface