Email API.
Built to deliver.

Transactional email that arrives in seconds, with a record of what happened to every message. Integrate in minutes, in the language you already use.

3,000 free emails per month Sydney, Melbourne, Singapore, Amsterdam, New York No credit card required
Official SDKs
$ npm install jetemail View package
await jetemail.email.send({
  from: "Orders <orders@yourdomain.com>",
  to: "customer@example.com",
  subject: "Order #4182 confirmed",
  html: "<h1>Thanks for your order</h1>"
});

One endpoint for everything your app sends

Signups, receipts and alerts all go out the same way, and all land in the same logs.

Signups and password resets

Verification codes and magic links, sent the moment your code calls rather than on the next run of a queue.

Reset your password

Receipts and invoices

Order confirmations and shipping notices with the PDF attached, and a record of exactly what went to whom.

Order #4182 confirmed

Alerts and account notices

Failed payments, expiring cards, usage warnings. The mail you only hear about when it does not arrive.

Your card expires in 7 days

Logs

From Address
from:*@acme.com
dana@example-mail.net
Delivered
Reset your password
28/07/2026, 09:14:03
no-reply@acme.com
m.okafor@example-mail.net
Delivered
Order #4182 confirmed
28/07/2026, 09:14:01
orders@acme.com
j.reyes@example-mail.net
Delivered
Your card expires in 7 days
28/07/2026, 09:13:58
billing@acme.com
old@example-mail.net
Rejected
Order #4179 confirmed
28/07/2026, 09:13:52
orders@acme.com
Showing 1 to 25 of 48,201 results

Attachments, batches and scheduled sends

Attach the invoice, send a hundred in one call, or hold one until Tuesday. Same endpoint either way.

Attachments and inline images

Up to 40 MB a message, with CID references for images that have to render in the body.

Batches of 100

One round trip for a hundred messages, each validated and queued on its own so one bad address does not take the rest with it.

Scheduled sends

Hand us a time up to 30 days out and we hold the message until then. Cancel it any time before it goes.

Idempotency keys

Set one and a timeout or a worker restart cannot double-send. The repeat replays the original response.

Delivery events pushed to your endpoint

Point as many endpoints at us as you like and pick what each one hears about. Every delivery is signed, so you can prove it came from us.

If your endpoint is down we keep trying for hours, and every attempt is in the log with the status code it came back with.

Event reference

Webhooks

Configure endpoints to receive real-time notifications

Add Endpoint
NameURLEventsStatus
Ordershttps://api.acme.com/hooks/jetemail6 events active
Billinghttps://acme.com/hooks/receipts4 events active
Analyticshttps://etl.acme.com/email-events11 events active
Legacy CRMhttps://crm.acme.internal/webhook2 events inactive
Events 11 selected
Outbound 11 / 11
Select all · Clear
Outbound: Queued Outbound: Delivered Outbound: Bounced Outbound: Rejected Outbound: Spam Outbound: Dropped Outbound: Opened Outbound: Clicked Outbound: Complaint Outbound: Virus Outbound: Deferred

Logs

delivered outbound
Webhook: Orders · To: dana@example-mail.net
HTTP 200 · 04:15:32
clicked outbound
Webhook: Orders · To: m.okafor@example-mail.net
HTTP 200 · 04:15:29
bounced outbound
Webhook: Orders · To: old@example-mail.net
HTTP 503 · 04:14:58
opened outbound
Webhook: Billing · To: j.reyes@example-mail.net
HTTP 200 · 04:14:11

A key per app, with its own ceiling

Issue as many as you need and give each one only what it should have. Turn one off without touching the others.

A monthly quota on each key

Cap a key at 1,000, 10,000, 100,000 or leave it unlimited. A runaway loop or a compromised key spends its own allowance and stops.

IP restrictions

Pin a key to the addresses it should be used from. Single IPs or CIDR ranges, IPv4 and IPv6. Leave it empty and any address works.

Approved domains per key

A key can be limited to the domains it is meant to send for, or allowed every domain on the account including ones you add later.

Keys

API Documentation Create Key
NameStatusUsageQuota
Production appActive48,201Unlimited
StagingActive1,20410,000
Acme LtdActive6,94010,000
Old billing workerInactive01,000

Monthly Quota

10000 emails/month
1K10K100K

Set to 0 for unlimited

IP Restrictions

203.0.113.24 10.0.0.0/24 Add IP…

Press Enter to add. Leave empty to allow all IPs.

Or install a plugin and write nothing

Paste a key, pick a from address, and everything the site already sends goes out through us.

WordPress

Point every email WordPress sends at your JetEmail account, including the ones your theme and plugins send. Keeps a log in wp-admin with a resend button and automatic purging.

Plugins > Add New > JetEmail

EmDash CMS

Registers as EmDash's email provider, so magic links, password resets and form submissions all go out through JetEmail. Add it to your Astro config and paste a key into the admin panel.

npm install @jetemail/emdash

Frequently asked questions

Send your first email today

Point one application at us and see where the mail lands. The first 3,000 emails a month are free and stay free, and nobody asks for a card.