← 返回 Skills 市场
byungkyu

Resend

作者 byungkyu · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ✓ 安全检测通过
238
总下载
0
收藏
0
当前安装
1
版本数
在 OpenClaw 中安装
/install resend-api
功能描述
Resend API integration with managed authentication. Send transactional emails, manage domains, contacts, templates, and broadcasts. Use this skill when users...
使用说明 (SKILL.md)

Resend

Access the Resend API with managed authentication. Send transactional emails, manage domains, contacts, templates, broadcasts, and webhooks.

Quick Start

# List sent emails
python \x3C\x3C'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/resend/emails')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Base URL

https://gateway.maton.ai/resend/{endpoint}

The gateway proxies requests to api.resend.com and automatically injects your API key.

Authentication

All requests require the Maton API key in the Authorization header:

Authorization: Bearer $MATON_API_KEY

Environment Variable: Set your API key as MATON_API_KEY:

export MATON_API_KEY="YOUR_API_KEY"

Getting Your API Key

  1. Sign in or create an account at maton.ai
  2. Go to maton.ai/settings
  3. Copy your API key

Connection Management

Manage your Resend connections at https://ctrl.maton.ai.

List Connections

python \x3C\x3C'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections?app=resend&status=ACTIVE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Create Connection

python \x3C\x3C'EOF'
import urllib.request, os, json
data = json.dumps({'app': 'resend'}).encode()
req = urllib.request.Request('https://ctrl.maton.ai/connections', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Get Connection

python \x3C\x3C'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Response:

{
  "connection": {
    "connection_id": "528c8f70-23f4-46d5-bd9f-01d0d043e573",
    "status": "ACTIVE",
    "creation_time": "2026-03-13T00:19:36.809599Z",
    "last_updated_time": "2026-03-13T09:59:08.443568Z",
    "url": "https://connect.maton.ai/?session_token=...",
    "app": "resend",
    "metadata": {},
    "method": "API_KEY"
  }
}

Delete Connection

python \x3C\x3C'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}', method='DELETE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Specifying Connection

If you have multiple Resend connections, specify which one to use with the Maton-Connection header:

python \x3C\x3C'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/resend/emails')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Maton-Connection', '528c8f70-23f4-46d5-bd9f-01d0d043e573')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

If omitted, the gateway uses the default (oldest) active connection.

API Reference

Emails

Send and manage transactional emails.

Send Email

POST /resend/emails

Example:

python \x3C\x3C'EOF'
import urllib.request, os, json
data = json.dumps({
    'from': '[email protected]',
    'to': ['[email protected]'],
    'subject': 'Hello from Resend',
    'html': '\x3Cp>Welcome to our service!\x3C/p>'
}).encode()
req = urllib.request.Request('https://gateway.maton.ai/resend/emails', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Request Body:

Field Type Required Description
from string Yes Sender email (must be from verified domain)
to string[] Yes Recipient email addresses
subject string Yes Email subject
html string No HTML content
text string No Plain text content
cc string[] No CC recipients
bcc string[] No BCC recipients
reply_to string[] No Reply-to addresses
attachments object[] No File attachments
tags object[] No Email tags for tracking
scheduled_at string No ISO 8601 datetime for scheduled send

Response:

{
  "id": "a52ac168-338f-4fbc-9354-e6049b193d99"
}

Send Batch Emails

POST /resend/emails/batch

Example:

python \x3C\x3C'EOF'
import urllib.request, os, json
data = json.dumps([
    {'from': '[email protected]', 'to': ['[email protected]'], 'subject': 'Email 1', 'text': 'Content 1'},
    {'from': '[email protected]', 'to': ['[email protected]'], 'subject': 'Email 2', 'text': 'Content 2'}
]).encode()
req = urllib.request.Request('https://gateway.maton.ai/resend/emails/batch', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

List Emails

GET /resend/emails

Example:

python \x3C\x3C'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/resend/emails')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Response:

{
  "data": [
    {
      "id": "a52ac168-338f-4fbc-9354-e6049b193d99",
      "from": "[email protected]",
      "to": ["[email protected]"],
      "subject": "Hello from Resend",
      "created_at": "2026-03-13T10:00:00.000Z"
    }
  ]
}

Get Email

GET /resend/emails/{email_id}

Example:

python \x3C\x3C'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/resend/emails/{email_id}')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Update Email

PATCH /resend/emails/{email_id}

Cancel Scheduled Email

DELETE /resend/emails/{email_id}

Domains

Manage sending domains.

List Domains

GET /resend/domains

Example:

python \x3C\x3C'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/resend/domains')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Response:

{
  "data": [
    {
      "id": "5eb93a2e-e849-40a1-81b7-ed0fb574ddd8",
      "name": "yourdomain.com",
      "status": "verified",
      "created_at": "2026-03-13T10:00:00.000Z"
    }
  ]
}

Create Domain

POST /resend/domains

Example:

python \x3C\x3C'EOF'
import urllib.request, os, json
data = json.dumps({'name': 'yourdomain.com'}).encode()
req = urllib.request.Request('https://gateway.maton.ai/resend/domains', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Response:

{
  "id": "5eb93a2e-e849-40a1-81b7-ed0fb574ddd8",
  "name": "yourdomain.com",
  "status": "pending",
  "records": [
    {"type": "MX", "name": "...", "value": "..."},
    {"type": "TXT", "name": "...", "value": "..."}
  ]
}

Get Domain

GET /resend/domains/{domain_id}

Update Domain

PATCH /resend/domains/{domain_id}

Delete Domain

DELETE /resend/domains/{domain_id}

Verify Domain

POST /resend/domains/{domain_id}/verify

Contacts

Manage contact lists.

List Contacts

GET /resend/contacts

Example:

python \x3C\x3C'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/resend/contacts')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Create Contact

POST /resend/contacts

Example:

python \x3C\x3C'EOF'
import urllib.request, os, json
data = json.dumps({
    'email': '[email protected]',
    'first_name': 'John',
    'last_name': 'Doe'
}).encode()
req = urllib.request.Request('https://gateway.maton.ai/resend/contacts', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Response:

{
  "id": "3cdc4bbb-0c79-46e5-be2a-48a89c29203d"
}

Get Contact

GET /resend/contacts/{contact_id}

Update Contact

PATCH /resend/contacts/{contact_id}

Delete Contact

DELETE /resend/contacts/{contact_id}

Templates

Manage email templates.

List Templates

GET /resend/templates

Example:

python \x3C\x3C'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/resend/templates')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Create Template

POST /resend/templates

Example:

python \x3C\x3C'EOF'
import urllib.request, os, json
data = json.dumps({
    'name': 'Welcome Email',
    'subject': 'Welcome to our service!',
    'html': '\x3Ch1>Welcome!\x3C/h1>\x3Cp>Thanks for signing up.\x3C/p>'
}).encode()
req = urllib.request.Request('https://gateway.maton.ai/resend/templates', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Response:

{
  "id": "9b84737c-8a80-448a-aca1-c6e1fddd0f23"
}

Get Template

GET /resend/templates/{template_id}

Update Template

PATCH /resend/templates/{template_id}

Delete Template

DELETE /resend/templates/{template_id}

Publish Template

POST /resend/templates/{template_id}/publish

Duplicate Template

POST /resend/templates/{template_id}/duplicate

Segments

Create audience segments for targeting.

List Segments

GET /resend/segments

Example:

python \x3C\x3C'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/resend/segments')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Create Segment

POST /resend/segments

Example:

python \x3C\x3C'EOF'
import urllib.request, os, json
data = json.dumps({
    'name': 'Active Users',
    'filter': {
        'and': [
            {'field': 'email', 'operator': 'contains', 'value': '@'}
        ]
    }
}).encode()
req = urllib.request.Request('https://gateway.maton.ai/resend/segments', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Get Segment

GET /resend/segments/{segment_id}

Delete Segment

DELETE /resend/segments/{segment_id}

Broadcasts

Send emails to segments.

List Broadcasts

GET /resend/broadcasts

Example:

python \x3C\x3C'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/resend/broadcasts')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Create Broadcast

POST /resend/broadcasts

Example:

python \x3C\x3C'EOF'
import urllib.request, os, json
data = json.dumps({
    'name': 'Weekly Newsletter',
    'from': '[email protected]',
    'subject': 'This Week\'s Update',
    'html': '\x3Ch1>Weekly Update\x3C/h1>\x3Cp>Here\'s what happened...\x3C/p>',
    'segment_id': 'segment-uuid'
}).encode()
req = urllib.request.Request('https://gateway.maton.ai/resend/broadcasts', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Get Broadcast

GET /resend/broadcasts/{broadcast_id}

Update Broadcast

PATCH /resend/broadcasts/{broadcast_id}

Delete Broadcast

DELETE /resend/broadcasts/{broadcast_id}

Send Broadcast

POST /resend/broadcasts/{broadcast_id}/send

Webhooks

Configure event notifications.

List Webhooks

GET /resend/webhooks

Example:

python \x3C\x3C'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/resend/webhooks')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Create Webhook

POST /resend/webhooks

Example:

python \x3C\x3C'EOF'
import urllib.request, os, json
data = json.dumps({
    'endpoint': 'https://yoursite.com/webhook',
    'events': ['email.delivered', 'email.bounced', 'email.opened']
}).encode()
req = urllib.request.Request('https://gateway.maton.ai/resend/webhooks', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Webhook Events:

  • email.sent - Email was sent
  • email.delivered - Email was delivered
  • email.opened - Email was opened
  • email.clicked - Link in email was clicked
  • email.bounced - Email bounced
  • email.complained - Recipient marked as spam

Get Webhook

GET /resend/webhooks/{webhook_id}

Update Webhook

PATCH /resend/webhooks/{webhook_id}

Delete Webhook

DELETE /resend/webhooks/{webhook_id}

API Keys

Manage API keys.

List API Keys

GET /resend/api-keys

Example:

python \x3C\x3C'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/resend/api-keys')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Create API Key

POST /resend/api-keys

Example:

python \x3C\x3C'EOF'
import urllib.request, os, json
data = json.dumps({'name': 'Production Key'}).encode()
req = urllib.request.Request('https://gateway.maton.ai/resend/api-keys', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Note: The actual API key value is only returned once on creation.

Delete API Key

DELETE /resend/api-keys/{api_key_id}

Topics

Manage subscription topics.

List Topics

GET /resend/topics

Create Topic

POST /resend/topics

Example:

python \x3C\x3C'EOF'
import urllib.request, os, json
data = json.dumps({
    'name': 'Newsletter',
    'default_subscription': 'subscribed'
}).encode()
req = urllib.request.Request('https://gateway.maton.ai/resend/topics', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Note: default_subscription is required. Values: subscribed or unsubscribed.

Get Topic

GET /resend/topics/{topic_id}

Update Topic

PATCH /resend/topics/{topic_id}

Delete Topic

DELETE /resend/topics/{topic_id}

Contact Properties

Manage custom contact properties.

List Contact Properties

GET /resend/contact-properties

Create Contact Property

POST /resend/contact-properties

Get Contact Property

GET /resend/contact-properties/{property_id}

Update Contact Property

PATCH /resend/contact-properties/{property_id}

Delete Contact Property

DELETE /resend/contact-properties/{property_id}

Code Examples

JavaScript

// Send an email
const response = await fetch('https://gateway.maton.ai/resend/emails', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${process.env.MATON_API_KEY}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    from: '[email protected]',
    to: ['[email protected]'],
    subject: 'Hello!',
    html: '\x3Cp>Welcome!\x3C/p>'
  })
});
const data = await response.json();
console.log(data.id);

Python

import os
import requests

response = requests.post(
    'https://gateway.maton.ai/resend/emails',
    headers={
        'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}',
        'Content-Type': 'application/json'
    },
    json={
        'from': '[email protected]',
        'to': ['[email protected]'],
        'subject': 'Hello!',
        'html': '\x3Cp>Welcome!\x3C/p>'
    }
)
email = response.json()
print(f"Email sent: {email['id']}")

Notes

  • Sending emails requires a verified domain
  • Rate limit: 2 requests per second
  • Batch emails accept up to 100 emails per request
  • Scheduled emails can be set up to 7 days in advance
  • Attachments support base64 encoded content or URLs
  • The from address must use a verified domain
  • IMPORTANT: When piping curl output to jq or other commands, environment variables like $MATON_API_KEY may not expand correctly in some shell environments

Error Handling

Status Meaning
400 Bad request or missing Resend connection
401 Invalid or missing Maton API key
403 Domain not verified or permission denied
404 Resource not found
422 Validation error (missing required fields)
429 Rate limited (2 req/sec)
4xx/5xx Passthrough error from Resend API

Troubleshooting: API Key Issues

  1. Check that the MATON_API_KEY environment variable is set:
echo $MATON_API_KEY
  1. Verify the API key is valid by listing connections:
python \x3C\x3C'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Troubleshooting: Domain Not Verified

To send emails, you must first add and verify a domain:

  1. Create a domain: POST /resend/domains
  2. Add the DNS records provided in the response
  3. Verify the domain: POST /resend/domains/{id}/verify

Resources

安全使用建议
This skill appears to do what it says: it sends requests to Maton's gateway to interact with Resend. Before installing, confirm you trust maton.ai because your API key and the full email contents (including attachments) will pass through their service. Use a dedicated, limited-scope API key you can rotate or revoke if needed, avoid sending highly sensitive data through the gateway, and verify Maton's privacy/retention policies and account settings. If you prefer not to proxy through a third party, consider calling api.resend.com directly with a Resend API key instead.
功能分析
Type: OpenClaw Skill Name: resend-api Version: 1.0.0 The skill provides a standard interface for the Resend API via a managed gateway (gateway.maton.ai). It uses the MATON_API_KEY environment variable for authentication as documented. The provided Python snippets in SKILL.md are straightforward implementations using standard libraries for HTTP requests and do not contain any malicious logic, obfuscation, or unauthorized data exfiltration beyond the intended API communication.
能力评估
Purpose & Capability
Name/description, required env var (MATON_API_KEY), and the SKILL.md all describe sending and managing emails via a Maton gateway that proxies to Resend. The requested credential is appropriate for that purpose.
Instruction Scope
Instructions only perform HTTP requests to gateway.maton.ai and ctrl.maton.ai and require MATON_API_KEY. They do not instruct reading unrelated files or system state. Note: the gateway proxies requests (so Maton will see email content and headers) — this is expected behavior but important for privacy.
Install Mechanism
No install spec and no code files — the skill is instruction-only and does not write or execute new binaries on disk.
Credentials
Only one required env var (MATON_API_KEY) is requested, which is proportional to the described gateway integration. Registry metadata lists no primary credential field, but the SKILL.md consistently uses MATON_API_KEY; this is a minor metadata omission rather than an incoherence.
Persistence & Privilege
always is false and the skill does not request persistent system-wide changes or other skills' credentials. Autonomous invocation is allowed by platform default (not a problem here).
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install resend-api
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /resend-api 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.0
Initial release of resend skill — provides managed integration with the Resend API for email operations via Maton. - Send single or batch transactional emails through the Resend API. - Manage email domains, templates, contacts, broadcasts, and webhooks. - Full authentication via Maton API key with easy connection management. - Includes Python example code for all supported API endpoints. - Supports multiple Resend connections with connection selection via headers.
元数据
Slug resend-api
版本 1.0.0
许可证 MIT-0
累计安装 0
当前安装数 0
历史版本数 1
常见问题

Resend 是什么?

Resend API integration with managed authentication. Send transactional emails, manage domains, contacts, templates, and broadcasts. Use this skill when users... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 238 次。

如何安装 Resend?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install resend-api」即可一键安装,无需额外配置。

Resend 是免费的吗?

是的,Resend 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

Resend 支持哪些平台?

Resend 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 Resend?

由 byungkyu(@byungkyu)开发并维护,当前版本 v1.0.0。

💬 留言讨论