Talking to an email API should feel like calling a function, not stitching together HTTP requests, retries, and signature checks by hand. So we built official Postbox SDKs for the five languages developers asked for most: TypeScript, Python, .NET, Java, and Go.
Every one of them is published to its native registry today:
| Language | Install |
|---|---|
| TypeScript | npm install @postbox/sdk |
| Python | pip install postbox-sdk |
| .NET | dotnet add package Postbox |
| Java | cloud.postboxapp:postbox on Maven Central |
| Go | go get github.com/postboxapp/postbox-go |
One client, both planes
A single client covers everything: the data plane (send and receive mail, stream events) and the management plane (domains, mailboxes, API keys). You construct it once and reach the whole API from there.
import { Postbox } from "@postbox/sdk";
const pb = new Postbox({ apiKey: process.env.PB_KEY! });
await pb.messages.send({
from: "[email protected]",
to: [{ address: "[email protected]" }],
subject: "Welcome to Acme",
bodyHtml: "<p>Glad you are here.</p>",
});The same experience in every language
The details that are easy to get wrong are handled for you, and they behave the same no matter which SDK you pick:
- Retries with backoff on network errors, timeouts, and rate limits.
- Idempotency on every send, so a retried request never double-sends.
- Real-time events over a stream that reconnects and resumes on its own.
- Webhook verification that is timing-safe and replay-protected.
- Typed errors you branch on, instead of parsing status codes.
Pick your language, install the package, and send your first message in a few lines. Every method is documented with a runnable example in the docs, in all five languages side by side.