brainstorming
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or planning anything new, in software or out of it (a talk, a business, a renovation).
resendResend API integration with managed authentication. Send transactional emails, manage domains, contacts, templates, and broadcasts. Use this skill when users want to send emails, manage email templates, create contact lists, or set up email broadcasts. For other third party apps, use the api-gateway skill (https://clawhub.ai/byungkyu/api-gateway).
Independent GitHub snapshot · Automated classification · Original documentation governs
Access the Resend API with managed authentication. Send transactional emails, manage domains, contacts, templates, broadcasts, and webhooks.
# List sent emails
python <<'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
https://gateway.maton.ai/resend/{endpoint}
The gateway proxies requests to api.resend.com and automatically injects your API key.
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"
Manage your Resend connections at https://ctrl.maton.ai.
python <<'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
python <<'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
python <<'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"
}
}
python <<'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
If you have multiple Resend connections, specify which one to use with the Maton-Connection header:
python <<'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.
Send and manage transactional emails.
POST /resend/emails
Example:
python <<'EOF'
import urllib.request, os, json
data = json.dumps({
'from': 'you@yourdomain.com',
'to': ['recipient@example.com'],
'subject': 'Hello from Resend',
'html': '<p>Welcome to our service!</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"
}
POST /resend/emails/batch
Example:
python <<'EOF'
import urllib.request, os, json
data = json.dumps([
{'from': 'you@yourdomain.com', 'to': ['a@example.com'], 'subject': 'Email 1', 'text': 'Content 1'},
{'from': 'you@yourdomain.com', 'to': ['b@example.com'], '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
GET /resend/emails
Example:
python <<'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": "you@yourdomain.com",
"to": ["recipient@example.com"],
"subject": "Hello from Resend",
"created_at": "2026-03-13T10:00:00.000Z"
}
]
}
GET /resend/emails/{email_id}
Example:
python <<'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
PATCH /resend/emails/{email_id}
DELETE /resend/emails/{email_id}
Manage sending domains.
GET /resend/domains
Example:
python <<'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"
}
]
}
POST /resend/domains
Example:
python <<'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 /resend/domains/{domain_id}
PATCH /resend/domains/{domain_id}
DELETE /resend/domains/{domain_id}
POST /resend/domains/{domain_id}/verify
Manage contact lists.
GET /resend/contacts
Example:
python <<'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
POST /resend/contacts
Example:
python <<'EOF'
import urllib.request, os, json
data = json.dumps({
'email': 'contact@example.com',
'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 /resend/contacts/{contact_id}
PATCH /resend/contacts/{contact_id}
DELETE /resend/contacts/{contact_id}
Manage email templates.
GET /resend/templates
Example:
python <<'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
POST /resend/templates
Example:
python <<'EOF'
import urllib.request, os, json
data = json.dumps({
'name': 'Welcome Email',
'subject': 'Welcome to our service!',
'html': '<h1>Welcome!</h1><p>Thanks for signing up.</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 /resend/templates/{template_id}
PATCH /resend/templates/{template_id}
DELETE /resend/templates/{template_id}
POST /resend/templates/{template_id}/publish
POST /resend/templates/{template_id}/duplicate
Create audience segments for targeting.
GET /resend/segments
Example:
python <<'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
POST /resend/segments
Example:
python <<'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 /resend/segments/{segment_id}
DELETE /resend/segments/{segment_id}
Send emails to segments.
GET /resend/broadcasts
Example:
python <<'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
POST /resend/broadcasts
Example:
python <<'EOF'
import urllib.request, os, json
data = json.dumps({
'name': 'Weekly Newsletter',
'from': 'newsletter@yourdomain.com',
'subject': 'This Week\'s Update',
'html': '<h1>Weekly Update</h1><p>Here\'s what happened...</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 /resend/broadcasts/{broadcast_id}
PATCH /resend/broadcasts/{broadcast_id}
DELETE /resend/broadcasts/{broadcast_id}
POST /resend/broadcasts/{broadcast_id}/send
Configure event notifications.
GET /resend/webhooks
Example:
python <<'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
POST /resend/webhooks
Example:
python <<'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 sentemail.delivered - Email was deliveredemail.opened - Email was openedemail.clicked - Link in email was clickedemail.bounced - Email bouncedemail.complained - Recipient marked as spamGET /resend/webhooks/{webhook_id}
PATCH /resend/webhooks/{webhook_id}
DELETE /resend/webhooks/{webhook_id}
Manage API keys.
GET /resend/api-keys
Example:
python <<'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
POST /resend/api-keys
Example:
python <<'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 /resend/api-keys/{api_key_id}
Manage subscription topics.
GET /resend/topics
POST /resend/topics
Example:
python <<'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_subscriptionis required. Values:subscribedorunsubscribed.
GET /resend/topics/{topic_id}
PATCH /resend/topics/{topic_id}
DELETE /resend/topics/{topic_id}
Manage custom contact properties.
GET /resend/contact-properties
POST /resend/contact-properties
GET /resend/contact-properties/{property_id}
PATCH /resend/contact-properties/{property_id}
DELETE /resend/contact-properties/{property_id}
// 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: 'you@yourdomain.com',
to: ['recipient@example.com'],
subject: 'Hello!',
html: '<p>Welcome!</p>'
})
});
const data = await response.json();
console.log(data.id);
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': 'you@yourdomain.com',
'to': ['recipient@example.com'],
'subject': 'Hello!',
'html': '<p>Welcome!</p>'
}
)
email = response.json()
print(f"Email sent: {email['id']}")
from address must use a verified domainjq or other commands, environment variables like $MATON_API_KEY may not expand correctly in some shell environments| 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 |
MATON_API_KEY environment variable is set:echo $MATON_API_KEY
python <<'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
To send emails, you must first add and verify a domain:
POST /resend/domainsPOST /resend/domains/{id}/verify