Skip to main content
POST
/
emails
import { Resend } from 'resend';

const resend = new Resend('re_xxxxxxxxx');

const { data, error } = await resend.emails.send({
  from: 'Acme <onboarding@resend.dev>',
  to: ['delivered@resend.dev'],
  subject: 'hello world',
  html: '<p>it works!</p>',
  replyTo: 'onboarding@resend.dev',
});
{
  "id": "49a3999c-0ce1-4ea6-ab68-afcd6dc2e794"
}

Body Parameters

from
string
required
Sender email address.To include a friendly name, use the format "Your Name <sender@domain.com>".
to
string | string[]
required
Recipient email address. For multiple addresses, send as an array of strings. Max 50.
subject
string
required
Email subject.
bcc
string | string[]
Bcc recipient email address. For multiple addresses, send as an array of strings.
cc
string | string[]
Cc recipient email address. For multiple addresses, send as an array of strings.
html
string
The HTML version of the message.
text
string
The plain text version of the message.
If not provided, the HTML will be used to generate a plain text version. You can opt out of this behavior by setting value to an empty string.
react
React.ReactNode
The React component used to write the message. Only available in the Node.js SDK.
headers
object
Custom headers to add to the email.
attachments
array
Filename and content of attachments (max 40MB per email, after Base64 encoding of the attachments).See examples
tags
array
Custom data passed in key/value pairs.See examples.
template
object
Templates API is currently in private beta and only available to a limited number of users.
To send using a template, provide a template object with:
  • id: id of the published template
  • variables: array of variable objects (if applicable)
If a template is provided, you cannot send html, text, or react in the payload, otherwise the API will return a validation error.When sending a template, the payload for from, subject, and reply_to take precedence over the template’s defaults for these fields. If the template does not provide a default value for these fields, you must provide them in the payload.
id
string
required
The id of the published email template. Required if template is provided. Only published templates can be used when sending emails.See the errors reference for more details.
variables
object
Template variables object with key/value pairs.
variables: {
	CTA: 'Sign up now',
	CTA_LINK: 'https://example.com/signup'
}
When sending the template, the HTML will be parsed. If all the variables used in the template were provided, the email will be sent. If not, the call will throw a validation error.See the errors reference for more details.See examples.

Headers

Idempotency-Key
string
Add an idempotency key to prevent duplicated emails.
  • Should be unique per API request
  • Idempotency keys expire after 24 hours
  • Have a maximum length of 256 characters
Learn more
import { Resend } from 'resend';

const resend = new Resend('re_xxxxxxxxx');

const { data, error } = await resend.emails.send({
  from: 'Acme <onboarding@resend.dev>',
  to: ['delivered@resend.dev'],
  subject: 'hello world',
  html: '<p>it works!</p>',
  replyTo: 'onboarding@resend.dev',
});
{
  "id": "49a3999c-0ce1-4ea6-ab68-afcd6dc2e794"
}
I