Sending

Send email API

The api.email send email API delivers transactional email — password resets, login codes, receipts, invitations — with one HTTPS request. Post JSON, get an id back, and follow every email through delivery webhooks. Prefer SMTP? The same key works there too.

  • One request to POST https://api.email/v1/emails
  • Idempotency keys, so a retried request never sends twice
  • HTML and text, attachments, tags and scheduled sends
  • Delivered, bounced and complained events as signed webhooks
curl https://api.email/v1/emails \
  -H "Authorization: Bearer $API_EMAIL_KEY" \
  -H "Content-Type: application/json" \
  -d '{"from": "Acme <[email protected]>", "to": "[email protected]",
       "subject": "Reset your password", "text": "Reset it here: https://acme.com/r/8f2c"}'
How it works

From zero to the first email in three steps

1. Add your domain

Add two CNAME records to your DNS: one for the sending subdomain, one for DKIM. We check them live.

2. Create an API key

Use separate keys for development, staging and production. Test keys never deliver real email.

3. Send

POST the sender, recipient, subject and content. Store the returned id next to your own records.

Features

The parts of sending email you don't want to build

Idempotency keys

Send an Idempotency-Key per logical email. Retries return the original result.

Scheduled sends

Pass scheduled_at to queue an email for later, and cancel it if plans change.

Attachments

Base64 files in the same JSON request, up to 10 MB per message.

Tags

Label emails by type to filter logs and count bounces per flow.

Delivery webhooks

Signed events for sent, delivered, bounced, complained, opened and clicked.

Suppression list

Hard bounces and complaints are blocked automatically to protect your reputation.

Prefer SMTP? Use smtp.api.email, port 587 (STARTTLS) or 465 (TLS), username api and your API key as the password. SMTP settings →

Guides

Send email from your stack

Step-by-step guides with complete, copy-paste code. No SDK required.

FAQ

Send email API questions

What is a send email API?

A send email API lets your application send email with an HTTPS request instead of talking SMTP to a mail server. You post the sender, recipients and content as JSON; the provider signs the message, delivers it, handles retries and bounces and reports what happened through webhooks.

Is there a free tier?

Yes. The free plan includes 3,000 emails a month (100 a day) on up to 3 domains, with inbound email included. No credit card is required. Pricing →

Should I use the REST API or SMTP?

Use the REST API for new code: it is one request, returns an email id you can track and supports idempotency keys. Use SMTP when a framework, CMS or device can only speak SMTP. Both use the same API key, logs and webhooks.

How fast is delivery?

Most messages are handed to the recipient's mail server within seconds of your request. You get an email.delivered webhook when the receiving server accepts the message, or email.bounced if it refuses it.

Can I schedule emails for later?

Yes. Add scheduled_at with an ISO 8601 timestamp to POST /v1/emails and the email is queued until then. You can cancel a scheduled email before it is sent.

Get API key

Create your api.email account

What do you need?

Early access: accounts open in batches. By continuing you agree to the Terms and Privacy Policy.