For SaaS platforms sending email on behalf of their own customers

Your customers are a first-class resource in the API, not an afterthought bolted onto SES.

Resend's developer experience, with your customers as a first-class resource in the API — on Amazon SES.

Why platforms with customers of their own pick Reach

Your customer is a tenant, not a string you invented

Amazon SES Tenants (2025) isolates metrics and reputation policy — it does not give you an API a developer wants to use, per-tenant suppression, domain onboarding, per-tenant limits, keys or analytics. Reach builds all of that on top, so `POST /v1/tenants` is one call, not a project.

White-label surfaces your customer can see

Domain verification and per-tenant analytics, rendered for your customer — not just for you. Neither SES nor Resend offers this today.

Priced to switch to, not to justify

$0.50 per 1,000 emails. See the comparison below.

Developer experience — table stakes, matched

A Bearer key, a JSON body, a 202 and a status you can poll. Nothing to relearn if you already know Resend's API.

One call per customer, then send as them

The real shape of POST /v1/emails and POST /v1/tenants — every field shown is accepted, and nothing here is simplified for the page.

1. Create a tenant for this customer
curl "https://api.tryreach.email/v1/tenants" \
  -H "Authorization: Bearer $REACH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Acme Corp",
    "externalId": "cust_8f2e1a"
  }'

# 201 Created — 200 instead if "cust_8f2e1a" already has a tenant
# (posting the same externalId twice is safe: you get the existing
# tenant back unchanged, not a duplicate or an error)
{
  "id": "tn_9f8c2a1d",
  "name": "Acme Corp",
  "externalId": "cust_8f2e1a",
  "status": "provisioning",
  "limits": { "perDay": 1000, "perHour": 200, "burstPerSecond": 5 },
  "provider": { "mapped": false, "syncedAt": null, "syncError": null },
  "createdAt": "2026-09-29T12:00:00.000Z",
  "updatedAt": "2026-09-29T12:00:00.000Z"
}
2. Send an email as that tenant
curl "https://api.tryreach.email/v1/emails" \
  -H "Authorization: Bearer $REACH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "tenant": "tn_9f8c2a1d",
    "from": "billing@acme.com",
    "to": "customer@example.com",
    "subject": "Your invoice is ready",
    "html": "<p>Hi — your invoice for September is attached.</p>"
  }'

# 202 Accepted
{
  "id": "em_5b1e7c40",
  "status": "queued",
  "tenant": "tn_9f8c2a1d",
  "acceptedAt": "2026-09-29T12:00:00.000Z"
}

That is the short version. The full quickstart covers domains, status, signed webhooks and OAuth for platforms, with a downloadable Postman collection.

Pricing

One number. Reach runs on Amazon SES underneath for delivery and reputation isolation — that is an architecture choice, not the price.

Reach

$0.50/ 1,000 emails

Our price.

Resend

~$0.90/ 1,000 emails

Their published marginal rate.

Create a tenant, verify a domain, send.

Sign in with Google to create your organisation and get your first API key.

Get an API key