Send email from your apps
Password resets, receipts and welcome emails go out from your own domain with one API call, and replies land in the same inbox as the rest of your mail.
curl https://www.mailmoose.dev/api/v1/messages \
-H "Authorization: Bearer $MAILMOOSE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"from": "MyApp <hello@myapp.dev>",
"to": "jane@example.com",
"subject": "Reset your password",
"html": "<a href=\"https://myapp.dev/reset\">Choose a new password</a>",
"confirmNewRecipient": true
}'201 Created
{ "messageId": "…", "threadId": "…" }What you get
From your own domain
Connect your domain once and add the DNS records MailMoose shows you. Your app then sends from any address you create on it, such as hello@yourapp.com.
Replies come back to you
Send from an address that receives its mail in MailMoose, and a customer's answer to a receipt or a password reset lands in that inbox, next to what you sent. Your AI agent can read and answer it over MCP.
One HTTP call, any language
JSON over HTTPS with a bearer key. There is no SDK to install, so Node, Python, PHP, Go or a shell script all work the same way.
A key for each app
Give every app its own send-only key with a daily limit, and revoke one without touching the others.
Moving from Resend?
MailMoose takes Resend's request format: a name in from, to as one address or a list, html, text and reply_to. Most apps need a new URL, a new key and a few small changes, which the guide lists field by field.
Not there yet: attachments, an SMTP relay, an SDK and delivery webhooks. If your app needs one of those, stay on Resend for now.
Read the migration guideEmail API questions
What can I send with it?
Email your app sends on its own: password resets, sign-in links, receipts, welcome emails and notifications. It isn't built for newsletters, so there is no audience management or unsubscribe handling.
What does sending cost?
API calls are free, and sending counts per recipient. The free plan allows 50 recipients per 30 days, at most 20 a day. The paid plan includes 500 a month, then $0.003 per extra recipient from prepaid credit. See pricing.
How fast can I send?
Up to 100 recipients an hour for your account. Each API key also has its own limit, 100 messages per 24 hours by default. Need more? Talk to us.
Why does the first email to a new address need confirming?
A send to an address you have never emailed returns a 409 until you pass
"confirmNewRecipient": true. It stops an automated caller from quietly mailing strangers. An app that sends password resets passes it on every send, once you have approved that flow.Is there an SDK, SMTP or a delivery webhook?
Not yet. Call the API with fetch or any HTTP client. A 201 means the sending provider accepted the email, and there is no delivery status over the API. Attachments, custom headers and scheduled sending aren't supported either: a request with them gets a 400 and nothing is sent.
Everything else lives in the docs.