# Transactional Email API: 5,000 Free, Then $15/mo URL: https://warmerly.com/transactional-email > A transactional email API for password resets, receipts and sign-in links: 5,000 a month free, 50,000 for $15. Compare Resend, SendGrid, Postmark, SES. Transactional email API # Transactional email that actually arrives. Send password resets, verification emails, receipts and product notifications through infrastructure built around deliverability. From $15/month. No complicated pricing. [Start sending free](https://app.warmerly.com/register?cta=transactional_page_start_free)[Continue with Google](https://app.warmerly.com/register?cta=transactional_page_google&provider=google)[Read the docs](https://docs.warmerly.com/transactional) Send your first email in under 5 minutes. - Node.js - Python - PHP - cURL **reset-7f3a9c**Sent once, even on retry. Example data **mail.acme.example**SPF, DKIM and DMARC pass. Example data What is Warmerly's transactional email API? Warmerly's transactional email API sends the emails your app triggers, such as password resets and receipts, over a REST API on infrastructure kept separate from cold outreach. The Free plan includes 5,000 emails a month with no card, and paid plans start at $15 a month for 50,000. One request ## Send from any language Create a sending key and make one HTTP request, from any language. Every email gets an id you can look up, with its full delivery timeline. See the code samples Example data, press send #### POST /emails Demo from no-reply@mail.acme.example to jane@example.org subject Reset your password - 202 Accepted - Delivered to jane@example.org **Sending-only keys**, limited to one domain Delivery events ## A timeline for every email When it was accepted for delivery, then delivered, deferred, bounced or marked as spam, with the receiving server's own response. From the API and the dashboard. [Read the delivery docs](https://docs.warmerly.com/transactional) Example data, try the outcomes #### Email timeline jane@example.orgOne email is one recipient - Accepted for delivery - Delivered250 2.0.0 OK, queued as 4F2c9 Nothing to suppress. The address stays on your list. **Bounces and complaints** join one suppression list What counts ## Pay for email that leaves us An email that fails on our side and is never handed to the recipient's mail server doesn't count toward your allowance or your overage. See pricing Example data #### Your allowance this month Free plan **5,000**emails a month included - Delivered, bounced or complainedCounted - Skipped, on your suppression listNot counted - Failed on our side, never handed overNot counted Overage is off: 10% extra free, then sends are refused until next monthOff **Nothing is charged** unless you switch overage on 5,000emails a month free, no card required 99.9%monthly API availability, with service credits if we miss it EUsending servers, with no cold outreach or warmup through them $15a month for 50,000 emails Transactional API ## From one API call to delivered. Follow an email from your app through sending to its delivery events. How it works ## From domain to first email in three steps Most of the work is pasting DNS records. The API call is the short part. - 1 ### Step 1: Add your sending domain For example mail.acme.com. Warmerly registers it for sending and hands you the DNS records for it. Sending domain mail.acme.com Add domain Use a subdomain you don't send cold outreach from. - 2 ### Step 2: Publish a few DNS records and verify Three DKIM CNAMEs, an MX and an SPF record on a bounce. subdomain, and DMARC. None of them touch your inbound mail, and Verify tells you exactly which record is still missing. mail.acme.com6 of 6 found - CNAMEk7f2…._domainkeyk7f2….dkim.amazonses.comDKIM - CNAMEq3x9…._domainkeyq3x9….dkim.amazonses.comDKIM - CNAMEm1c4…._domainkeym1c4….dkim.amazonses.comDKIM - MXbounce10 feedback-smtp.eu-north-1.amazonses.comBounces - TXTbouncev=spf1 include:amazonses.com ~allSPF - TXT_dmarcv=DMARC1; p=noneDMARC - 3 ### Step 3: Send from your app Create a sending key and make one HTTP request, from any language. Every email gets an id you can look up, with its full delivery timeline. curl -X POST https://app.warmerly.com/api/v1/transactional/emails \ -H "Authorization: Bearer wm_tx_…" \ -H "Idempotency-Key: reset-7f3a9c" \ -H "Content-Type: application/json" \ -d '{ "from": "Acme ", "to": "jane@example.org", "subject": "Reset your password", "html": "

Click the link to reset your password.

" }'const res = await fetch("https://app.warmerly.com/api/v1/transactional/emails", { method: "POST", headers: { Authorization: "Bearer wm_tx_…", "Idempotency-Key": "reset-7f3a9c", "Content-Type": "application/json", }, body: JSON.stringify({ from: "Acme ", to: "jane@example.org", subject: "Reset your password", html: "

Click the link to reset your password.

", }), }); console.log(res.status, await res.json());import requests res = requests.post( "https://app.warmerly.com/api/v1/transactional/emails", headers={ "Authorization": "Bearer wm_tx_…", "Idempotency-Key": "reset-7f3a9c", }, json={ "from": "Acme ", "to": "jane@example.org", "subject": "Reset your password", "html": "

Click the link to reset your password.

", }, ) print(res.status_code, res.json())$ch = curl_init("https://app.warmerly.com/api/v1/transactional/emails"); curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ "Authorization: Bearer wm_tx_…", "Idempotency-Key: reset-7f3a9c", "Content-Type: application/json", ], CURLOPT_POSTFIELDS => json_encode([ "from" => "Acme ", "to" => "jane@example.org", "subject" => "Reset your password", "html" => "

Click the link to reset your password.

", ]), ]); $response = curl_exec($ch); 202 Accepted { "id": "9b1e…", "status": "sent", "duplicate": false } ### Or let your coding agent set it up Copy this prompt into Claude Code, Cursor, Codex or any agent with your project open. It adds your domain, waits while you publish the DNS records, writes the send function with safe retries, and sends a test email to you. Deliverability ## Why it lands in the inbox Warmerly is also an outreach tool, so we built this the other way round: the email your users asked for goes out on a path your campaigns can never touch. Your cold outreach and warmup Your own mailboxes never the same path Your app's email Transactional sending, isolated per workspace Delivered Established sending infrastructureYour mail leaves from established, high-volume sending infrastructure, so a new domain doesn't start on a cold IP that has to be warmed up first. Nothing else rides alongWarmerly never puts cold outreach or warmup through it. Each workspace is isolated from every other, so if another sender's list bounces, their sending pauses and yours doesn't. Aligned to your domainDKIM signs as your domain with 2048-bit keys that are rotated for you, with no DNS changes. Bounces return to a bounce. subdomain of yours, so SPF aligns too, and DMARC can pass on both. Bad addresses stop themselvesAn address that hard-bounces or marks you as spam is suppressed automatically, so you don't keep mailing it and paying for it in reputation. Built in ## Built for the email that has to arrive Each of these is enforced in code, not left to a setting you have to remember. ### Retries that never double-send Send an Idempotency-Key header and a repeated request returns the first email instead of sending a second one, even when two retries race each other. ### Queued, not dropped If a send is throttled or the mail server can't be reached, the email waits and is retried with backoff for up to 24 hours, under the same id. You don't write the retry loop. ### A timeline for every email When it was accepted for delivery, then delivered, deferred, bounced or marked as spam, with the receiving server's own response. From the API and the dashboard. ### One suppression list Hard bounces and spam complaints join your workspace's suppression list, the same one your campaigns use. Skipped recipients are recorded, so you can see why. ### Keys that can only send Give your app a sending-only key, optionally limited to one domain. It can't read your email log, change domains, or touch anything else in Warmerly. ### Sent from the EU Mail goes out from servers in the EU. Warmerly sends no cold outreach or warmup through them. Pricing ## Transactional email pricing One email is one recipient. Every plan keeps each email's content for 30 days. Nothing past your allowance is ever charged unless you switch overage on; without it you get 10% extra free, then sends are refused until the next month. ### How many emails will you send? One email is one recipient. Pick a monthly number, or estimate it from your users: sign-up, verification and password-reset emails add up to about four per user a month for most apps. Emails a month 1k 10k 100k 1M 5M 10,000 emails Not sure? Estimate it users ×emails each Best fit Starter$15/mo - Starter includes 50,000 emails. Prices in USD. Tax is added at checkout where it applies. Start here ### Free $0 free forever, no card - 5,000 emails a month - Up to 200 a day - 3 sending domains - No overage billing, ever [Start sending free](https://app.warmerly.com/register?cta=transactional_pricing_free) ### Starter $15/mo billed monthly - 50,000 emails a month - 10 sending domains - Optional overage at $0.60 per 1,000, off unless you switch it on [Get started](https://app.warmerly.com/register?cta=transactional_pricing_paid) ### Growth $29/mo billed monthly - 100,000 emails a month - 25 sending domains - Optional overage at $0.60 per 1,000, off unless you switch it on [Get started](https://app.warmerly.com/register?cta=transactional_pricing_paid) ### Scale $129/mo billed monthly - 200,000 emails a month - Unlimited sending domains - Optional overage at $0.55 per 1,000, off unless you switch it on - Dedicated IP available, $29/mo [Get started](https://app.warmerly.com/register?cta=transactional_pricing_paid) Every account starts on Free, with no card. Choose a paid plan in the dashboard when you need more. This is separate from the [outreach and warmup plans](https://warmerly.com/pricing): a workspace can have either, both or neither. Compare ## Warmerly vs Resend: email API pricing At every volume Resend publishes, Warmerly costs less, and overage only happens if you turn it on. Resend is still the better pick if you need an SMTP relay, webhooks, templates or open and click tracking today; those are on our roadmap, not built. The [full Resend comparison](https://warmerly.com/transactional-email/resend-alternative) shows the code change line by line. [Start sending free](https://app.warmerly.com/register?cta=transactional_compare_resend) Warmerly and Resend transactional email prices in USD | Volume | Warmerly | Resend | |---|---|---| | Free plan | 5,000 a month, 200 a day | 3,000 a month, 100 a day | | 50,000 emails a month | $15/mo | $20/mo (Pro) | | 100,000 emails a month | $29/mo | $35/mo (Pro) | | 200,000 emails a month | $129/mo | $160/mo (Scale) | | 500,000 emails a month | $279/mo | $350/mo (Scale) | | 1,000,000 emails a month | $499/mo | $650/mo (Scale) | | 2,500,000 emails a month | $899/mo | $1,150/mo (Scale) | | Overage per 1,000 | $0.60 down to $0.35, only if you switch it on | $0.90 down to $0.46 | | Dedicated IP | $29/mo on Scale | $30/mo | Resend prices are those published on resend.com/pricing as of September 2026. Check resend.com for current rates. Alternatives ## Compare with other email APIs Head-to-head pages with prices at four volumes, a feature table, and the cases where the other one is the better pick. - [Warmerly vsResendSame request fields, $15 vs $20 for 50k.Resend alternative](https://warmerly.com/transactional-email/resend-alternative) - [Warmerly vsSendGridA free plan that doesn't expire, and $29 vs $34.95 for 100k.SendGrid alternative](https://warmerly.com/transactional-email/sendgrid-alternative) - [Warmerly vsPostmarkSame idea of separate streams; $15 vs $55 for 50k.Postmark alternative](https://warmerly.com/transactional-email/postmark-alternative) - [Warmerly vsMailgunSame send fields; $15 vs $35 for 50k.Mailgun alternative](https://warmerly.com/transactional-email/mailgun-alternative) - [Warmerly vsAmazon SESThe same SES sending with the plumbing built. Raw SES is cheaper per email.Amazon SES alternative](https://warmerly.com/transactional-email/amazon-ses-alternative) ### Head to head - [Mailgun vs SendGrid](https://warmerly.com/transactional-email/mailgun-vs-sendgrid) - [Resend vs SendGrid](https://warmerly.com/transactional-email/resend-vs-sendgrid) - [Postmark vs SendGrid](https://warmerly.com/transactional-email/postmark-vs-sendgrid) - [Resend vs Postmark](https://warmerly.com/transactional-email/resend-vs-postmark) - [Amazon SES vs SendGrid](https://warmerly.com/transactional-email/amazon-ses-vs-sendgrid) - [Mailgun vs Postmark](https://warmerly.com/transactional-email/mailgun-vs-postmark) - [Amazon SES vs Mailgun](https://warmerly.com/transactional-email/amazon-ses-vs-mailgun) ### What each provider costs - [Resend pricing](https://warmerly.com/transactional-email/resend-pricing) - [SendGrid pricing](https://warmerly.com/transactional-email/sendgrid-pricing) - [Postmark pricing](https://warmerly.com/transactional-email/postmark-pricing) - [Mailgun pricing](https://warmerly.com/transactional-email/mailgun-pricing) - [Amazon SES pricing](https://warmerly.com/transactional-email/amazon-ses-pricing) - [Email API cost calculator](https://warmerly.com/transactional-email/cost-calculator) ### Developer guides - [Send email with Node.js](https://warmerly.com/transactional-email/integrations/nodejs) - [Send email with Next.js](https://warmerly.com/transactional-email/integrations/nextjs) - [Send email with Django](https://warmerly.com/transactional-email/integrations/django) - [Send email with Laravel](https://warmerly.com/transactional-email/integrations/laravel) - [Send email with Supabase](https://warmerly.com/transactional-email/integrations/supabase) - [All integration guides](https://warmerly.com/transactional-email/integrations) In writing ## Guarantees What we commit to in writing. The binding wording is in [section 18A of our Terms](https://warmerly.com/terms#guarantees). 99.9% monthly API availabilityIf we miss it, you get a service credit on that month's transactional fee: 10% below 99.9%, 25% below 99.0%, 50% below 95.0%. Ask within 30 days at support@warmerly.com. Credits are the only remedy. Maintenance announced 48 hours ahead on status.warmerly.com doesn't count, and neither do problems outside our control: recipient servers, your DNS, a region-wide AWS outage. You only pay for email that leaves usAn email that fails on our side and is never handed to the recipient's mail server doesn't count toward your allowance or your overage. Authenticated before it sendsWe don't promise inbox placement; nobody honestly can. What we do promise is that every sending domain passes SPF, DKIM and DMARC before it can send, and is re-checked automatically after that. What's next ## On the roadmap Sending, verification, suppression and delivery tracking are live today. Next up: - SMTP relay, for apps that can't call a REST API - Webhooks that push delivery events to your app - Templates - Open and click tracking Fair use ## Limits today 600emails a minute per workspace 50addresses each in to, cc and bcc FAQ ## Transactional email API questions Not here? The [API docs](https://docs.warmerly.com/transactional) cover every field, or email support@warmerly.com. How much does the Warmerly transactional email API cost?+ Free covers 5,000 emails a month (up to 200 a day) with no card. Starter is $15 a month for 50,000, Growth is $29 for 100,000, and Scale runs from $129 for 200,000 to $899 for 2,500,000. It is a separate subscription from Warmerly's outreach plans: you can have either, both or neither. What counts as one email on Warmerly transactional?+ One email is one recipient. A message sent to one address counts once; the same message to one address in to and two in cc counts three times. Recipients skipped because they are on your suppression list do not count, and neither does an email that fails on Warmerly's side before it is handed to the recipient's mail server. What happens if I send more than my transactional plan includes?+ Nothing is charged unless you switch overage on. Without it, you can go 10% past your monthly allowance free, so an unexpected spike does not stop password resets mid-month; past that, sends are refused until the next month or until you upgrade. With overage switched on, extra email costs $0.60 per 1,000 on Starter and Growth, falling to $0.35 on the largest Scale plan. Why keep transactional email apart from cold email?+ Inbox providers judge mail partly by where it comes from and by the domain behind it. If password resets shared a sender with a cold campaign that drew complaints, the resets would pay for it. Warmerly's outreach and warmup run on your mailboxes; your app's email runs on separate transactional infrastructure, and the two never share a sending server or a domain. Is Warmerly a good Resend alternative?+ On price, yes: at every published volume Warmerly costs less (for example $29 against $35 for 100,000 emails a month, as of September 2026), the free plan is larger, and overage is cheaper and opt-in. Resend is the better pick today if you need an SMTP relay, delivery webhooks, templates or open and click tracking, which Warmerly does not have yet, or official SDKs in many languages; Warmerly is a REST API. Does Warmerly guarantee transactional email uptime?+ Yes. The transactional email API is covered by a 99.9% monthly availability commitment. If Warmerly misses it, you get a service credit on that month's transactional fee: 10% below 99.9%, 25% below 99.0%, 50% below 95.0%. Request it within 30 days by emailing support@warmerly.com. The full terms, including what is excluded, are in section 18A of the Terms of Service. What is transactional email?+ Email your application sends to one person because of something they did: a password reset, a sign-in link, a receipt, a notification. It is expected and time-sensitive, unlike marketing or cold outreach, which is why it should never share sending reputation with them. What sends the email?+ Transactional sending infrastructure in the EU, separate from everything else in Warmerly: it never carries cold outreach or warmup. Each workspace is isolated, so a workspace whose bounce or complaint rate gets too high is paused on its own without affecting anyone else. Which DNS records do I add, and will they affect my existing email?+ A few, all shown in the dashboard ready to copy: three DKIM CNAMEs, an MX and an SPF TXT on bounce.yourdomain (where bounce reports are received), and a DMARC TXT. None of them touch your domain's own inbound mail. The only MX is on bounce.yourdomain, so your mailboxes keep receiving exactly where they do today, and your existing SPF record is left alone. Do I need a separate domain?+ Use a domain or subdomain you don't send cold outreach from, such as mail.yourcompany.com. Warmerly refuses a domain that is already used for anything else in Warmerly. A subdomain of a domain that already receives mail is ideal. What happens when a recipient marks an email as spam?+ The complaint is reported back to us, the email's status becomes complained, and the address is added to your workspace's suppression list, just like a hard bounce. Later sends to it are skipped and recorded as suppressed. Can I get a dedicated IP?+ Yes, on any Scale plan, for $29 a month. Most apps don't need one: a dedicated IP's reputation rests on your own sending alone, so it suits senders with high, steady volume. Everyone else is better served by the shared sending infrastructure, where each workspace is still isolated from every other. How many sending domains can I verify?+ 3 on Free, 10 on Starter, 25 on Growth and unlimited on Scale. Every domain has to pass SPF, DKIM and DMARC before it can send, and its records are re-checked automatically after that. Is it an alternative to Amazon SES?+ If you want to send without building the parts around the sending yourself, yes: domain verification with ready-to-copy DNS records, bounce and complaint handling, a suppression list, retries and a delivery timeline for every email come with it. If you only need raw sending at the lowest possible price and have engineers to build that plumbing, sending through SES directly, at $0.10 per 1,000 emails, is cheaper. Is there an SMTP relay?+ Not yet. Sending is through the REST API, which any language that can make an HTTP request can call. An SMTP relay, delivery webhooks to your app, templates and open/click tracking are on the roadmap. Sending cold outreach too? Warmerly's [email warmup](https://warmerly.com/how-it-works) keeps those mailboxes out of spam, and the free [deliverability checker](https://warmerly.com/tools/deliverability-checker) audits any domain's SPF, DKIM and DMARC in seconds. See [outreach pricing](https://warmerly.com/pricing), the [suppression list](https://warmerly.com/features/suppression-list) both products share, or send from a conversation with [ChatGPT or Claude](https://warmerly.com/ai). More from Warmerly ## The rest of your sending path Transactional email is one product on the same account, the same workspace and the same bill. - [Email infrastructureOneMailDomains and mailboxes set up and authenticated for you.](https://warmerly.com/onemail) - [DeliverabilityInbox PlacementRun placement tests from your mailboxes. Results are marked as limited accuracy for now.](https://warmerly.com/features/inbox-placement) - [ProspectingEmail VerificationCheck and clean your lists to improve deliverability.](https://warmerly.com/features/email-verification) Pick your volume ## How many emails a month? Choose the allowance closest to what your app sends. You can change plan any time from the dashboard. Free 5,000emails a month for Free Up to 200 a day, 3 sending domains, no card. [Start sending free](https://app.warmerly.com/register) Summarize with AI [ChatGPT](https://chatgpt.com/?q=In%20a%20succinct%20way%20(few%20short%20paragraphs%20and%2For%20bullets)%2C%20tell%20me%20what%20it%27s%20about%20and%20key%20highlights.%0A%0Ahttps%3A%2F%2Fwarmerly.com%2Ftransactional-email)[Claude](https://claude.ai/new?q=In%20a%20succinct%20way%20(few%20short%20paragraphs%20and%2For%20bullets)%2C%20tell%20me%20what%20it%27s%20about%20and%20key%20highlights.%0A%0Ahttps%3A%2F%2Fwarmerly.com%2Ftransactional-email)[Perplexity](https://www.perplexity.ai/search?q=In%20a%20succinct%20way%20(few%20short%20paragraphs%20and%2For%20bullets)%2C%20tell%20me%20what%20it%27s%20about%20and%20key%20highlights.%0A%0Ahttps%3A%2F%2Fwarmerly.com%2Ftransactional-email) [Plain-text version for LLMs](https://warmerly.com/transactional-email/llms.txt)[llms.txt](https://warmerly.com/llms.txt) ## Send your app's email on a path of its own Create a free Warmerly account, add a sending domain and send your first email from the dashboard. 5,000 emails a month free, no card required. [Start sending free](https://app.warmerly.com/register?cta=transactional_page_cta)[API docs](https://docs.warmerly.com/transactional) --- Source: https://warmerly.com/transactional-email Site index: https://warmerly.com/llms.txt Full content: https://warmerly.com/llms-full.txt