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
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.
Switched from SendGrid, inbox placement went from ~92% to ~99% in two weeks.
Mark — AdRender.app
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
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
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.
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.
Watch it land in your inbox — not in spam.
No credit card · Unlimited domains on Free · First send in 60s
We emailed a verify link to . Click it and you'll land right back here — or type the 6-digit code below.
Email verified — your free account and API key are live.
Now the real thing: this button runs a POST /v1/send from your browser to .
Don't take our word for it
Open the message in Gmail → ⋮ → Show original. Read the SPF, DKIM, and DMARC results yourself. Then wire it into your Next.js app.
Open the dashboard →Primarily Next.js, but every SDK has the same API surface. No language is second-class — inbound webhooks hit any endpoint.
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=…",
});from mailkite import MailKite
mk = MailKite(api_key=os.environ["MAILKITE_API_KEY"])
mk.send(
from_="hello@myapp.dev",
to="user@example.com",
subject="Your verify link",
text="Click to verify: https://myapp.dev/verify?token=…",
)use MailKite\MailKite;
$mk = new MailKite($_ENV["MAILKITE_API_KEY"]);
$mk->send([
"from" => "hello@myapp.dev",
"to" => "user@example.com",
"subject" => "Your verify link",
"text" => "Click to verify: https://myapp.dev/verify?token=…",
]);import dev.mailkite.MailKite;
MailKite mk = new MailKite(System.getenv("MAILKITE_API_KEY"));
mk.send(SendParams.builder()
.from("hello@myapp.dev")
.to("user@example.com")
.subject("Your verify link")
.text("Click to verify: https://myapp.dev/verify?token=…")
.build());import "github.com/mailkite/mailkite-go"
mk := mailkite.New(os.Getenv("MAILKITE_API_KEY"))
mk.Send(mailkite.SendParams{
From: "hello@myapp.dev",
To: "user@example.com",
Subject: "Your verify link",
Text: "Click to verify: https://myapp.dev/verify?token=…",
})require "mailkite"
mk = MailKite.new(api_key: ENV["MAILKITE_API_KEY"])
mk.send(
from: "hello@myapp.dev",
to: "user@example.com",
subject: "Your verify link",
text: "Click to verify: https://myapp.dev/verify?token=…",
)curl -X POST https://api.mailkite.dev/v1/send \
-H "Authorization: Bearer $MAILKITE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"from": "hello@myapp.dev",
"to": "user@example.com",
"subject": "Your verify link",
"text": "Click to verify: https://myapp.dev/verify?token=…"
}' Prefer cURL or your own HTTP client? REST API docs
Email that feels like the rest of your stack. TypeScript-first, edge-ready, and zero infrastructure to maintain.
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.
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.
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.
Start free on unlimited domains. Pay only when you exceed the free volume — no hard cutoff, no silent suspension. Pro starts at $20/mo.
For solo devs and early products
$20/mo — when your send volume grows
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.
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.
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.
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.
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.
Graceful overage — your email never stops. You're notified when approaching limits and can upgrade with one click. No surprise cutoffs, no silent suspensions.
Unlimited domains, free. One API route. No credit card, no SMTP config. Your first send is one install and one POST away.
Next.js email API — send in 60s, free, no credit card.
Get your API key