Getting started
Quickstart
Sign in, verify a domain, create an API key and send your first email with cURL or Node in about five minutes.
This guide takes you from a new account to a delivered email. You need a domain you control and access to its DNS settings.
Sign in
Go to /signin and choose Continue with GitHub or Continue with Google. The first sign-in creates your free account, a team, and a project called Default.
Add your domain
Open Domains in the dashboard, enter a domain such as mail.yourcompany.com, and click Add domain. You can use a root domain or a subdomain. A subdomain keeps your marketing and transactional reputation apart from your root domain.
Sooner takes a few seconds to generate the DNS records for the domain. The domain page shows them when they are ready.
Add the DNS records
On the domain page, copy each record exactly as shown and add it at your DNS provider.
| Record | Type | Name | Value |
|---|---|---|---|
| DKIM (three records) | CNAME | <token>._domainkey.<your-domain> | <value from dashboard> |
| MX | MX, priority 10 | send.<your-domain> | <value from dashboard> |
| SPF | TXT | send.<your-domain> | <value from dashboard> |
| DMARC (optional) | TXT | _dmarc.<your-domain> | v=DMARC1; p=none; |
Click Check DNS now, or wait. Sooner checks automatically. The domain becomes verified as soon as the DKIM records validate. Most providers propagate within minutes, and you can take up to 72 hours. See DNS records for details.
Create an API key
Open API keys, enter a name, choose Sending access (enough to send email) or Full access, and click Create key. Copy the key now. It starts with sn_ and is shown only once.
export SOONER_API_KEY="sn_..."Send an email
Send from an address on your verified domain.
curl -X POST https://api.sooner.dev/emails \
-H "Authorization: Bearer $SOONER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"from": "Acme <hello@mail.yourcompany.com>",
"to": ["you@example.com"],
"subject": "Hello from Sooner",
"html": "<p>It works.</p>"
}'The response contains the email ID. The email is accepted and queued, not yet delivered.
{ "id": "01jcz8w3f2x9k4m7n6p5q2r1s0" }The same request with the Resend Node SDK:
import { Resend } from "resend";
const resend = new Resend(process.env.SOONER_API_KEY, { baseUrl: "https://api.sooner.dev" });
const { data, error } = await resend.emails.send({
from: "Acme <hello@mail.yourcompany.com>",
to: ["you@example.com"],
subject: "Hello from Sooner",
html: "<p>It works.</p>",
});
if (error) console.error(error);
else console.log(data?.id);Check the email in the dashboard
Open Emails. The list updates live. Your email moves through queued, sending, sent and delivered. Click it to see its timeline of events, its body, and any error.
You can also read it over the API with a full-access key:
curl https://api.sooner.dev/emails/01jcz8w3f2x9k4m7n6p5q2r1s0 \
-H "Authorization: Bearer $SOONER_API_KEY"Next steps
- Send an email: every field, with limits.
- Webhooks: get notified when an email is delivered or bounces.
- Errors and Rate limits: what to handle in production.