Ritto Mail Docs

Quickstart

Get Ritto Mail and send your first email in a few minutes.

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

1. Get Ritto Mail

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

2. Verify a sending domain

Ritto Mail 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. Ritto Mail 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 rm_ token is shown once — copy it now. (Keys created before the rename to Ritto Mail start with ms_ and keep working.) 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.ritto.email

With curl:

curl -X POST https://api.ritto.email/emails \
  -H "Authorization: Bearer rm_..." \
  -H "Content-Type: application/json" \
  -d '{
    "from": "Acme <onboarding@acme.dev>",
    "to": ["delivered@example.com"],
    "subject": "Hello from Ritto Mail",
    "html": "<strong>It works!</strong>"
  }'

Or with the official Resend Node SDK (npm install resend) — Ritto Mail has no SDK of its own; its API is wire-compatible with Resend's, so Resend's SDKs work unchanged once pointed at Ritto Mail:

// RESEND_BASE_URL=https://api.ritto.email (read by the SDK)
import { Resend } from "resend";

const resend = new Resend("rm_...");

const { data, error } = await resend.emails.send({
  from: "Acme <onboarding@acme.dev>",
  to: "delivered@example.com",
  subject: "Hello from Ritto Mail",
  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 described in SELF_HOSTING.md. On Cloud they flow automatically.

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

Next steps

  • Concepts for contacts, segments, topics, and broadcasts.
  • SDKs for using the official Resend SDKs with Ritto Mail.
  • API reference for every endpoint.
  • Self-hosting for running your own instance.

On this page