Agent skill
resend
Resend API for email delivery. Use when user mentions "Resend", "send email", "email API", or transactional email.
Install this agent skill to your Project
npx add-skill https://github.com/vm0-ai/vm0-skills/tree/main/resend
SKILL.md
Resend Email API
Send transactional emails, manage contacts, and domains via Resend's REST API.
Official docs: https://resend.com/docs/api-reference/introduction
When to Use
Use this skill when you need to:
- Send transactional emails (welcome, password reset, notifications)
- Send batch emails to multiple recipients
- Manage email contacts and audiences
- Verify and manage sending domains
- Track email delivery status
Prerequisites
Important: When using
$RESEND_TOKENin commands that contain a pipe (|), always wrap the curl command inbash -c '...'to avoid silent variable clearing — a known Claude Code issue.
Emails
Send Email
Write to /tmp/resend_request.json:
{
"from": "Acme <onboarding@resend.dev>",
"to": ["<your-recipient-email>"],
"subject": "<your-subject>",
"html": "<p><your-html-content></p>"
}
Then run:
curl -s -X POST "https://api.resend.com/emails" --header "Authorization: Bearer $(printenv RESEND_TOKEN)" --header "Content-Type: application/json" -d @/tmp/resend_request.json
Send Email with Plain Text
Write to /tmp/resend_request.json:
{
"from": "Acme <onboarding@resend.dev>",
"to": ["<your-recipient-email>"],
"subject": "<your-subject>",
"text": "<your-plain-text-content>"
}
Then run:
curl -s -X POST "https://api.resend.com/emails" --header "Authorization: Bearer $(printenv RESEND_TOKEN)" --header "Content-Type: application/json" -d @/tmp/resend_request.json
Send Email with CC/BCC
Write to /tmp/resend_request.json:
{
"from": "Acme <onboarding@resend.dev>",
"to": ["<your-recipient-email>"],
"cc": ["<your-cc-email>"],
"bcc": ["<your-bcc-email>"],
"subject": "<your-subject>",
"html": "<p><your-html-content></p>"
}
Then run:
curl -s -X POST "https://api.resend.com/emails" --header "Authorization: Bearer $(printenv RESEND_TOKEN)" --header "Content-Type: application/json" -d @/tmp/resend_request.json
Send Email with Reply-To
Write to /tmp/resend_request.json:
{
"from": "Acme <onboarding@resend.dev>",
"to": ["<your-recipient-email>"],
"reply_to": "<your-reply-to-email>",
"subject": "<your-subject>",
"html": "<p><your-html-content></p>"
}
Then run:
curl -s -X POST "https://api.resend.com/emails" --header "Authorization: Bearer $(printenv RESEND_TOKEN)" --header "Content-Type: application/json" -d @/tmp/resend_request.json
Send Scheduled Email
Schedule email using natural language or ISO 8601 format:
Write to /tmp/resend_request.json:
{
"from": "Acme <onboarding@resend.dev>",
"to": ["<your-recipient-email>"],
"subject": "<your-subject>",
"html": "<p><your-html-content></p>",
"scheduled_at": "in 1 hour"
}
Then run:
curl -s -X POST "https://api.resend.com/emails" --header "Authorization: Bearer $(printenv RESEND_TOKEN)" --header "Content-Type: application/json" -d @/tmp/resend_request.json
Send Batch Emails
Send up to 100 emails in a single request:
Write to /tmp/resend_request.json:
[
{
"from": "Acme <onboarding@resend.dev>",
"to": ["<your-recipient-1>"],
"subject": "Hello 1",
"html": "<p>Email 1</p>"
},
{
"from": "Acme <onboarding@resend.dev>",
"to": ["<your-recipient-2>"],
"subject": "Hello 2",
"html": "<p>Email 2</p>"
}
]
Then run:
curl -s -X POST "https://api.resend.com/emails/batch" --header "Authorization: Bearer $(printenv RESEND_TOKEN)" --header "Content-Type: application/json" -d @/tmp/resend_request.json
Retrieve Email
curl -s "https://api.resend.com/emails/<your-email-id>" --header "Authorization: Bearer $(printenv RESEND_TOKEN)"
List Sent Emails
curl -s "https://api.resend.com/emails" --header "Authorization: Bearer $(printenv RESEND_TOKEN)"
Cancel Scheduled Email
curl -s -X POST "https://api.resend.com/emails/<your-email-id>/cancel" --header "Authorization: Bearer $(printenv RESEND_TOKEN)"
Contacts
Create Contact
Write to /tmp/resend_request.json:
{
"email": "<your-contact-email>",
"first_name": "<your-first-name>",
"last_name": "<your-last-name>",
"unsubscribed": false
}
Then run:
curl -s -X POST "https://api.resend.com/contacts" --header "Authorization: Bearer $(printenv RESEND_TOKEN)" --header "Content-Type: application/json" -d @/tmp/resend_request.json
Create Contact with Custom Properties
Write to /tmp/resend_request.json:
{
"email": "<your-contact-email>",
"first_name": "<your-first-name>",
"last_name": "<your-last-name>",
"properties": {
"company": "<your-company-name>",
"role": "<your-role>"
}
}
Then run:
curl -s -X POST "https://api.resend.com/contacts" --header "Authorization: Bearer $(printenv RESEND_TOKEN)" --header "Content-Type: application/json" -d @/tmp/resend_request.json
Retrieve Contact
curl -s "https://api.resend.com/contacts/<your-contact-id>" --header "Authorization: Bearer $(printenv RESEND_TOKEN)"
List Contacts
curl -s "https://api.resend.com/contacts" --header "Authorization: Bearer $(printenv RESEND_TOKEN)"
List Contacts with Pagination
curl -s "https://api.resend.com/contacts?limit=50" --header "Authorization: Bearer $(printenv RESEND_TOKEN)"
Update Contact
Write to /tmp/resend_request.json:
{
"first_name": "<your-new-first-name>",
"unsubscribed": true
}
Then run:
curl -s -X PATCH "https://api.resend.com/contacts/<your-contact-id>" --header "Authorization: Bearer $(printenv RESEND_TOKEN)" --header "Content-Type: application/json" -d @/tmp/resend_request.json
Delete Contact
curl -s -X DELETE "https://api.resend.com/contacts/<your-contact-id>" --header "Authorization: Bearer $(printenv RESEND_TOKEN)"
Domains
List Domains
curl -s "https://api.resend.com/domains" --header "Authorization: Bearer $(printenv RESEND_TOKEN)"
Retrieve Domain
curl -s "https://api.resend.com/domains/<your-domain-id>" --header "Authorization: Bearer $(printenv RESEND_TOKEN)"
Create Domain
Write to /tmp/resend_request.json:
{
"name": "<your-domain-name>"
}
Then run:
curl -s -X POST "https://api.resend.com/domains" --header "Authorization: Bearer $(printenv RESEND_TOKEN)" --header "Content-Type: application/json" -d @/tmp/resend_request.json
Verify Domain
curl -s -X POST "https://api.resend.com/domains/<your-domain-id>/verify" --header "Authorization: Bearer $(printenv RESEND_TOKEN)"
Delete Domain
curl -s -X DELETE "https://api.resend.com/domains/<your-domain-id>" --header "Authorization: Bearer $(printenv RESEND_TOKEN)"
API Keys
List API Keys
curl -s "https://api.resend.com/api-keys" --header "Authorization: Bearer $(printenv RESEND_TOKEN)"
Create API Key
Write to /tmp/resend_request.json:
{
"name": "<your-key-name>"
}
Then run:
curl -s -X POST "https://api.resend.com/api-keys" --header "Authorization: Bearer $(printenv RESEND_TOKEN)" --header "Content-Type: application/json" -d @/tmp/resend_request.json
Create API Key with Permissions
Write to /tmp/resend_request.json:
{
"name": "<your-key-name>",
"permission": "sending_access"
}
Then run:
curl -s -X POST "https://api.resend.com/api-keys" --header "Authorization: Bearer $(printenv RESEND_TOKEN)" --header "Content-Type: application/json" -d @/tmp/resend_request.json
Delete API Key
curl -s -X DELETE "https://api.resend.com/api-keys/<your-api-key-id>" --header "Authorization: Bearer $(printenv RESEND_TOKEN)"
Email Parameters Reference
| Parameter | Type | Description |
|---|---|---|
from |
string | Sender email (required). Format: "Name <email@domain.com>" |
to |
string[] | Recipients (required). Max 50 addresses |
subject |
string | Email subject (required) |
html |
string | HTML content |
text |
string | Plain text content |
cc |
string[] | CC recipients |
bcc |
string[] | BCC recipients |
reply_to |
string | Reply-to address |
scheduled_at |
string | Schedule time (ISO 8601 or natural language) |
tags |
array | Custom tags for tracking |
attachments |
array | File attachments (max 40MB total) |
Response Codes
| Status | Description |
|---|---|
200 |
Success |
400 |
Invalid parameters |
401 |
Missing API key |
403 |
Invalid API key |
404 |
Resource not found |
429 |
Rate limit exceeded (2 req/sec) |
5xx |
Server error |
Guidelines
- Rate Limits: Default is 2 requests per second; implement backoff for 429 errors
- Sender Domain: Use verified domains for production;
onboarding@resend.devfor testing - Batch Emails: Use
/emails/batchfor sending to multiple recipients efficiently - Idempotency: Use
Idempotency-Keyheader to prevent duplicate sends - Scheduling: Use natural language (
in 1 hour) or ISO 8601 format forscheduled_at
API Reference
- Documentation: https://resend.com/docs/api-reference/introduction
- Dashboard: https://resend.com/overview
- API Keys: https://resend.com/api-keys
- Domains: https://resend.com/domains
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
brave-search
Brave Search API for web search. Use when user says "search web", "Brave search", or asks to "find on web" without specifying Google.
supadata
Supadata API for YouTube/web data. Use when user mentions "Supadata", "YouTube data", "channel stats", or web scraping data.
roadmap-planning
Build and prioritize product roadmaps using scoring models like RICE, ICE, and value-effort matrices. Activate when creating a product roadmap, prioritizing features, sequencing initiatives, mapping dependencies, balancing team capacity, choosing between Now/Next/Later or quarterly planning, or communicating roadmap tradeoffs to executives and stakeholders.
qdrant
Qdrant API for vector search. Use when user mentions "Qdrant", "vector database", "semantic search", or embeddings storage.
calendly
Calendly scheduling API. Use when user mentions "Calendly", "calendly.com", "schedule a meeting", "booking link", "event types", or asks about interview scheduling.
stripe
Stripe API for payments. Use when user mentions "Stripe", "payment", "subscription", "billing", "invoice", or asks about payment processing.
Didn't find tool you were looking for?