Sign up + grab your API key
Email + password. We mint a ek_test_ and ek_live_ key on the spot. Both go to your dashboard's API Keys tab; copy the live one to your terminal:
export RELAYLY_API_KEY=ek_live_…
ek_test_ instead. Test sends are accepted, signed, and logged but never actually delivered — perfect for CI or local dev.Verify a sending domain
Add the domain you'll send From: under Domains → New. We show three TXT records to paste into your DNS provider:
| Type | Host | Value |
|---|---|---|
| TXT | @ | v=spf1 include:_spf.relayly.io ~all |
| TXT | esp1._domainkey | v=DKIM1; k=rsa; p=MIIBIjANBg… |
| TXT | _dmarc | v=DMARC1; p=none; rua=mailto:dmarc@your-domain |
Click Verify. Most DNS providers propagate in 30–90 seconds; the dashboard polls every 10s and flips the green check when ready.
@sandbox.relayly.io work without DNS. Useful for proving the integration shape before you set up DNS.Send the first email
Paste this curl. Edit your-domain.com and the recipient. Hit enter:
curl -X POST https://api.relayly.io/v1/email/send \ -H "X-API-Key: $RELAYLY_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "from": {"email": "hello@your-domain.com", "name": "Test"}, "to": [{"email": "you@your-personal-inbox.com"}], "subject": "It works.", "html": "<p>Sent via Relayly. <a href=\"https://relayly.io\">relayly.io</a>.</p>", "text": "Sent via Relayly. https://relayly.io" }'
You'll get back {"message_id":"01HVQ…","status":"queued"}. The email lands in your inbox within a minute. Open Activity → Messages in the dashboard to watch the lifecycle update from queued → sent → delivered in real time.
If something didn't work
403 domain_not_verified
Your From: domain isn't green yet. Check Domains in the dashboard — at least the DKIM record needs to validate before live sends accept. The SPF record is checked at receive time by the recipient's mail server, but DKIM blocks sends entirely until verified.
The email landed in spam
For a brand-new domain, expect the first 5–10 sends to land in spam at Gmail and Outlook. Click "Not spam" — both providers learn quickly. Make sure DMARC is set to at least p=none with a working rua address; without it, providers throttle aggressively.
The send returned 200 but the email never arrived
Open Activity → Messages and find the message_id. Look at the lifecycle — if it stopped at "sent" but never "delivered", the receiving server bounced it (check the SMTP diagnostic line). If it's still "queued" after 30 seconds, our worker may be backlogged — refresh in another minute.
I don't see my API key in the dashboard
API keys live under Settings → API Keys. The keys shown at signup are also delivered to the email address you signed up with, in case you closed the tab.
Where is the dashboard?
app.relayly.io — same login you used at signup.
What to do once it works
Each of these is a 5-minute follow-on, in order of how often customers reach for them:
Wire up webhooks
Get delivered / bounced / opened / clicked events delivered to your endpoint, signed with HMAC-SHA256.
Drop in an SDK
Node, Python, Go, Ruby, PHP, Java. Same API shape; less boilerplate than curl.
SDKs →Save a reusable template
Liquid-style placeholders. Edit once in the dashboard, send by reference forever.
Templates →Set up SMTP relay
Existing app already speaks SMTP? Point it at smtp.relayly.io:587, same metadata supported.