Skip to content
Back to skills

Resend Expert

BSecurity

Send emails via Resend API - transactional, batch, contacts, domains, webhooks, React Email

  • 57 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 17, 2026
developmentjavascriptpythonrustgojavarubyphpbashreactnode

Works with

  • cli
  • api

Security analysis

B77/100
  • highContains patterns that look like hardcoded API keys
  • mediumInstalls packages at runtime which could introduce malicious dependencies
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro shows the line behind each finding and how to fix it

Scanned October 17, 2026

npx -y skills add diegosouzapw/awesome-omni-skill --skill resend-expert --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Resend Expert?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Resend Expert
[![Security: B — Skills Directory](https://www.skillsdirectory.com/api/skills/diegosouzapw-resend-expert/badge)](https://www.skillsdirectory.com/skills/diegosouzapw-resend-expert)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: Resend Expert
description: Send emails via Resend API - transactional, batch, contacts, domains, webhooks, React Email
allowed-tools: Bash, Read, Edit, Write, WebFetch
---

# Resend Expert

Complete Resend email API expertise for transactional emails, marketing broadcasts, and contact management.

## Quick Reference

**Base URL**: `https://api.resend.com`
**Auth**: `Authorization: Bearer $RESEND_API_KEY`
**User's Key**: `re_Czsz1gQW_Dz4H2a9dH8tTjgteeDCjVujF`
**Verified Domain**: `sigstack.dev` (newsletter: tips@sigstack.dev)

## Core Endpoints

### Send Single Email
```bash
curl -X POST https://api.resend.com/emails \
  -H "Authorization: Bearer [REDACTED]" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "SigStack Tips <tips@sigstack.dev>",
    "to": ["recipient@example.com"],
    "subject": "Hello",
    "html": "<p>Email body</p>"
  }'
```

**Response**: `{"id": "uuid-string"}`

### Send Batch Emails (up to 100)
```bash
POST https://api.resend.com/emails/batch
# Body: Array of email objects (same structure as single)
# Note: No attachments or scheduling in batch mode
```

### Get/Update/Cancel Email
```bash
GET    /emails/{id}        # Retrieve email details
PATCH  /emails/{id}        # Update scheduled email
DELETE /emails/{id}/cancel # Cancel scheduled email
```

## Node.js SDK

```bash
npm install resend
```

```javascript
import { Resend } from 'resend';
const resend = new Resend('re_Czsz1gQW_Dz4H2a9dH8tTjgteeDCjVujF');

// Send email
const { data, error } = await resend.emails.send({
  from: 'SigStack <hello@sigstack.dev>',
  to: ['user@example.com'],
  subject: 'Welcome!',
  html: '<h1>Hello World</h1>',
});

// With React Email component
const { data, error } = await resend.emails.send({
  from: 'SigStack Tips <tips@sigstack.dev>',
  to: ['user@example.com'],
  subject: 'Welcome!',
  react: <WelcomeEmail name="User" />,
});

// Batch send
const { data, error } = await resend.batch.send([
  { from: '...', to: ['...'], subject: '...', html: '...' },
  { from: '...', to: ['...'], subject: '...', html: '...' },
]);
```

## Python SDK

```bash
pip install resend
```

```python
import resend
resend.api_key = "[REDACTED]"

# Send email
email = resend.Emails.send({
    "from": "SigStack <hello@sigstack.dev>",
    "to": ["user@example.com"],
    "subject": "Hello",
    "html": "<p>Welcome!</p>"
})

# With attachments
email = resend.Emails.send({
    "from": "...",
    "to": ["..."],
    "subject": "...",
    "html": "...",
    "attachments": [
        {"filename": "invoice.pdf", "content": base64_content}
    ]
})
```

## Email Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `from` | string | Yes | `"Name <email@domain>"` format |
| `to` | string[] | Yes | Recipients (max 50) |
| `subject` | string | Yes | Subject line |
| `html` | string | No* | HTML body |
| `text` | string | No* | Plain text (auto-generated from html if omitted) |
| `react` | ReactNode | No* | React Email component (Node.js only) |
| `cc` | string[] | No | Carbon copy |
| `bcc` | string[] | No | Blind carbon copy |
| `reply_to` | string[] | No | Reply-to addresses |
| `scheduled_at` | string | No | ISO 8601 or natural language |
| `attachments` | array | No | `{filename, content, content_type?}` |
| `tags` | array | No | `{name, value}` pairs (256 char limit) |
| `headers` | object | No | Custom email headers |

*One of html, text, or react required

## Idempotency
```bash
-H "Idempotency-Key: unique-key-123"
# Prevents duplicate sends within 24 hours
```

## Contact Management

```bash
# Create contact
POST /contacts
{"email": "user@example.com", "first_name": "John", "unsubscribed": false}

# List contacts
GET /contacts?limit=50

# Update contact
PATCH /contacts/{id}

# Delete contact
DELETE /contacts/{id}
```

## Domain Management

```bash
# List domains
GET /domains?limit=20

# Create domain
POST /domains
{"name": "yourdomain.com"}

# Verify domain
POST /domains/{id}/verify

# Delete domain
DELETE /domains/{id}
```

## Webhooks

**Events**: `email.sent`, `email.delivered`, `email.bounced`, `email.complained`, `email.opened`, `email.clicked`, `contact.created`, `contact.updated`, `contact.deleted`

```bash
# Create webhook
POST /webhooks
{"url": "https://yourapp.com/webhook", "events": ["email.delivered", "email.bounced"]}
```

**Signature Verification** (Node.js):
```javascript
import { Webhook } from 'resend';
const webhook = new Webhook(process.env.RESEND_WEBHOOK_SECRET);
const payload = webhook.verify(body, headers);
```

## Templates

```bash
# Create template
POST /templates
{"name": "welcome", "html": "<p>Hello {{name}}</p>"}

# Send with template
POST /emails
{"from": "...", "to": ["..."], "template": {"id": "template-id", "variables": {"name": "John"}}}
```

## API Keys

```bash
# Create key
POST /api-keys
{"name": "production", "permission": "sending_access"}
# permission: "full_access" | "sending_access"

# List keys
GET /api-keys

# Delete key
DELETE /api-keys/{id}
```

## Rate Limits & Quotas
- Free tier: 100 emails/day, 3,000/month
- Batch: Max 100 emails per request
- Recipients: Max 50 per email
- Attachments: Max 40MB total

## Testing Domain
Use `onboarding@resend.dev` as sender for testing before domain verification.

## SDKs
Node.js, Python, PHP, Laravel, Ruby, Go, Rust, Java, .NET

## Common Patterns

**Newsletter (tips@sigstack.dev)**:
```javascript
await resend.emails.send({
  from: 'SigStack Tips <tips@sigstack.dev>',
  to: [subscriber.email],
  subject: 'Weekly Dev Tips',
  html: newsletterHtml,
});
```

**Transactional (noreply@sigstack.dev)**:
```javascript
await resend.emails.send({
  from: 'SigStack <noreply@sigstack.dev>',
  to: [user.email],
  subject: 'Reset your password',
  react: <PasswordResetEmail token={token} />,
});
```

**Marketing broadcast**:
```javascript
// Use Broadcasts API for marketing campaigns with unsubscribe handling
POST /broadcasts
```

## Verified Sender Addresses
- `tips@sigstack.dev` - newsletter
- `hello@sigstack.dev` - general contact
- `noreply@sigstack.dev` - transactional
- `*@sigstack.dev` - any address works

Use when: Sending transactional emails, marketing campaigns, contact management, domain setup, webhook configuration

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.