SDK

Typed TypeScript client for the Veezee REST API: LinkedIn, Reddit, and X (formerly Twitter) data behind one client. Zero runtime dependencies, built on Node 20's global fetch. Package home: @veezee/sdk on npm; source: veezeehq/veezee-sdk on GitHub.

Install#

npm install @veezee/sdk

Node 20+ required. The package also ships the veezee CLI (short alias: vz) and the agent skill packs.

Quickstart#

TypeScript
import { VeezeeClient } from "@veezee/sdk";

const client = new VeezeeClient(); // finds your key: constructor option, VEEZEE_API_KEY, or ~/.veezee/config
const profile = await client.linkedin.getProfile({ identifier: "williamhgates" });
const chatter = await client.reddit.search({ query: "notion alternative", type: "comments" });
const tweets = await client.x.getTweets({ identifier: "nasa" });

No key yet? await client.mint() creates a free one and saves it to ~/.veezee/config (same store npx @veezee/sdk init writes). The free key includes 200 credits per IP per day. Need more? client.checkout({ pack: "flex" }) (or /upgrade in a browser) adds credits to the same key, so nothing needs reconfiguring. Already have a key? new VeezeeClient({ apiKey: process.env.VEEZEE_API_KEY }).

The methods#

One method per tool, same names and envelopes as the REST contract (https://veezee.io/openapi.json). Every data response carries usage with the receipt id, credits charged, and balance.

LinkedIn, under client.linkedin (platform docs):

Reddit, under client.reddit (platform docs):

X, under client.x (platform docs):

Top-level on the client:

Retries and idempotency#

The client retries RATE_LIMITED, CONCURRENCY_LIMIT, UPSTREAM_UNAVAILABLE, INTERNAL, and network failures up to 3 attempts with backoff, honoring retry_after_seconds. Each metered call gets one Idempotency-Key reused across its own retries, so retries never double-charge. Terminal errors throw VeezeeError with the same code/message/param shape the API returns, including offer and credits_required on payment-fixable errors.