Own MTA · Own IP · Own DNS

Send from your own domain, down to the return path.

esendblue runs its own mail server. Your domain gets its own DKIM key and its own bounce address — not a slot in a shared pool. Two DNS records, and the delivery path belongs to you.

Free plan · 3,000 emails a month · no card required

POST /v1/emails
curl -X POST https://api.esendblue.com/v1/emails \
  -H "Authorization: Bearer $ESENDBLUE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "receipts@yourdomain.com",
    "to": ["customer@example.com"],
    "subject": "Your receipt",
    "html": "<p>Thanks for your order.</p>"
  }'
const res = await fetch("https://api.esendblue.com/v1/emails", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.ESENDBLUE_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    from: "receipts@yourdomain.com",
    to: ["customer@example.com"],
    subject: "Your receipt",
    html: "<p>Thanks for your order.</p>",
  }),
});
import os, requests

requests.post(
    "https://api.esendblue.com/v1/emails",
    headers={"Authorization": f"Bearer {os.environ['ESENDBLUE_API_KEY']}"},
    json={
        "from": "receipts@yourdomain.com",
        "to": ["customer@example.com"],
        "subject": "Your receipt",
        "html": "<p>Thanks for your order.</p>",
    },
)
201 { "id": "82cfba23-d8e0-4a47-905b-2931a09784cd" }

Every message tells you what happened to it.

The id you get back follows the message through delivery. Webhooks fire on each state change, and the same history is on the message in the dashboard — including the SMTP code the receiving server actually returned.

  • email.sentHanded to the receiving server
  • email.deliveredAccepted for the recipient
  • email.openedTracking pixel loaded
  • email.clickedA tracked link was followed
  • email.bouncedRefused — the address is suppressed
  • email.complainedMarked as spam by the recipient
  • email.delivery_delayedDeferred, still being retried
  • email.failedGave up after retries

Deliverability

The parts most APIs leave to you.

Your own return path

Bounces come back on send.yourdomain.com, pointed at us by a single CNAME. Because the envelope stays inside your domain, SPF aligns with your From address for DMARC — not only DKIM.

Authentication, once

A DKIM key is generated per domain and signed on every message. The dashboard checks each record against live DNS and shows what is actually published, not what it hopes is.

Bounces close the loop

A hard bounce suppresses the address and links the suppression to the exact message that caused it. Sending again to a dead address is the fastest way to lose a reputation, so it does not happen twice.

The mail server is ours

Not a wrapper over somebody else's API. Queueing, retries, TLS and the return path are one system, which is why the failure detail reaches you intact instead of flattened into "failed".

Setup

Two records, then send.

  1. 1

    Add your domain

    We generate its DKIM key and show you exactly what to publish.

  2. 2

    Publish two records

    A DKIM TXT, and a CNAME for the return path. Your existing SPF record is left alone — the envelope domain carries its own.

  3. 3

    Send

    Verification re-checks on its own until DNS has propagated. Then the API is live.

Pricing

Priced per message, with no surprises.

In rupees, with a dollar price outside India: $20 and $90. Every plan includes all sending features — domains, webhooks, templates, logs and suppression. Volume above the included amount is billed per thousand, so a month that runs over costs what it used and nothing more.

Free

₹0/month

3,000 emails

  • 1 sending domain
  • Full API and webhooks
  • 7-day message logs
Get started

Scale

₹6,999/month

100,000 emails, then ₹30 per 1,000

  • Unlimited domains
  • Dedicated sending IP
  • 90-day message logs
Get started

Enterprise

Talk to us

Committed volume, custom terms

  • Multiple dedicated IPs
  • SLA and support terms
  • Retention to suit your policy
Get in touch

Start sending today.

Create an account, add a domain, publish two records. The free plan needs no card, and it is the same API on every plan — nothing is held back for the paid tiers.