Skip to Content
sesameSend

Quickstart

Point an official Resend SDK at your sesameSend deployment and make a call.

You need a running deployment (see Local development or self-hosting) and an API key. Keys start with os_. scripts/bootstrap.mjs writes your first one to .env as OPENSEND_API_KEY.

The snippets below were run against a local deployment. Node resend 6.38.0, Python resend 2.53.2 and Go resend-go/v3 3.17.0 each listed domains, created a contact and deleted it, and got a 400 validation_error back for a bad key. Nothing was sent.

npm i resend
export RESEND_BASE_URL=https://mail.example.com   # your deployment, no trailing slash needed
import { Resend } from "resend";

const resend = new Resend(process.env.OPENSEND_API_KEY); // an os_ key, not a Resend key

const { data, error } = await resend.emails.send({
  from: "Acme <hello@yourdomain.com>",
  to: ["delivered@resend.dev"],
  subject: "Hello from sesameSend",
  html: "<p>It works.</p>",
});

The Node SDK reads RESEND_BASE_URL when it loads.

About the recipient

delivered@resend.dev, bounced@resend.dev, complained@resend.dev and suppressed@resend.dev are simulator addresses. sesameSend answers them locally and they never reach SES, so they are safe for tests. See Local development.

Before real mail works

  1. Add and verify a sending domain, or verify a single address while SES is in its sandbox. See Domains and DKIM.
  2. In the SES sandbox you can only send to verified addresses. See SES production access.

Other SDKs

PHP, Ruby, Java, .NET, Rust and other Resend SDKs were not tested here. If one lets you set the base URL, it should work. If it does not, call the HTTP API directly.