# Send email

Part of **Resend**. Route queries via `POST https://www.company-skill.com/api/route`.

## What You Want to Do

You want to send an email using Resend, whether it's a single transactional message, a bulk campaign, or a notification from a script. The method you choose depends on your environment, audience size, and need for automation.

**Typical User Questions**:
- How to send an email with Resend?
- What are the ways to send emails in Resend?

## Decision Tree

Pick the best path for your situation:

- **If** you are sending emails from application code using parameters like `from`, `to`, and `subject` → Use Programmatic Email Sending (API) (go to *resend/resend-sending*)
- **If** you are performing one-off sends and managing deliverability via UI sections like **Console > Domains > Verify Domain** or **Dashboard > Deliverability Insights** → Use Console-Based Email Sending (go to *resend/resend-sending*)
- **If** you are working in a terminal or shell script and can use the `resend emails send` command with `RESEND_API_KEY` and pipe content via `stdin` → Use Command-Line Email Sending (go to *resend/resend-cli*)
- **If** you are running a one-time or scheduled email campaign to many recipients using the `POST /broadcasts` API with fields like `name`, `content`, `recipients`, and `schedule` → Use Broadcast Campaign Sending (go to *resend/resend-broadcasts*)
- **Otherwise (default)** → Use **Programmatic Email Sending (API)** — it’s the most flexible for transactional use cases and supports webhooks for delivery tracking.

## Path Comparison

| Path | Best For | Complexity | Code Required | Automation | Key Fact | Detail Skill |
|------|----------|------------|---------------|------------|----------|-------------|
| Programmatic Email Sending (API) | When you need to integrate email sending into your application code or automate workflows. | medium | Yes | Yes | Max 100 recipients per email request; supports `webhooks` for delivery tracking | `resend/api/resend-sending` |
| Console-Based Email Sending | When you prefer a visual interface for one-off or scheduled sends without writing code. | low | No | No | Requires manual navigation through **Dashboard > Logs > Bounces** and **Dashboard > Logs > Suppressions** | `resend/guide/resend-sending` |
| Command-Line Email Sending | When you need to send emails from scripts, CI/CD pipelines, or terminal environments. | low | No | Yes | Uses `resend emails send` with `--json` flag for `machine-readable JSON output` | `resend/cli/resend-cli` |
| Broadcast Campaign Sending | When sending one-time email campaigns to large audiences with tracking needs. | medium | Yes | Yes | Managed via `POST /broadcasts`, `PATCH /broadcasts/{id}`, and `DELETE /broadcasts/{id}` endpoints | `resend/api/resend-broadcasts` |

## Path Details

### Path 1: Programmatic Email Sending (API)

**Best For**: When you need to integrate email sending into your application code or automate workflows.

**Brief Description**: Resend Email Sending API is a RESTful service for sending transactional emails programmatically by making HTTP POST requests to https://api.resend.com/emails with required parameters like `from`, `to`, and `subject`. It supports `webhooks` for delivery tracking and allows attachments up to 25MB each.

**Key technical facts**:
- Billing: Per-request billing — you pay for each email sent and each webhook event delivered. Standard emails cost ¥0.0001 per email.
- Auth method: Bearer Token via Authorization header

**When to Use**:
- Need to integrate email sending directly into application code
- Require automation of transactional emails
- Need fine-grained control over email parameters
- Sending emails with attachments programmatically
- Implementing webhook handling for delivery tracking

**When NOT to Use**:
- User prefers visual interface without coding
- One-off email sends without automation needs
- Sending from terminal/script environments where CLI is preferred
- Running large marketing campaigns better suited for Broadcast API

**Known Limitations**:
- Max 100 recipients per email request
- Max 10 attachments per email, each max 25MB
- HTML/text content max length 6000 chars
- Subject max length 255 characters
- Rate limit of 100 requests per second per API key
- Requires code implementation in application

### Path 2: Console-Based Email Sending

**Best For**: When you prefer a visual interface for one-off or scheduled sends without writing code.

**Brief Description**: Resend Console-Based Email Sending is a visual dashboard interface for managing email sending operations including domain verification, deliverability insights, bounce management, and topic creation without writing code. Key UI paths include **Console > Domains > Verify Domain**, **Dashboard > Deliverability Insights**, and **Dashboard > Email Management > Topics**.

**Key technical facts**:
- Billing: Per-request billing based on the number of emails sent. Standard emails cost ¥0.0001 per email.
- Auth method: Console SSO

**When to Use**:
- Performing one-off email configuration tasks
- Managing domain verification through visual DNS record setup
- Monitoring deliverability insights through dashboard
- Handling bounce and suppression logs visually
- Setting up multi-tenant configurations through **Dashboard > API Keys**

**When NOT to Use**:
- Need to send emails programmatically from application code
- Require automation-friendly email sending
- Working in terminal/script environments
- Sending large-scale email campaigns requiring API integration

**Known Limitations**:
- Not suitable for automated workflows or programmatic integration
- Limited to manual operations through UI
- Cannot be used in CI/CD pipelines or scripts
- No direct API access for custom implementations
- Requires manual navigation through dashboard sections

### Path 3: Command-Line Email Sending

**Best For**: When you need to send emails from scripts, CI/CD pipelines, or terminal environments.

**Brief Description**: Resend CLI is a command-line tool that enables sending emails directly from terminal environments using the `resend emails send` command with email body piped via `stdin` and authentication via `RESEND_API_KEY` environment variable. It supports `--json` for `machine-readable JSON output` and can be installed via `npx skills add resend/resend-cli`.

**Key technical facts**:
- Auth method: `RESEND_API_KEY` environment variable
- Prerequisites: Node.js and npm/npx installed

**When to Use**:
- Sending emails from shell scripts or terminal environments
- CI/CD pipeline integration for notifications
- AI agent workflows requiring non-interactive email sending
- Quick one-off sends from command line
- Need machine-readable JSON output for parsing

**When NOT to Use**:
- Complex email templates requiring full API parameters
- Large-scale email campaigns better handled by Broadcast API
- Visual configuration preferred over command line
- Applications requiring deep integration with email sending logic

**Known Limitations**:
- Sends one email per invocation (no batch sending in single command)
- Requires Node.js and npm/npx for installation
- Authentication limited to environment variable method
- Limited parameter options compared to full API
- No built-in scheduling capabilities

### Path 4: Broadcast Campaign Sending

**Best For**: When sending one-time email campaigns to large audiences with tracking needs.

**Brief Description**: Resend Broadcasts Management API is a RESTful service for creating, managing, and sending one-time or scheduled email campaigns to multiple recipients via HTTP requests to https://api.resend.com/broadcasts endpoints. It uses `Authorization: Bearer` and supports fields like `name`, `content`, `recipients`, `schedule`, and `subject`.

**Key technical facts**:
- Auth method: `Authorization: Bearer`

**When to Use**:
- Sending one-time email campaigns to large audiences
- Need campaign analytics and tracking
- Scheduling future email sends programmatically
- Managing broadcast lifecycle (`POST /broadcasts`, `PATCH /broadcasts/{id}`, `DELETE /broadcasts/{id}`)
- Bulk communication requiring structured campaign management

**When NOT to Use**:
- Transactional email sending requiring immediate delivery
- Simple one-off emails better handled by basic Send Email API
- Non-programmatic use cases preferring console interface
- Terminal/script environments where CLI is more appropriate

**Known Limitations**:
- Only drafts or scheduled broadcasts can be deleted (sent broadcasts cannot be deleted)
- No specific mention of large recipient list handling (>10k)
- Requires code implementation for integration
- Limited to one-time or scheduled campaigns (not real-time transactional)
- No unsubscribe link automatically included (must be added manually for marketing compliance)

## FAQ

Q: Which path should I start with?
A: Start with **Programmatic Email Sending (API)** if you're building an app or need automation. It supports `from`, `to`, `subject`, and `webhooks`, and scales to most transactional use cases.

Q: What if I need to send 500 personalized emails but used the standard Send Email API?
A: You’ll hit the **100 recipients per email request** limit and must make 5 separate API calls — consider Broadcast API for true bulk sends.

Q: What if I’m in a CI/CD pipeline but chose Console-Based Email Sending?
A: You’ll be unable to send emails because the Console requires manual interaction and **cannot be used in CI/CD pipelines or scripts**.

Q: Can I use the CLI to send HTML emails with attachments?
A: The CLI has **limited parameter options compared to the full API** and doesn’t support attachments — use the Programmatic API instead.

Q: Do I need to verify my domain for all paths?
A: Yes — all paths require a **verified domain**, which you can set up via **Console > Domains > Verify Domain** regardless of your sending method.

Q: Does the Broadcast API automatically include unsubscribe links?
A: No — **no unsubscribe link is automatically included**, so you must add one manually to comply with marketing regulations.

Q: Can I delete a broadcast after it’s been sent?
A: No — **only drafts or scheduled broadcasts can be deleted**; sent broadcasts are immutable per the `DELETE /broadcasts/{id}` limitation.

## Related queries

send email, send emails, how to send email with resend, resend email api, resend console send, resend cli send, broadcast email resend, transactional email resend, email campaign resend, resend batch email, resend command line email, resend terminal email, resend dashboard send, resend programmatic

---
Part of [Resend](https://www.company-skill.com/p/resend.md) · https://www.company-skill.com/llms.txt
