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.

POST /v1/emails
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.

console.why.email — logs
09:41:12ada@example.comdelivered
09:41:09ben@example.comdelivered
09:40:58chi@example.comopened
09:40:31old@example.combounced

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

₦0no card needed

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

₦20,000per month

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.