MailKite
Start Free
Next.js transactional email

Next.js email API

Send transactional email from your Next.js app in under 60 seconds. Inbound lands as clean JSON at your API route. Unlimited domains, free — no credit card, no SMTP glue.

app/api/send/route.ts
// app/api/send/route.ts
import { MailKite } from "mailkite";

const mk = new MailKite(process.env.MAILKITE_API_KEY);

export async function POST() {
  const { id, status } = await mk.send({
    from: "hello@myapp.dev",
    to: "user@example.com",
    subject: "Your verify link",
    text: "Click to verify: https://myapp.dev/verify?token=…",
  });
  return Response.json({ id, status });
}

Also works with Pages Router, Edge Runtime, and Vercel serverless functions — see all frameworks.

Our Tier-1 Networks
Amazon SES Cloudflare Postmark
Switched from SendGrid, inbox placement went from ~92% to ~99% in two weeks.

MarkAdRender.app

Send · Receive · Reply

Outbound is one call. Inbound is JSON.

Your Next.js app sends a verify link, the user replies, and the reply lands at your API route — structured, verified, ready to act on.

app/api/send/route.ts — outbound Send
// app/api/send/route.ts
import { MailKite } from "mailkite";

const mk = new MailKite(process.env.MAILKITE_API_KEY);

export async function POST() {
  const { id, status } = await mk.send({
    from: "hello@myapp.dev",
    to: "user@example.com",
    subject: "Your verify link",
    text: "Click to verify: https://myapp.dev/verify?token=…",
  });
  return Response.json({ id, status });
}
app/api/mailkite/webhook/route.ts — inbound Inbound
// app/api/mailkite/webhook/route.ts
import { verifyWebhook } from "mailkite";

export async function POST(request: Request) {
  const verified = await verifyWebhook(request);
  if (!verified) return new Response(null, { status: 401 });

  const { from, to, subject, text, html, attachments } =
    await request.json();

  // Handle the inbound email — store it, trigger a workflow, reply
  return new Response(null, { status: 200 });
}

The full send → receive → reply loop, all in Next.js. Route handler to route handler.

Try it now

Send yourself a test email right now

Pick a from-address, enter your inbox, and a real email lands in it seconds later. Verifying your address creates your free account — that's the whole signup. No credit card.

live · POST api.mailkite.dev/v1/send
SPF DKIM DMARC

Watch it land in your inboxnot in spam.

@
.

No credit card · Unlimited domains on Free · First send in 60s

Every stack

Works with your whole stack.

Primarily Next.js, but every SDK has the same API surface. No language is second-class — inbound webhooks hit any endpoint.

send.{ts,py,php,go,rb,java,curl}
import { MailKite } from "mailkite";

const mk = new MailKite(process.env.MAILKITE_API_KEY);

await mk.send({
from: "hello@myapp.dev",
to: "user@example.com",
subject: "Your verify link",
text: "Click to verify: https://myapp.dev/verify?token=…",
});
Install Docs →

Prefer cURL or your own HTTP client? REST API docs

Why MailKite

Built for the way Next.js developers ship.

Email that feels like the rest of your stack. TypeScript-first, edge-ready, and zero infrastructure to maintain.

From your API route to the inbox in one call

Import the SDK, drop a route handler, and send. No SMTP config, no DNS wrangling — MailKite handles SPF, DKIM, and DMARC so your Next.js app ships authenticated mail from day one. Works with App Router, Pages Router, and the Edge Runtime.

Inbound lands as clean JSON at your webhook

Point a domain at MailKite and every inbound email arrives as structured JSON at your API route. Parse replies, build support inboxes, or trigger workflows — no multipart decoding, no MIME assembly. Your route handler reads it like any other API payload.

Unlimited domains, one API key

Ship email for every product you build on the same account. Each Next.js app gets its own domain and routes — no per-domain charges, no per-product tax. Add domains as fast as you ship products.

Pricing

Free for every product you ship. Pro when volume grows.

Start free on unlimited domains. Pay only when you exceed the free volume — no hard cutoff, no silent suspension. Pro starts at $20/mo.

Free

For solo devs and early products

  • Unlimited domains
  • Up to 3,000 emails/month
  • All SDKs + MCP server
  • No credit card required

Pro

$20/mo — when your send volume grows

  • 50,000 emails/month
  • Priority deliverability
  • Email retention (30 days)
  • 50% off first year — beta

Full pricing comparison →

Compare

What you stop doing.

Next.js devs comparing MailKite, SendGrid, and Mailgun. Here's the gap.

MailKite SendGrid Mailgun
Next.js SDK (TypeScript) First-class, typed Community only Community only
Domains Unlimited, free 1 (free tier) 1 (free tier)
Inbound email Webhook, clean JSON Multipart parse Inbound routes
Auth (SPF / DKIM / DMARC) Configured for you You publish and maintain You publish and maintain
SDKs 8 languages 8 languages 7 languages
MCP / AI agent support Native Not available Not available
Credit card to start No No (but limited) No (but limited)

Still deciding? Start free and ship your first email in 60 seconds.

Before you sign up

Does this work with the Next.js App Router?

Yes — both App Router and Pages Router are fully supported. Drop a route handler in app/api/send/route.ts, import the SDK, and your first send is one POST away. The SDK is typed end-to-end so autocomplete in VS Code / Cursor walks you through every parameter.

Can I receive email in Next.js, not just send?

Yes. Point your domain at MailKite, add an inbound route in the dashboard pointing at your Next.js API route, and every email arrives as structured JSON. Your route handler verifies the webhook with verifyWebhook() and then reads the payload like any other API call.

How long until I can send my first email?

Under 60 seconds. Sign up, get an API key, install the SDK (npm i mailkite), paste the route handler above, and send. Adding a custom domain takes 2–3 minutes for DNS propagation; while you wait, the free subdomain sends immediately.

Is it actually free?

Yes. Unlimited domains, no credit card, no daily send cap. You pay only when volume grows past the free threshold — and the beta rate is 50% off your first year for the first 1,000 customers.

What happens when I exceed the free tier?

Graceful overage — your email never stops. You're notified when approaching limits and can upgrade with one click. No surprise cutoffs, no silent suspensions.

Add email to your Next.js app in 60 seconds.

Unlimited domains, free. One API route. No credit card, no SMTP config. Your first send is one install and one POST away.