zeptomail
ZeptoMail API for transactional email. Use when user mentions "ZeptoMail", "transactional email", "send email", or Zoho email.
Best use case
zeptomail is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
ZeptoMail API for transactional email. Use when user mentions "ZeptoMail", "transactional email", "send email", or Zoho email.
Teams using zeptomail should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/zeptomail/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How zeptomail Compares
| Feature / Agent | zeptomail | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
ZeptoMail API for transactional email. Use when user mentions "ZeptoMail", "transactional email", "send email", or Zoho email.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
## Troubleshooting
If requests fail, run `zero doctor check-connector --env-name ZEPTOMAIL_TOKEN` or `zero doctor check-connector --url https://api.zeptomail.com/v1.1/email --method POST`
## How to Use
Base URL: `https://api.zeptomail.com/v1.1`
### 1. Send Basic Email
Write to `/tmp/zeptomail_request.json`:
```json
{
"from": {
"address": "noreply@yourdomain.com",
"name": "Your App"
},
"to": [
{
"email_address": {
"address": "user@example.com",
"name": "User"
}
}
],
"subject": "Welcome to Our Service",
"htmlbody": "<h1>Welcome!</h1><p>Thank you for signing up.</p>"
}
```
Then run:
```bash
curl -s "https://api.zeptomail.com/v1.1/email" -X POST --header "Authorization: Zoho-enczapikey $ZEPTOMAIL_TOKEN" --header "Content-Type: application/json" -d @/tmp/zeptomail_request.json
```
### 2. Send Plain Text Email
Write to `/tmp/zeptomail_request.json`:
```json
{
"from": {
"address": "noreply@yourdomain.com",
"name": "Your App"
},
"to": [
{
"email_address": {
"address": "user@example.com",
"name": "User"
}
}
],
"subject": "Your OTP Code",
"textbody": "Your one-time password is: 123456\n\nThis code expires in 10 minutes."
}
```
Then run:
```bash
curl -s "https://api.zeptomail.com/v1.1/email" -X POST --header "Authorization: Zoho-enczapikey $ZEPTOMAIL_TOKEN" --header "Content-Type: application/json" -d @/tmp/zeptomail_request.json
```
### 3. Send Email with Tracking
Enable open and click tracking:
Write to `/tmp/zeptomail_request.json`:
```json
{
"from": {
"address": "noreply@yourdomain.com",
"name": "Your App"
},
"to": [
{
"email_address": {
"address": "user@example.com",
"name": "User"
}
}
],
"subject": "Order Confirmation #12345",
"htmlbody": "<p>Your order has been confirmed. <a href=\"https://example.com/track\">Track your order</a></p>",
"track_clicks": true,
"track_opens": true,
"client_reference": "order-12345"
}
```
Then run:
```bash
curl -s "https://api.zeptomail.com/v1.1/email" -X POST --header "Authorization: Zoho-enczapikey $ZEPTOMAIL_TOKEN" --header "Content-Type: application/json" -d @/tmp/zeptomail_request.json
```
### 4. Send to Multiple Recipients (CC/BCC)
Write to `/tmp/zeptomail_request.json`:
```json
{
"from": {
"address": "noreply@yourdomain.com",
"name": "Your App"
},
"to": [
{
"email_address": {
"address": "user1@example.com",
"name": "User 1"
}
}
],
"cc": [
{
"email_address": {
"address": "user2@example.com",
"name": "User 2"
}
}
],
"bcc": [
{
"email_address": {
"address": "admin@example.com",
"name": "Admin"
}
}
],
"subject": "Team Update",
"htmlbody": "<p>Here is the latest update for the team.</p>",
"reply_to": [
{
"address": "support@yourdomain.com",
"name": "Support"
}
]
}
```
Then run:
```bash
curl -s "https://api.zeptomail.com/v1.1/email" -X POST --header "Authorization: Zoho-enczapikey $ZEPTOMAIL_TOKEN" --header "Content-Type: application/json" -d @/tmp/zeptomail_request.json
```
### 5. Send Email with Attachment (Base64)
```bash
# Encode file to base64
FILE_CONTENT=$(base64 -i /path/to/file.pdf)
```
Write to `/tmp/zeptomail_request.json`:
```json
{
"from": {
"address": "noreply@yourdomain.com",
"name": "Your App"
},
"to": [
{
"email_address": {
"address": "user@example.com",
"name": "User"
}
}
],
"subject": "Your Invoice",
"htmlbody": "<p>Please find your invoice attached.</p>",
"attachments": [
{
"name": "invoice.pdf",
"mime_type": "application/pdf",
"content": "${FILE_CONTENT}"
}
]
}
```
Then run:
```bash
curl -s "https://api.zeptomail.com/v1.1/email" -X POST --header "Authorization: Zoho-enczapikey $ZEPTOMAIL_TOKEN" --header "Content-Type: application/json" -d @/tmp/zeptomail_request.json
```
### 6. Send Email with Inline Image
```bash
# Encode image to base64
IMAGE_CONTENT=$(base64 -i /path/to/logo.png)
```
Write to `/tmp/zeptomail_request.json`:
```json
{
"from": {
"address": "noreply@yourdomain.com",
"name": "Your App"
},
"to": [
{
"email_address": {
"address": "user@example.com",
"name": "User"
}
}
],
"subject": "Newsletter",
"htmlbody": "<p><img src='cid:logo'/></p><p>Welcome to our newsletter!</p>",
"inline_images": [
{
"cid": "logo",
"name": "logo.png",
"mime_type": "image/png",
"content": "${IMAGE_CONTENT}"
}
]
}
```
Then run:
```bash
curl -s "https://api.zeptomail.com/v1.1/email" -X POST --header "Authorization: Zoho-enczapikey $ZEPTOMAIL_TOKEN" --header "Content-Type: application/json" -d @/tmp/zeptomail_request.json
```
### 7. Send Templated Email
Use pre-defined templates with merge fields:
Write to `/tmp/zeptomail_request.json`:
```json
{
"template_key": "your-template-key",
"from": {
"address": "noreply@yourdomain.com",
"name": "Your App"
},
"to": [
{
"email_address": {
"address": "user@example.com",
"name": "User"
}
}
],
"merge_info": {
"user_name": "John",
"order_id": "12345",
"total": "$99.00"
}
}
```
Then run:
```bash
curl -s "https://api.zeptomail.com/v1.1/email/template" -X POST --header "Authorization: Zoho-enczapikey $ZEPTOMAIL_TOKEN" --header "Content-Type: application/json" -d @/tmp/zeptomail_request.json
```
Template example (in ZeptoMail dashboard):
```html
<p>Hi {{user_name}},</p>
<p>Your order #{{order_id}} totaling {{total}} has been shipped!</p>
```
### 8. Batch Send (Multiple Recipients)
Send to up to 500 recipients with personalized merge fields:
Write to `/tmp/zeptomail_request.json`:
```json
{
"from": {
"address": "noreply@yourdomain.com",
"name": "Your App"
},
"subject": "Your Monthly Report - {{month}}",
"htmlbody": "<p>Hi {{name}},</p><p>Here is your report for {{month}}.</p>",
"to": [
{
"email_address": {
"address": "user1@example.com",
"name": "User 1"
},
"merge_info": {
"name": "Alice",
"month": "December"
}
},
{
"email_address": {
"address": "user2@example.com",
"name": "User 2"
},
"merge_info": {
"name": "Bob",
"month": "December"
}
}
]
}
```
Then run:
```bash
curl -s "https://api.zeptomail.com/v1.1/email/batch" -X POST --header "Authorization: Zoho-enczapikey $ZEPTOMAIL_TOKEN" --header "Content-Type: application/json" -d @/tmp/zeptomail_request.json
```
### 9. Batch Send with Template
Write to `/tmp/zeptomail_request.json`:
```json
{
"template_key": "your-template-key",
"from": {
"address": "noreply@yourdomain.com",
"name": "Your App"
},
"to": [
{
"email_address": {
"address": "user1@example.com",
"name": "User 1"
},
"merge_info": {
"user_name": "Alice",
"code": "ABC123"
}
},
{
"email_address": {
"address": "user2@example.com",
"name": "User 2"
},
"merge_info": {
"user_name": "Bob",
"code": "XYZ789"
}
}
]
}
```
Then run:
```bash
curl -s "https://api.zeptomail.com/v1.1/email/template/batch" -X POST --header "Authorization: Zoho-enczapikey $ZEPTOMAIL_TOKEN" --header "Content-Type: application/json" -d @/tmp/zeptomail_request.json
```
## Response Format
### Success Response
```json
{
"data": [
{
"code": "EM_104",
"additional_info": [],
"message": "OK"
}
],
"message": "OK",
"request_id": "abc123..."
}
```
### Error Response
```json
{
"error": {
"code": "TM_102",
"details": [
{
"code": "TM_102",
"message": "Invalid email address",
"target": "to"
}
],
"message": "Invalid request"
},
"request_id": "abc123..."
}
```
## Common Error Codes
| Code | Description |
|------|-------------|
| TM_101 | Authentication failed (invalid token) |
| TM_102 | Invalid request parameters |
| TM_103 | Domain not verified |
| TM_104 | Rate limit exceeded |
| EM_104 | Success |
## Guidelines
1. **Transactional only** - Do not use for marketing or bulk promotional emails
2. **Verify domain first** - Sender address must be from a verified domain
3. **Size limit** - Total email size (headers + body + attachments) must not exceed 15 MB
4. **Batch limit** - Maximum 500 recipients per batch request
5. **Use templates** - For consistent emails, create templates in the dashboard
6. **Track reference** - Use `client_reference` to correlate emails with your transactions
7. **TLS required** - API only supports TLS v1.2+Related Skills
zoom
Zoom API for managing meetings, webinars, cloud recordings, and user data. Use when user mentions "Zoom", "Zoom meeting", "join URL", "cloud recording", or "webinar".
zep
Zep API for long-term memory and conversation history management in AI agents. Use when user mentions "Zep", "conversation memory", "session memory", "memory search", "user facts", "agent memory", or "long-term memory".
zendesk
Zendesk API for customer support. Use when user mentions "Zendesk", "support ticket", "customer service", or help desk.
zapsign
ZapSign API for e-signatures. Use when user mentions "ZapSign", "e-signature", "sign document", or Brazilian e-signature.
zapier
Zapier API for workflow automation. Use when user mentions "Zapier", "zap", "automation", or asks about connecting apps.
youtube
YouTube API for videos and channels. Use when user mentions "YouTube", "youtube.com", "youtu.be", shares a video link, "channel stats", or asks about video content.
xero
Xero API for accounting. Use when user mentions "Xero", "accounting", "invoices", "bookkeeping", or asks about financial management.
x
X (Twitter) API for tweets and profiles. Use when user mentions "X", "Twitter", "x.com", "twitter.com", shares a tweet link, "check X", or asks about social media posts.
wrike
Wrike API for project management. Use when user mentions "Wrike", "wrike.com", shares a Wrike link, "Wrike task", or asks about Wrike workspace.
workos
WorkOS API for enterprise SSO, SCIM directory sync, RBAC fine-grained authorization, and audit logs. Use when user mentions "WorkOS", "SSO", "SAML", "SCIM", "directory sync", "enterprise authentication", "audit log", or "fine-grained authorization".
workflow-migration
VM0 migration helper for Claude Code workflows. Use when user says "migrate to VM0", "move to VM0", "convert skill to VM0", or asks about migrating local Claude Code workflows.
wix
Wix API for website management. Use when user mentions "Wix", "wix.com", "wixsite.com", shares a Wix link, "Wix site", or asks about Wix CMS.