Install the MCP server and every Resend skill directly from the official Claude Code plugins.
Resend Changelog
Send Auth0 transactional emails through Resend using the official integration.
Auth0 now supports Resend as an official email provider. Crucial emails like verification codes and password resets can be delivered through Resend in just a few minutes.
Getting started
Before connecting Auth0 to Resend, you'll need:
- A verified domain in your Resend dashboard.
- An API key from your API Keys page.
Basic configuration
In the Auth0 Dashboard, go to Branding > Email Provider, toggle on Use my own email provider, and select Resend. Set the From address to match your Resend verified domain and enter your API key. Click Send Test Email to verify it works.
Using Auth0 Actions
For more control (per-organization sender addresses, conditional routing, custom logic), use an Auth0 Action. Add resend as a dependency, store your API key as a secret named RESEND_API_KEY, and deploy a custom action to the Post Login trigger.
Customizing Email Templates
Go to Branding > Email Templates in the Auth0 Dashboard. For advanced templating, use React Email or Resend Templates within Auth0.
See the Auth0 docs for the full setup guide.
Reference existing content in AI prompts across broadcasts, templates, and automations.
When you @ mention a broadcast, template, event, or property, the AI pulls from your actual content — no copy-pasting, hallucinations, or guesswork.
@ works in the AI prompt across the broadcast and template editors, as well as in the automations chat interface.
Reuse what you've already built
Mention a past broadcast or template to use it as inspiration. New content stays on‑brand without rewriting your style guide into every prompt.
Ground automations in real data
Mention templates so generated workflows can include your actual content. Each mention is resolved server‑side and the referenced document or property is injected into the prompt.
Built for speed
Results are grouped by type, newest first, and filter as you type. Hover a template or broadcast to preview it, scan status chips for what's published or sent, and use arrow keys, Enter, and Backspace to keep your hands on the keyboard.
Embed bar, line, and area charts directly in your emails.
A new Chart component is now available in both Broadcasts and Templates. Insert a chart using the slash command menu (/chart) or from the component toolbar.
Configuration
- Chart type: bar, line, or area
- Title: label (also serves as image alt text)
- Data: spreadsheet-style table or raw JSON
- Series: rename and customize colors per data set
Theming
Choose a theme from the inspector sidebar.
Data sources
Enter data via spreadsheet-style table or paste raw JSON:
[
{ "date": "Feb '26", "downloads": 8942400 },
{ "date": "Mar '26", "downloads": 16492000 },
{ "date": "Apr '26", "downloads": 16036000 }
]
Built for the realities of email
The editor renders data as images so it looks the same in every email client — Gmail, Outlook, Apple Mail, and more. What you see in the editor is exactly what subscribers see.
Embed bar, line, and area charts directly in your emails.
Access your API request logs from anywhere.
Two new endpoints give you programmatic access to your API request logs.
Retrieving logs
import { Resend } from 'resend';
const resend = new Resend('re_xxxxxxxxx');
const { data, error } = await resend.logs.list();
Returned logs include: endpoint, method, status code, user agent.
Drilling down
Retrieve a single log entry to inspect the original request and response bodies:
const { data, error } = await resend.logs.get('37e4414c-5e25-4dbc-a071-43552a4bd53b');
Getting started
The Logs API enables: equipping agents with debugging tools, building custom dashboards and monitoring tools, and integrating with existing infrastructure.
Available in all official Resend SDKs, the Resend CLI, and MCP Server.
Our official MCP server with full Resend platform coverage and an official HTTP transport.
The official Resend MCP server exposes 10 tool groups covering every Resend API: emails, contacts, broadcasts, domains, webhooks, segments, topics, contact properties, API keys, and received emails.
Full platform coverage
Agents can manage your entire email infrastructure through a single integration.
Key capabilities
- Received emails: list and read inbound emails, download attachments
- Broadcast management: create, send, schedule, and manage campaigns; supports personalization, preview text, and scheduling
- Contact and audience tools: full contact lifecycle management, segment memberships, topic subscriptions, custom contact properties
- Domain and webhook management: configure sender domains, verify DNS, manage tracking/TLS settings, set up webhooks
- Attachments and advanced sending: file attachments from local paths, URLs, or base64; batch sending, scheduling, CC/BCC, reply-to, tags
Install
Claude Code
claude mcp add resend -e RESEND_API_KEY=re_xxxxxxxxx -- npx -y resend-mcp
Cursor — add to MCP settings:
{
"mcpServers": {
"resend": {
"command": "npx",
"args": ["-y", "resend-mcp"],
"env": { "RESEND_API_KEY": "re_xxxxxxxxx" }
}
}
}
HTTP transport
Supports Streamable HTTP transport for remote and web-based integrations:
npx -y resend-mcp --http --port 3000
Each client authenticates by passing their Resend API key as a Bearer token.
Our official MCP server with Resend platform coverage, and an official HTTP transport.
Send emails asynchronously in Python using the new async methods powered by httpx.
The Python SDK now supports async out of the box for FastAPI, async Django, and other async Python frameworks.
Installation
pip install "resend[async]"
Sending an email asynchronously
Every method has an _async counterpart:
import asyncio
import resend
resend.api_key = "re_your_api_key"
async def main():
params: resend.Emails.SendParams = {
"from": "onboarding@resend.dev",
"to": ["delivered@resend.dev"],
"subject": "Hello from async Python",
"html": "<strong>it works!</strong>",
}
email = await resend.Emails.send_async(params)
print(email)
asyncio.run(main())
No breaking changes
The existing sync API is unchanged. Async is opt-in — if httpx is not installed, calling an _async method raises a ResendError with code AsyncClientNotConfigured.
All SDK modules have async counterparts: Emails, Batch, ApiKeys, Audiences, Broadcasts, Contacts, and Domains.
Send emails asynchronously in Python using the new async methods powered by httpx.
Built for humans and AI agents. Manage your emails from the terminal.
The Resend CLI is an open source project with more than 53 commands across 13 resources.
Install
# cURL
curl -fsSL https://resend.com/install.sh | bash
# Node.js
npm install -g resend-cli
# Homebrew
brew install resend/cli/resend
# PowerShell (Windows)
irm https://resend.com/install.ps1 | iex
Authenticate
$ resend login
# or with API key directly:
$ resend login --key re_xxxxxxxxx
Send emails from the terminal
$ resend emails send \
--from "Acme <hello@resend.dev>" \
--to "user@gmail.com" \
--subject "Hello from the CLI" \
--html "<h1>It works!</h1>"
Manage your entire account
53 commands across 13 resources including Domains, API keys, Contacts, Broadcasts, and Webhooks.
Schedule broadcasts with natural language
$ resend broadcasts send "f47ac10b-..." --scheduled-at "tomorrow morning"
Parses natural language like "in 1 hour" or "next Monday at 3pm".
Switch between teams and accounts
Switch profiles with resend auth switch or use the --profile flag on any command.
CI/CD integration
In interactive terminals: styled tables, spinners, guided prompts. When piped or in CI: structured JSON output.
Built for humans and AI agents. Manage your emails from the terminal.
A completely rebuilt editor for broadcasts and templates, now available to everyone.
The new email editor is now available to 100% of users across Templates, Broadcasts, and Unsubscribe Pages.
Key improvements
- Redesigned layout: refreshed sidebar, improved topbar navigation, cleaner canvas; unified menu toolbar for components, variables, and contact properties
- Multi-column layouts: 2, 3, or 4 column configurations via slash command; each column supports independent content
- Global email theming: define global styles (colors, spacing) in one place for consistency
- Paste-to-embed for YouTube and X/Twitter: paste a link, it auto-converts to a rich embed; contextual paste menu lets you choose embed or plain link
- Smarter slash command menu: scored ranking for search, better discoverability, improved viewport positioning
- HTML code view with formatting: inspect/edit raw HTML; built-in Prettier formatter; push HTML via API and continue editing in editor
- Improved drag and drop: completely rewritten block reordering with better safe zones and edge case handling
The official Resend adapter for Vercel Chat SDK turns email into a first-class channel for AI agents.
The @resend/chat-sdk-adapter package connects Resend to the Vercel Chat SDK. It's bidirectional: receive emails as chat messages via webhooks, send rich HTML emails back through the Chat SDK interface.
Features
- Email conversations automatically threaded using RFC headers (
Message-ID,In-Reply-To,References) - Inbound emails verified with Svix signatures
- Send styled HTML emails using React Email components, with plain text fallbacks
- Open source, MIT licensed
Quick look
import { Chat } from "chat";
import { MemoryStateAdapter } from "@chat-adapter/state-memory";
import { createResendAdapter } from "@resend/chat-sdk-adapter";
const resend = createResendAdapter({ fromAddress: "bot@example.com" });
const chat = new Chat({
userName: "email-bot",
adapters: { resend },
state: new MemoryStateAdapter(),
});
chat.onNewMention(async (thread, message) => {
await thread.subscribe();
await thread.post(`Got your email: ${message.text}`);
});
What you can build
- Support bots that receive customer emails and reply with answers
- AI assistants that send order confirmations and handle follow-up replies
- Notification systems where users can reply directly to take action
The official Resend adapter for Vercel Chat SDK turns email into a first-class channel for AI agents.
Domain verification events are now more visible and actionable.
A complete overhaul of the domain verification experience. Domain verification now provides feedback at every step of the process.
Key improvements
- DNS Provider Detection: detects DNS provider from nameservers and provides a direct link to your DNS settings
- New Verification Timeline: step-by-step timeline that updates as verification progresses
- DNS Propagation Status: banners showing which records (DKIM, SPF, MX) haven't been validated yet
- New Error Messages: specific and actionable — each failure includes a title, clear identification, full description, and fix actions
- Partial Verification: new partially verified status when only one capability (sending or receiving) is verified; can restart verification for only the failed capability
- Capability-Aware Domain Details: sending-specific records like SPF and DMARC only appear if relevant to your domain's configuration
You can now send emails, manage contacts, and trigger workflows from n8n.
The official Resend node for n8n is now available. Send emails, manage contacts, trigger workflows from email events, and more from within n8n.
Getting Started
- Make a new workflow
- Open the nodes panel by selecting + or pressing Tab
- Search for Resend
- Select Install
- Add your API key as a Resend API credential
Send your first email
From: Acme <onboarding@resend.dev>
To: delivered@resend.dev
Subject: Hello from n8n
Body: <strong>It works!</strong>
The node repository is at resend/n8n-nodes-resend.
Use the Broadcast API to create and send a broadcast with a single request.
Previously, creating and sending a Broadcast required two separate API requests. Now you can do it in one by setting send: true.
import { Resend } from 'resend';
const resend = new Resend('re_xxxxxxxxx');
const { data, error } = await resend.broadcasts.create({
segmentId: '78261eea-8f8b-4381-83c6-79fa7120f1cf',
from: 'Acme <onboarding@resend.dev>',
subject: 'hello world',
html: 'Hi {{{FIRST_NAME|there}}}',
send: true,
});
Send and Schedule
You can also schedule the broadcast in the same call using natural language or ISO 8601:
send: true,
scheduledAt: 'in 1 hour',Find issues faster with log search, status filters, and actionable 403 error guidance.
New features
- Search by Log ID: jump directly to a log entry by ID
- Filter by Status: multi-select filters for All, Errors, Success, or specific HTTP status codes (403, 429, etc.); also supported in CSV exports
- Improved Code Blocks: syntax highlighting for request/response JSON bodies; one-click copy
- Actionable 403 Error Guidance: contextual error summaries explaining why requests failed and how to fix them, with domain highlighting and a "Help me fix" troubleshooting drawer with tailored guidance and quick links
A self-hosted solution to store all your Resend webhook events in your own database.
The open-source Webhooks Ingester enables you to easily store all Resend events in your own database. It includes retries, idempotency, deduplication, persistence, and edge case handling by default.
Supported databases
Supabase, PostgreSQL, MySQL, PlanetScale, MongoDB, Snowflake, BigQuery, ClickHouse
All 17 event types supported
Email events: sent, delivered, delivery_delayed, bounced, complained, opened, clicked, failed, scheduled, suppressed, received
Contact events: created, updated, deleted
Domain events: created, updated, deleted
Deploy
One-click deploy to Vercel, Railway, or Render. Or use Docker:
docker pull ghcr.io/resend/resend-webhooks-ingester
All webhooks are verified using Svix signatures before storage. Duplicate events are safely ignored.




