// developers · sdks

Typed clients that get out of the way.

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.

typescript · send in three lines
// 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
// languages[01/03]

One client where it counts.

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.

Install & setup in the docs →

TypeScriptAvailable
Node.jsAvailable
PythonAvailable
Rubyvia REST
Govia REST
PHPvia REST
// in the box[02/03]

Typed end to end.

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.

See the underlying API →

AuthBearer API key · X-Drin-Product selects the project
Typed responsesEvery method returns a typed object — no hand-rolled casts
Error typesDistinct, catchable classes for validation, auth and rate-limit failures
IdempotencyPass idempotencyKey to retry a send safely
// pairs well with[03/03]
// start building

One import and you're sending.

Grab a key and follow the SDK quickstart in the docs. Test in the sandbox; production starts at $3 a month.