resend

Resend API for email delivery. Use when user mentions "Resend", "send email", "email API", or transactional email.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "resend" with this command: npx skills add vm0-ai/vm0-skills/vm0-ai-vm0-skills-resend

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

  1. Sign up at https://resend.com
  2. Go to API Keys: https://resend.com/api-keys
  3. Create a new API key

Set environment variable:

export RESEND_TOKEN="re_xxxxxxxxx"

Placeholders: Values in {curly-braces} like {email-id} are placeholders. Replace them with actual values when executing.


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>"],
  "replyTo": "<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>",
  "scheduledAt": "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>",
  "firstName": "<your-first-name>",
  "lastName": "<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>",
  "firstName": "<your-first-name>",
  "lastName": "<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:

{
  "firstName": "<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

ParameterTypeDescription
fromstringSender email (required). Format: "Name <email@domain.com>"
tostring[]Recipients (required). Max 50 addresses
subjectstringEmail subject (required)
htmlstringHTML content
textstringPlain text content
ccstring[]CC recipients
bccstring[]BCC recipients
replyTostringReply-to address
scheduledAtstringSchedule time (ISO 8601 or natural language)
tagsarrayCustom tags for tracking
attachmentsarrayFile attachments (max 40MB total)

Response Codes

StatusDescription
200Success
400Invalid parameters
401Missing API key
403Invalid API key
404Resource not found
429Rate limit exceeded (2 req/sec)
5xxServer error

Guidelines

  1. Rate Limits: Default is 2 requests per second; implement backoff for 429 errors
  2. Sender Domain: Use verified domains for production; onboarding@resend.dev for testing
  3. Batch Emails: Use /emails/batch for sending to multiple recipients efficiently
  4. Idempotency: Use Idempotency-Key header to prevent duplicate sends
  5. Scheduling: Use natural language (in 1 hour) or ISO 8601 format for scheduledAt

API Reference

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

google-sheets

No summary provided by upstream source.

Repository SourceNeeds Review
246-vm0-ai
General

apify

No summary provided by upstream source.

Repository SourceNeeds Review
214-vm0-ai
General

hackernews

No summary provided by upstream source.

Repository SourceNeeds Review
170-vm0-ai
General

serpapi

No summary provided by upstream source.

Repository SourceNeeds Review
164-vm0-ai