MillionSend Docs

Quickstart

Get MillionSend and send your first email in a few minutes.

MillionSend runs the same on MillionSend Cloud and on your own infrastructure — same dashboard, same API, same SDKs. Pick your deployment below; the tabs remember your choice across the docs.

1. Get MillionSend

Sign up at millionsend.com. That's it — no infrastructure, no AWS account. The dashboard is at millionsend.com and the API at api.millionsend.com.

2. Verify a sending domain

MillionSend 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. MillionSend also resolves the records live, so you can see immediately which ones are still missing.

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.millionsend.com

With curl:

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

Or with the Node SDK (npm install millionsend):

import { MillionSend } from "millionsend";

const ms = new MillionSend("ms_...", { baseUrl: "https://api.millionsend.com" });

const { data, error } = await ms.emails.send({
  from: "Acme <[email protected]>",
  to: "[email protected]",
  subject: "Hello from MillionSend",
  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 the setup wizard configures — see Self-hosting → SES events. On Cloud they flow automatically.

Already on Resend? Point the official Resend SDK at MillionSend instead — set RESEND_BASE_URL to your base URL and use your ms_ key. The wire format is identical.

Next steps

  • Concepts for contacts, segments, topics, and broadcasts.
  • SDKs for the nine official client libraries.
  • API reference for every endpoint.
  • Self-hosting for production deployment, the environment reference, and the SMTP relay.

On this page