Send, receive, and maximize inbox placement with one API key. SPF, DKIM, DMARC and IP warm-up are handled for you. Score an email before you send it. Free to start — and we say yes to senders the big providers ban.
Get your API key — free# Send your first email in 30 seconds
curl https://app.getrainmail.com/api/send \
-H "Authorization: Bearer rk_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"from": "you@yourcompany.com",
"to": "customer@example.com",
"subject": "Welcome aboard",
"html": "<p>Thanks for signing up.</p>"
}'
SPF, DKIM, DMARC, IP warm-up and daily blocklist monitoring — done for you. Stop losing weeks to inbox placement.
Most APIs only send. Point your MX at us and we POST parsed inbound mail straight to your webhook.
New, non-US, “high-risk,” or rebuilding? You’re welcome here — on your own dedicated IP, isolated from everyone else.
Under Amazon SES per 1,000 sends — and the dedicated IP they bill $25–90/mo extra for is included. The legacy stacks are pricey, slow to set up, and make you own deliverability. Rainmail hands you the outcome. You ship; we handle the hard part.
Install the SDK, create a key in your dashboard (Developers tab), then send.
# Install — works today (clean "npm install rainmail" registry name coming)
npm install https://app.getrainmail.com/sdk/rainmail-node.tgz
pip install https://app.getrainmail.com/sdk/rainmail-python.tar.gz
// Node
const res = await fetch("https://app.getrainmail.com/api/send", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.RAINMAIL_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({ from, to, subject: "Welcome", html: "<p>Hi</p>" }),
});
# Python
import requests
requests.post("https://app.getrainmail.com/api/send",
headers={"Authorization": f"Bearer {KEY}"},
json={"from": sender, "to": to, "subject": "Welcome", "html": "<p>Hi</p>"})
Base URL https://app.getrainmail.com · Auth: Authorization: Bearer rk_live_…
Send one email. The from must be on a domain you’ve verified.
| from | Sender address on your verified domain. Required. |
| to | Recipient address. Required. |
| subject | Subject line. |
| html | HTML body. (or text for plain text) |
| from_name | Display name, optional. |
| reply_to | Reply-To address, optional. |
Returns { "ok": true, "sent": true } · errors carry a code (e.g. RM-S01 unverified domain).
Score an email before you send it — the one thing no other email API gives you.
| subject | Subject to grade. |
| html / body | Message body. |
| from | Optional — adds SPF/DKIM/DMARC + reputation checks for that domain. |
Returns { "verdict":"green|amber|red", "score":0-100, "checks":[…] }.
Create and revoke API keys (also one-tap in the dashboard Developers tab).
Get notified on events: delivered, bounced, replied, complained. We POST the event JSON to your URL.
Point your domain’s MX at Rainmail and register a webhook for the inbound event. We parse every incoming email and POST it to your URL (signed with your whsec_ secret) — your app receives, not just sends.
// Rainmail POSTs this to your webhook URL on every inbound email
{
"event": "inbound",
"data": {
"to": "app@yourdomain.com",
"from": "sender@example.com",
"subject": "Hello",
"text": "the message body",
"html": "<p>the message body</p>",
"message_id": "<...>"
}
}Pipe any message through the Inboxing Score before you send. Gate your own sends on it. Catch spam-foldering before your users ever feel it.
const s = await fetch("https://app.getrainmail.com/api/inboxing/score", {
method:"POST", headers:{ "Content-Type":"application/json" },
body: JSON.stringify({ subject, html })
}).then(r => r.json());
// => { verdict: "green", score: 96, checks: [...] }
Honest, not hype — the same job, combined in one place, at a lower price, with things they simply don’t offer.
| Rainmail | Amazon SES | SendGrid | Resend | |
|---|---|---|---|---|
| Price per 1,000 sends | ≤ SES | ~$0.10 | plan-based, higher | plan-based, higher |
| Dedicated IP | Included | +$24.95/mo | +$30–90/mo | higher tiers |
| Real mailbox on your domain (read + send) | ✓ | ✗ | ✗ | ✗ |
| Receive inbound into your app | ✓ | setup-heavy | ✓ | limited |
| Deliverability managed for you | ✓ | you do it | partial | partial |
| Score an email before you send | ✓ | ✗ | ✗ | ✗ |
| Says yes to new / non-US / “high-risk” | ✓ | often suspends | often suspends | varies |
| Sovereign — your IP, your data, no ad-scan | ✓ | their infra | their infra | their infra |
Where they lead today: brand maturity, polished official SDKs, and proven hyperscale. We’re closing that gap — SDKs and a published free tier are next.
Built on the live API above — shipping in this order.
Node + Python SDKs work today (install above). The clean npm install rainmail / pip install rainmail names are reserved — publishing soon.
100 emails a day, free. No card, no sales call — sign up, grab a key, build. Upgrade only when you scale.
Your domain, your dedicated IP, your data — never ad-scanned, fully portable.
Grab a key, paste the cURL above, done.
Get your API key — free