Ada Lovelace
To: Acme Billing
Hello,
The VAT line on invoice 4192 looks doubled, so the total is higher than the quote. Could you check it before Friday?
Thanks, Ada

The mailbox, as an API
A REST API, a typed SDK, a command line, webhooks and an MCP server over the same mailbox the app uses. Code, agents and people all drive one inbox.
npm install @nextmail/sdkRuns where you deploy, and inside the tools you build with.
REST, the SDK, the command line and MCP reach the same operations, with the same scopes and the same limits.
Your mailbox
msg_4b7e05d3862c1f0a44b19e2csent
Same mailbox, whichever door the message came through.
Anything that speaks HTTP can send. TypeScript, Python, Ruby, PHP, Go, Java and C# get typed clients, and every message reports back as it is queued, sent and delivered.
npm install @nextmail/sdk1import { init, nextmail } from '@nextmail/sdk'23init({ apiKey: process.env.NEXTMAIL_API_KEY })45const email = await nextmail.emails.send({6 from: 'Acme Billing <billing@acme.com>',7 to: 'ada@example.de',8 subject: 'Your September invoice',9 html: '<p>The invoice is attached.</p>',10})1112console.log(email.id, email.status)
What happens next
Threads, search, labels, drafts and contacts are calls too, on the mailbox your team already reads.
Inbox
Everything addressed to you, minus spam.
9:41
Ada Lovelace
9:12
Northwind Cloud
8:47
Linus Chen
8:30
Grace Hopper
7:20
Margaret Hamilton
Ada Lovelace
To: Acme Billing
Hello,
The VAT line on invoice 4192 looks doubled, so the total is higher than the quote. Could you check it before Friday?
Thanks, Ada
What your clicks call
Open a thread, star it, search or reply.
The OpenAPI 3.1 document is public and needs no key, and the SDK has to match it before a release.
A retry never sends twice, a send can wait up to a year, and an undo window lasts up to fifteen minutes.
await nextmail.emails.send({ from: 'Acme Billing <billing@acme.com>', to: 'ada@example.de', subject: 'Your September invoice', html: invoiceHtml, attachments: [{ fileId: invoicePdf.id }],}, { idempotencyKey: 'invoice:inv_2026_09_4192',})What happens
Accepted and sent. The PDF is large, so it travels as a download link.
The connection drops before your code reads the answer.
The SDK sends it again with the same key.
Nextmail returns the first result instead of sending twice.
A retry never sends twice.
51 events, signed with HMAC, retried up to eight times over about 27 hours, and replayable.
Deliveries
Every POST to acme.com, newest first.
| When | Event | Status | Try | Took |
|---|---|---|---|---|
Use the typed SDK, script the CLI, connect an agent over MCP, or speak plain HTTP.
await nextmail.emails
A client with zero dependencies for Node 20 and up, Bun, Deno and Cloudflare Workers.
Read the docs: TypeScript SDK$ nextmail send --to ada@example.de --subject "Hi" --text "Hello" --dry-run --json
{ "dryRun": true,
"request": {
"method": "POST",
"url": "https://api.nextmail.sh/emails",
"body": { "to": "ada@example.de", "subject": "Hi", "text": "Hello" } } }
exit 0
Every SDK method is a command, with --json, --dry-run and exit codes.
Read the docs: Command linePoint a client at one URL and sign in. The tools follow what you approve.
Read the docs: MCP serveroe_live_9f2c1a4b7e05…kX7f
Scoped keys with a sending address, an expiry and a log of every request.
Read the docs: API keys{ "openapi": "3.1.0", "info": { "title": "Nextmail API", … }, "paths": { … 404 }, "components": { … }}The whole contract is one public document, readable without a key.
Read the docs: OpenAPI 3.1Coding agents and app builders wire up sending from a single prompt. Your key stays on the server.
Coding agent
Ask Claude Code to add sending to your codebase.
Coding agent
Let the Cursor agent wire up sending in your repo.
Coding agent
Hand Codex the prompt and review the change it makes.
Coding agent
Paste the prompt into Copilot agent mode in VS Code.
Coding agent
Let Cascade add sending to your project.
Coding agent
Run the prompt in Gemini CLI from your project folder.
Coding agent
Paste the prompt into a T3 Code thread and review the diff.
App builder
Add a send route to the Next.js app v0 builds.
App builder
Give the app Bolt builds a server route that sends.
App builder
Send from a Supabase Edge Function in your Lovable app.
App builder
Add an Express route that sends from your Replit app.
App builder
Add a send route to the Next.js site Modulify builds.
Switching
Pick the one you are leaving. Your code converts call by call, contacts, templates and webhooks come across with one key where the provider allows it, and old mail is copied from the old mailbox or an export.
Migrate from Resend
Keep your code on the compatible API, or convert it.
Google WorkspaceWho it is for
Addresses for everyone, members never counted as seats.
listThreads({ folder: 'inbox',})Inbox
The same mailbox over an API, an SDK, a CLI and MCP.
Reply to Ada and tell her the invoice is fixed.
An inbox your agent can work, with access you approve.
Launch moved to the 14th
We moved the launch to the 14th so the integrations team can finish. I will own the changelog. Could you review the press note by Friday?
Your September invoice
€42.00 is due on 14 October.
Your Lisbon boarding pass
Gate B12, boarding from 06:40.
Dinner on Friday?
Have you tried the new place by the river?
A free address at openemail.uk, with the client behind it.