Email SDK
Adapters

Unosend

Configure the Unosend REST API adapter.

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

The Unosend adapter calls the Unosend REST API directly. It is a good fit when you want API-based transactional delivery with CC, BCC, headers, tags, and attachments, but do not need Email SDK metadata.

Before live sends

Create a server-side Unosend API key, verify the sending domain you use in from, and keep the key in UNOSEND_API_KEY. A dry run can validate the Email SDK message shape, but only a live send from your target environment proves the Unosend account and domain are ready.

Configure

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

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

Send

const result = await email.send({
  from: "Acme <hello@acme.com>",
  to: [{ email: "user@example.com", name: "Ada" }],
  cc: "billing@example.com",
  bcc: "audit@example.com",
  replyTo: "support@example.com",
  subject: "Welcome",
  html: "<p>Your workspace is ready.</p>",
  headers: {
    "X-Template": "welcome",
  },
  tags: [{ name: "type", value: "welcome" }],
  attachments: [
    {
      filename: "welcome.txt",
      content: "Welcome to Acme.",
      contentType: "text/plain",
    },
  ],
});

console.log(result.provider, result.messageId);

Unosend supports one replyTo address. The adapter rejects multiple reply-to addresses before it calls the API.

Options

OptionTypeRequiredNotes
apiKeystringYesUnosend API key.
baseUrlstringNoDefaults to https://api.unosend.co.
fetchtypeof fetchNoUseful for tests or custom runtimes.

Unosend maps CC, BCC, one reply-to address, headers, tags, and Base64 attachments. metadata is not part of Unosend's send endpoint, so the adapter rejects metadata before the request instead of silently dropping it.

Response

The adapter maps the Unosend email ID to id and messageId, and keeps the provider response in raw.

CLI smoke test

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

On this page