Skip to content

TypeScript / JavaScript SDK

The official SDK for Node.js, Cloudflare Workers, Vercel Edge, Deno, and the browser. Zero dependencies.

Terminal window
npm install @duta/sdk

Create the client once and reuse it:

lib/mailer.ts
import { Duta } from "@duta/sdk";
export const duta = new Duta(process.env.DUTA_API_KEY!);
const { data, error } = await duta.emails.send({
from: "hello@yourdomain.com",
to: "user@example.com",
subject: "Welcome",
html: "<p>Thanks for signing up!</p>",
});

Methods never throw on API errors. They return { data, error }, and exactly one is set:

const { data, error } = await duta.emails.send({ /* ... */ });
if (error) {
// error.name: authentication_error | permission_denied | rate_limit_exceeded | ...
console.error(error.statusCode, error.name, error.message);
return;
}
console.log(data.id);

Workers expose env per request, so create the client inside the handler:

app.post("/welcome", async (c) => {
const duta = new Duta(c.env.DUTA_API_KEY);
await duta.emails.send({ /* ... */ });
});

Package: npmjs.com/package/@duta/sdk · Source: github.com/indra-sh/duta-js.