Developers
Send email from your own code.
The why.email API sends the mail your software has to send — sign-in links, receipts, alerts, password resets. You add a domain, get an API key, and post the message. We handle the DNS records, the queueing, and the retries, and show you what happened to each one.
One request to send a message
A single HTTP endpoint takes the message and returns an id. You can send one at a time or up to 100 in a batch. There is a Go SDK and a TypeScript SDK, both with no dependencies beyond the standard library, if you would rather not write the HTTP call yourself.
curl https://api.why.email/v1/emails \
-H "Authorization: Bearer sk_live_..." \
-d '{
"from": "receipts@yourdomain.com",
"to": ["ada@example.com"],
"subject": "Your receipt",
"text": "Thanks for your order."
}'
{ "id": "em_3Kd91", "status": "queued" }You can see what happened to it
Every send is logged with its result: queued, delivered, bounced, opened, complained. The console shows the log, and webhooks push the same events to your own server so your app can react — stop emailing an address that hard-bounced, mark an invoice as delivered.
| 09:41:12 | ada@example.com | delivered |
| 09:41:09 | ben@example.com | delivered |
| 09:40:58 | chi@example.com | opened |
| 09:40:31 | old@example.com | bounced |
What you get
The parts around sending
Most of the work in sending email is not the sending. These are the pieces you would otherwise build yourself.
Sending domains
Add a domain and we generate the DKIM, SPF, and DMARC records for it, then check them before you rely on them. Sending is blocked until the domain verifies, so you find out at setup rather than in someone's spam folder.
API keys
Create a key per environment, see when each was last used, and revoke one without touching the others.
Webhooks
Delivery, bounce, open, and complaint events posted to your endpoint, signed so you can check they came from us, and retried if your server is down.
Suppression list
Addresses that hard-bounced or complained are held back automatically. Sending to them again does not hurt your domain's reputation.
Templates
Keep the message body in the console with variables filled in at send time, so copy changes do not need a deploy.
Deliverability checks
A view of your domain's DNS records, authentication results, and bounce rate, so you can see a problem before it becomes a pattern.
Pricing
Two plans
Priced on messages sent. Prices include everything above — the free plan is not missing features, only volume.
Free
For trying it out and for small side projects.
- 3,000 emails a month
- 100 emails a day
- 1 sending domain
- API keys, webhooks, and both SDKs
- 30 days of delivery logs and events
- Sending stops when you reach the limit — you can never run up a bill
Pro
For sending you depend on.
- 50,000 emails a month
- No daily limit
- ₦0.50 per email past 50,000, taken from credit you top up
- 10 sending domains
- API keys, webhooks, and both SDKs
- 30 days of delivery logs and events
You can move between the plans at any time. If you cancel Pro you keep it until the end of the period you paid for, then go back to the free limits.
Questions
Common questions
Do I need a mailbox to use the API?
No. A developer account is separate from a mailbox. You sign up with an email address, verify it, and add a sending domain.
What happens when I hit the free limit?
Sending stops until the next period, or until you upgrade. There is no overage on the free plan, so it cannot produce a bill.
Can I receive mail through the API?
Replies to messages you sent are captured and kept for 30 days, and can be delivered to a webhook.
Which languages are supported?
There are official SDKs for Go and TypeScript. Everything else can use the HTTP API directly — it is plain JSON with a bearer token.
Send your first message.
Sign up, verify a domain, and you have a key. The free plan does not ask for a card.