Node.js Email API with the NoticeAPI SDK

The NoticeAPI Node SDK is a zero-dependency, TypeScript-first wrapper around the REST API. Use it in Express, Fastify, background workers, queues, and scripts that need email without hand-rolling fetch calls.

Express route with idempotency
import express from "express";
import { NoticeAPI, NoticeAPIError } from "noticeapi";

const app = express();
const notice = new NoticeAPI(process.env.NOTICEAPI_API_KEY!);

app.use(express.json());

app.post("/send-receipt", async (req, res) => {
  try {
    const { email, orderId } = req.body;
    const result = await notice.emails.send(
      {
        from: "Acme Billing <[email protected]>",
        to: email,
        subject: `Receipt #${orderId}`,
        html: "<p>Your receipt is ready.</p>",
      },
      { idempotencyKey: `receipt-${orderId}` },
    );
    res.json({ id: result.id });
  } catch (error) {
    if (error instanceof NoticeAPIError) {
      res.status(error.status).json({ code: error.code, message: error.message });
      return;
    }
    throw error;
  }
});

Zero-dependency package

Install noticeapi from npm. It targets Node 18+ and uses the built-in fetch implementation.

Framework agnostic

Use the same client from Express, Fastify, workers, queues, CLI scripts, and server-rendered apps.

Attachments and idempotency

Pro and Custom REST sends support attachments and retry-safe idempotency keys for receipts, invoices, and reports.

More than single sends

The SDK mirrors email lookup, batch sends, suppressions, templates, audiences, contacts, and broadcasts.

From test send to production traffic.

Install noticeapi

Run npm install noticeapi in any Node 18+ project.

Create the client

Initialize NoticeAPI with your ntc_ key from a server environment variable.

Send and handle errors

Catch NoticeAPIError to read the HTTP status and stable error code.

Use adjacent APIs

Add templates, batch sends, suppressions, audiences, or broadcasts as your app needs them.

Typed SDK, same REST contract

The SDK mirrors the HTTP API one-to-one. Anything you learn in the REST docs maps directly to a method, and non-2xx responses throw typed NoticeAPIError objects.

Read the implementation.

Questions before you ship.

Which Node versions are supported?

The SDK targets Node 18 and newer because it relies on the built-in fetch API.

Can I send attachments from Node?

Yes on Pro or Custom. Use notice.emails.send with attachment objects that include filename and base64 content.

Does the SDK support broadcasts?

Yes. The shipped SDK includes audiences, contacts, broadcasts, suppressions, templates, send, batch, and email lookup methods.

Test it. Then send from a verified domain.

Free includes simulator testing and 3,000 emails per month. Production sending on Free needs activation and a verified domain.