MepMail Docs

Quickstart

Get MepMail running and send your first email in a few minutes.

MepMail runs the same whether we host it for you or you run it yourself — same dashboard, same API, same SDKs. Pick your deployment below; the tabs remember your choice across the docs.

1. Get MepMail

Signup is open — the beta has no seat limit, so create your account at mepmail.dev/signup — no invite, no card required — then sign in at mepmail.dev. Each account sends up to 100 emails per UTC day on the Free plan; write to us if you would rather have us set the account up for you. The API is at api.mepmail.dev.

2. Verify a sending domain

MepMail only sends from domains you have verified.

  1. In the dashboard, go to Domains and add a domain you control (e.g. acme.dev).
  2. Add the DNS records it shows you — a DKIM TXT record plus MAIL FROM records — at your DNS provider.
  3. Click Verify DNS records. MepMail also resolves the records live, so you can see immediately which ones are still missing.

Validation is asynchronous on the DNS provider's side: DKIM usually resolves in minutes, MAIL FROM can take longer. MepMail re-checks on its own every 15 minutes, so you never have to click twice.

3. Create an API key

Go to API keys and create one. The ms_ token is shown once — copy it now. Keys can be scoped to full access or sending-only, and optionally pinned to a single domain.

4. Send an email

Your API base URL:

https://api.mepmail.dev

With curl:

curl -X POST https://api.mepmail.dev/emails \
  -H "Authorization: Bearer ms_..." \
  -H "Content-Type: application/json" \
  -d '{
    "from": "Acme <[email protected]>",
    "to": ["[email protected]"],
    "subject": "Hello from MepMail",
    "html": "<strong>It works!</strong>"
  }'

Or with the official Resend SDK for Node (npm install resend), pointed at your base URL:

import { Resend } from "resend";

const resend = new Resend("ms_...", {
  baseUrl: "https://api.mepmail.dev",
});

const { data, error } = await resend.emails.send({
  from: "Acme <[email protected]>",
  to: "[email protected]",
  subject: "Hello from MepMail",
  html: "<strong>It works!</strong>",
});

if (error) console.error(error.name, error.message);
else console.log("sent", data.id);

Both return { "id": "..." }. Watch the email move from queued to delivered on the Emails page.

On a self-hosted instance, delivery events (delivered, bounced, complained) require the SES event pipeline configured in Self-hosting → SES events. On the managed service they flow automatically.

Already on Resend? Keep the SDK you have and point it here: set the base URL to your MepMail origin and use your ms_ key. The wire format is identical, and SDKs has the exact option for each language — including the ones that only read it from an environment variable.

Next steps

  • Concepts for contacts, segments, topics, and broadcasts.
  • SDKs for how to point each official Resend SDK at your instance.
  • API reference for every endpoint.
  • Self-hosting for production deployment, the environment reference, and the SMTP relay.

On this page