# SDK (/academy/sdk)



An [API](/academy/api) is the window. An **SDK** is the official client so you stop assembling the HTTP by hand.

Software Development Kit. Functions, types, and error messages in the language you already write. Stripe's Node client. The AWS SDK. Better Auth's helpers. You still talk to their window. You just stop mime-ing through the glass.

**Three lines, not three hundred**

Without an SDK you open a connection, shape a body, attach a key from your [env file](/academy/env), decode the reply, and guess what a 402 means. With one you write `stripe.charges.create(...)` and the kit does the rest. Same [endpoint](/academy/endpoint). Less ceremony.

What's in the box, usually:

* Named commands that wrap the messy [REST](/academy/rest) calls
* Types so a typo is a red squiggle, not a judge-facing 500
* Helpers for keys, retries, and errors you would otherwise invent at 3 a.m.

When a vendor says "we have a TypeScript SDK," they mean: if you picked TypeScript in the [builder](/builder), here is the [dependency](/academy/dependency) that speaks us fluently. They often ship one kit per language. Same furniture. Different booklet.

**When to skip it**

Use the SDK when they have one and you will call more than one slot. Use raw `fetch` when they don't, or when the kit is a mansion and you needed a doorbell. An [agent](/academy/agent) loves SDKs because the types are a map. It still needs your key in `.env`, not in the chat.

The [CLI](/academy/cli) will add the package. You still own the secret. A typed client that prints `STRIPE_SECRET_KEY` into a commit is just a faster way to get billed.

**What this unlocks**

The window is what you may ask. The SDK is how you ask without sweating the wiring.

Payments, auth, maps — afternoon features, not weekend plumbing.
