A simple, elegant interface so you can start sending emails in minutes. It fits right into your code with SDKs for your favorite programming languages.

import { Resend } from 'resend';const resend = new Resend('re_xxxxxxxxx');await resend.emails.send({from: 'Acme <onboarding@resend.dev>',to: ['delivered@resend.dev'],subject: 'hello world',html: '<p>it works!</p>',});
Troubleshoot with detailed logs including the request headers and response body.
Collect and analyze real-time data on API traffic. Fix critical issues before they impact the application.

Do more with your emails using flexible API endpoints.
Send attachments, schedule using natural language, or trigger batch emails with ease.
import { Resend } from 'resend';const resend = new Resend('re_xxxxxxxxx');await resend.emails.send({from: 'Acme <onboarding@resend.dev>',to: ['delivered@resend.dev'],subject: 'hello world',html: '<p>it works!</p>',scheduledAt: 'in 1 min',});
Transitioning into production with Resend was a breeze due to its straightforward API and effortless setup. Resend is the developer-centric email API that is actually a joy to work with.
Elliot DeNolf
Founder & CTO of Payload
await resend.emails.send({from: 'Acme <onboarding@resend.dev>',to: ['delivered@resend.dev'],subject: 'hello world',html: '<p>it works!</p>',},{idempotencyKey: 'welcome-user/123456789',},);
Include an idempotency key in any email requests to ensure that the same email request is processed only once when a duplicate request or retry logic attempts to resend the same email.
The support that your business needs. The reliability that your team needs.
The security that your mission-critical application needs.
APIs that are built from the ground up to be highly available, reliable, and scalable.
View statusCommitted to the security and privacy of customer data, Resend is GDPR and SOC 2 compliant.
Visit securityGet the help you need, whenever you need it, with response SLA's and a dedicated Slack channel.
See enterpriseA REST API for sending transactional email from your application. Send a single email, a batch of up to 100, or schedule one for later with one HTTP request, and track delivery, bounce, open, and click events with webhooks.
Create an API key in the dashboard and pass it as a Bearer token in the Authorization header. Keys can be scoped to full access or sending only, and restricted to a single domain.
Resend has official SDKs for Node.js, Python, PHP, Ruby, Go, Rust, Java, and .NET, plus a CLI. Any other language can call the REST API directly over HTTPS.
Yes. Pass a React Email component to the Node.js SDK and Resend renders it to HTML for you. You can also send plain HTML, text, or a saved template.
Use the API when you control the code: it is faster, returns an email ID you can track, and supports batching, scheduling, and idempotency keys. Use SMTP for tools that only speak SMTP. Deliverability is the same either way, since both send through your verified domain with SPF and DKIM.
Yes. Each team has a requests-per-second limit, reported in the response headers of every request. Use the batch endpoint to send many emails in one request, or contact support to raise your limit.
Add an idempotency key to the request. If a retry sends the same key within 24 hours, Resend returns the original response instead of sending a duplicate.
Yes. The free plan includes 3,000 emails per month (up to 100 per day) with full API access. See pricing for paid plans.
Resend delivers mission-critical emails for some
of the fastest growing teams.