Send in one call
curl -X POST https://api.usemektup.com/v1/emails \
-H "Authorization: Bearer $MEKTUP_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"from": "hello@yourapp.com",
"to": "new.user@example.com",
"subject": "Your sign-up code",
"text": "Your code is 482 913. It expires in 10 minutes."
}'const res = await fetch("https://api.usemektup.com/v1/emails", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.MEKTUP_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
from: "billing@yourapp.com",
to: customer.email,
subject: `Receipt for order ${order.id}`,
html: renderReceipt(order),
attachments: [{ filename: "receipt.pdf", contentType: "application/pdf", content: pdfBase64 }],
replyTo: "support@yourapp.com",
}),
});
// 202 { messageId, envelope } 429 over a limit 422 suppressed addressimport os, requests
r = requests.post(
"https://api.usemektup.com/v1/emails",
headers={"Authorization": f"Bearer {os.environ['MEKTUP_API_KEY']}"},
json={
"from": "alerts@yourapp.com",
"to": "ops@yourapp.com",
"subject": "Backup finished",
"text": "Nightly backup completed in 4 minutes.",
},
timeout=20,
)
r.raise_for_status()Fields: from, to, cc, bcc, subject, text and/or html, attachments (base64, up to 10 MB each and 25 MB per request), replyTo, and inReplyTo to answer a message in its own thread. The same call is the send_email MCP tool and mektup send-email in the CLI (npx mektup-cli).
What you get with it
- Your domain, signed: Mektup generates a DKIM key per domain and gives you the SPF and DMARC records to add.
- Replies that arrive: mail back to
hello@yourapp.comlands in its mailbox, readable by API, webhook, webmail and IMAP. - The real delivery answer: sent, deferred or bounced, with the receiving server's own words.
- A suppression list that stops sends to dead addresses before they hurt your reputation.
- SMTP too: anything that can't call an API sends through
mail.usemektup.comon 465 or 587.
Limits and price
Starter is $20 a month for 50,000 sent recipients a month, up to 2,000 a day, 300 an hour and 60 per five minutes, across 25 domains with unlimited mailboxes. Received mail is not counted. Over a limit the API answers 429 and SMTP 450; nothing is queued behind your back.
| 50,000 emails a month | Price | Receives into a mailbox |
|---|---|---|
| Mektup Starter | $20 | Yes |
| Resend Pro | $20 | Webhook; Inboxes in private beta |
| SendGrid Essentials | $19.95 | Inbound Parse webhook |
| Mailgun Foundation | $35 | Inbound routes |
| Postmark Pro | $16.50 for 10,000, then $1.30 per 1,000 | Inbound webhook |
From each company's pricing page on 23 October 2026.