The TypeScript SDK wraps the same REST API in fully typed methods — autocomplete on every field, typed responses, and catchable error classes. Python is here too; every other language calls the clean REST surface directly.
// idiomatic usage — see the docs for install & setup import { DrinClient } from "@drin00/sdk"; const drin = new DrinClient({ apiKey: process.env.DRIN_API_KEY }); const { id } = await drin.emails.send({ from: "hello@drin.run", to: "user@acme.com", subject: "Welcome aboard", html: "<p>You are in.</p>", }); // → id: "msg_8fK2q1" · fully typed request & response
We'd rather ship two excellent SDKs than six thin wrappers. TypeScript and Python are first-class today, and because the API is plain REST + JSON, Ruby, Go, PHP and everything else are a single HTTP call away.
The SDK speaks the same auth, idempotency and error contract as the raw API — so whether you call drin.emails.send or curl the endpoint, behaviour is identical. The types just save you the guesswork.
X-Drin-Product selects the projectidempotencyKey to retry a send safelyThe same surface from your terminal — send, tail logs and manage domains.
Every endpoint, parameter and response — the source the SDK is generated against.
Copy-paste recipes — password resets, receipts, inbound handlers and more.
The same API handed to an AI agent as 54 typed tools.
Grab a key and follow the SDK quickstart in the docs. Test in the sandbox; production starts at $3 a month.