| 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 |