Email SDK
Adapters

Unosend

Send through the Unosend REST API, a single Bearer-authenticated endpoint with CC, BCC, tags, and attachments.

The Unosend adapter calls the Unosend REST API with plain fetch. It is one of the simplest providers to wire up: one Bearer-authenticated /emails endpoint, one API key, no other configuration.

Unosend logo
Unosend
@opencoredev/email-sdk/unosend
OfficialNot API testedRequest tested
Open website

Configure

Create a server-side API key in your Unosend account and verify the domain you send from.

lib/email.ts
import { createEmailClient } from "@opencoredev/email-sdk";
import { unosend } from "@opencoredev/email-sdk/unosend";

export const email = createEmailClient({
  adapters: [unosend({ apiKey: process.env.UNOSEND_API_KEY! })],
});

Prop

Type

Send

Unosend maps cc, bcc, headers, tags, attachments, and a single replyTo address.

const result = await email.send({
  from: "Acme <hello@acme.com>",
  to: [{ email: "user@example.com", name: "Ada" }],
  replyTo: "support@example.com",
  subject: "You're invited to the Acme workspace",
  html: "<p>Grace invited you to join the Acme workspace.</p>",
  tags: [{ name: "type", value: "invite" }],
});

console.log(result.id); // Unosend email id, also exposed as result.messageId

The adapter checks success in the response body and throws an EmailProviderError when Unosend reports a failure, even on an HTTP 200.

No metadata, one reply-to

Unosend has no metadata field and accepts only one replyTo address. A message with metadata or multiple reply-to addresses throws an EmailValidationError before any request is made. Use tags, or pick a metadata-capable adapter.

Verify from the CLI

UNOSEND_API_KEY="un_..." npx email-sdk doctor --adapter unosend
UNOSEND_API_KEY="un_..." npx email-sdk send \
  --adapter unosend \
  --from "Acme <hello@acme.com>" \
  --to user@example.com \
  --subject "Unosend smoke test" \
  --text "It works" \
  --dry-run

Drop --dry-run to send for real. Unosend has no extra credentials to get wrong, so a live send that prints an id means the key and the verified domain were the whole story. If it fails, the CLI surfaces Unosend's own error message from the response body.

On this page