VendoVendo Docs
Getting started

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/sdk

Requirements: 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:abcde

The 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_TOKEN

Vendo 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 set

Per-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 value

Next steps

On this page