Docs
Emails · Sending

Send Email

Send a single email, now or scheduled.

POST/emails

Body Parameters

fromstringrequired
Sender address. Add a display name with Name <you@yourdomain.com>. The domain must be verified.
tostring | string[]required
Recipient address, or an array of up to 50 addresses.
subjectstringrequired
Email subject line.
htmlstring
HTML body. Provide html, text, or both.
textstring
Plain-text body. Generated mail clients without HTML support will show this.
ccstring | string[]
Carbon-copy recipients.
bccstring | string[]
Blind carbon-copy recipients.
reply_tostring | string[]
Address(es) replies should go to.
scheduled_atstring
Send later: ISO 8601 (2026-11-20T09:00:00Z) or natural language (in 1 hour). Up to 30 days ahead.
headersobject
Custom email headers, e.g. { "X-Entity-Ref-ID": "123" }.
tags{ name, value }[]
Labels returned in webhooks. Letters, numbers, _ and - only.
attachments{ filename, content | path, content_type? }[]
Files to attach. content is base64; path is a public URL to fetch. 40 MB total.
template{ id, variables? }
Send a published template by ID or alias. Fills from/subject/html unless you pass them.
Idempotency-Keyheader
Optional. Repeating a request with the same key within 24 hours returns the original email instead of sending twice.
import { Resend } from 'resend';

const client = new Resend('pw_xxxxxxxxx');

const { data, error } = await client.emails.send({
  from: 'Acme <onboarding@yourdomain.com>',
  to: ['delivered@postwave.test'],
  subject: 'Hello world',
  html: '<p>It works!</p>',
});
Try itPOST/emails

No key yet? Create one in the dashboard.