| Send email |
resend.emails.send({ from, to, subject }) |
Returns { data, error }, supports html/text/react content |
| Send with React |
resend.emails.send({ react: <Email /> }) |
Node.js SDK only, renders React Email components server-side |
| Batch send |
resend.batch.send([...emails]) |
Multiple emails in one request, no attachments/scheduling |
| Schedule email |
emails.send({ scheduled_at }) |
ISO 8601 or natural language, cancel before send window |
| Attachments |
emails.send({ attachments: [...] }) |
Max 40MB total after encoding, supports content or path |
| Idempotent send |
emails.send(params, { idempotencyKey }) |
Prevents duplicate sends on retry |
| Retrieve email |
resend.emails.get(emailId) |
Check delivery status and metadata |
| Add domain |
resend.domains.create({ name }) |
Returns DNS records for SPF, DKIM, MX |
| Verify domain |
resend.domains.verify(domainId) |
Triggers DNS record check |
| List domains |
resend.domains.list() |
Returns all domains with status |
| Create webhook |
Dashboard or API |
Subscribe to email lifecycle events |
| Verify webhook |
resend.webhooks.verify({ payload, ... }) |
Validates Svix signature headers |
| Tags |
emails.send({ tags: [...] }) |
Key-value pairs for categorization, ASCII only, max 256 chars |
| Custom headers |
emails.send({ headers: {...} }) |
Add custom email headers |
| Create contact |
resend.contacts.create({ email, ... }) |
Global contacts with custom properties |
| List contacts |
resend.contacts.list() |
Returns all contacts |
| Create broadcast |
resend.broadcasts.create({ from, ... }) |
Bulk email to a segment, supports template variables |
| Send broadcast |
resend.broadcasts.send(id, { segmentId }) |
Delivers broadcast to a segment of contacts |