Documentation
Everything you need to start sending emails with AISend.
Quick Start
From signup to your first 201 Created in under 30 seconds. No DNS setup required — use our shared sandbox sender to skip domain verification while testing.
- Create a free account at aisend.app/signup (or call
POST /api/v1/auth/agent-signupif you're an AI agent) - Copy your API key (format
re_*) - Send a test email from
hello@send.aisend.app— no domain setup needed - When you're ready for production, add and verify your own domain for branded send addresses
Already using Resend?
AISend speaks the same request format. To migrate, change one base URL and swap your key — no code rewrite. The endpoint also works without the /api/v1 prefix (POST /emails) so a Resend client only needs its base URL pointed at AISend.
# Resend
- https://api.resend.com/emails
# AISend (same body, same Bearer auth)
+ https://api.aisend.app/emailsInstallation
npm install aisend-emailpnpm add aisend-emailyarn add aisend-emailSend Your First Email
Node.js / TypeScript
import { AISend } from 'aisend-email';
const aisend = new AISend('re_your_api_key');
const { id, status } = await aisend.emails.send({
from: 'hello@send.aisend.app', // shared sandbox sender — no DNS setup needed
to: 'user@example.com',
subject: 'Hello from AISend',
html: '<p>Your first email!</p>',
});
console.log('Sent:', id, status);cURL
curl -X POST https://api.aisend.app/api/v1/emails \
-H "Authorization: Bearer re_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"from": "hello@send.aisend.app",
"to": "user@example.com",
"subject": "Hello from AISend",
"html": "<p>Your first email!</p>"
}'Python
import requests
response = requests.post(
"https://api.aisend.app/api/v1/emails",
headers={
"Authorization": "Bearer re_your_api_key",
"Content-Type": "application/json",
},
json={
"from": "hello@send.aisend.app",
"to": "user@example.com",
"subject": "Hello from AISend",
"html": "<p>Your first email!</p>",
},
)
print(response.json())REST API Reference
Base URL: https://api.aisend.app (use /emails or /api/v1/emails)
Authentication
All requests require a Bearer token in the Authorization header.
Authorization: Bearer re_your_api_keyEndpoints
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/v1/emails | Send an email |
| GET | /api/v1/emails/:id | Get email status |
| GET | /api/v1/emails | List emails |
| POST | /api/v1/api-keys | Create API key |
| GET | /api/v1/api-keys | List API keys |
| DELETE | /api/v1/api-keys/:id | Revoke API key |
| POST | /api/v1/email-validation/validate | Validate email address |
| POST | /api/v1/auth/agent-signup | AI agent signup |
Send Email — Request Body
{
"from": "hello@send.aisend.app", // Required. Verified sending address (or shared sandbox)
"to": "user@example.com", // Required. String or array of strings
"subject": "Email subject", // Required
"html": "<p>HTML body</p>", // html or text required
"text": "Plain text body" // html or text required
}Send Email — Response
A successful send returns 201 Created with the email ID. Use GET /api/v1/emails/:id to fetch full status and delivery details.
{
"id": "em_abc123"
}Idempotency
Include an Idempotency-Key header to prevent duplicate sends.
Idempotency-Key: unique-request-id-123Custom Domains
To send from your own domain, add it in the dashboard and configure DNS records. AISend automatically generates SPF and DKIM records. Domain verification typically takes under 5 minutes once DNS propagates.
Webhooks
Receive real-time delivery events via HTTP webhooks. Configure endpoints in the dashboard.
Event Types
email.sentemail.deliveredemail.openedemail.clickedemail.bouncedemail.complainedWebhook Payload
{
"type": "email.delivered",
"data": {
"email_id": "em_abc123",
"to": "user@example.com",
"timestamp": "2026-03-21T00:00:00.000Z"
}
}Verify webhook signatures using the x-webhook-signature header (HMAC-SHA256).
Email Validation
Validate email addresses before sending to reduce bounces.
// Request
{ "email": "user@example.com" }
// Response
{
"email": "user@example.com",
"valid": true,
"checks": {
"format": true,
"mx": true,
"disposable": false,
"role": false
},
"risk": "low"
}AI Agent Signup
AI agents can create an account and get an API key with a single request — no browser or email verification needed.
// Request
{ "name": "My AI Agent" }
// Response
{
"token": "eyJhbG...",
"apiKey": "re_abc123...",
"userId": "550e8400-...",
"email": "my-ai-agent-a1b2c3@agent.aisend.app",
"expiresAt": "2027-03-21T00:00:00.000Z"
}Use the returned apiKey as a Bearer token to send emails. Agent accounts start on the free tier (3,000 emails/month).
MCP Server (Claude Integration)
Give Claude Desktop, Claude Code, or any MCP-compatible AI assistant the ability to send emails, check delivery status, validate addresses, and manage API keys — all through natural language.
Quick Setup
Add this to your claude_desktop_config.json or project .mcp.json:
{
"mcpServers": {
"aisend": {
"command": "npx",
"args": ["-y", "aisend-mcp"],
"env": {
"AISEND_API_KEY": "re_your_api_key"
}
}
}
}Available Tools
| Tool | Description |
|---|---|
| send_email | Send an email (from, to, subject, html/text) |
| get_email_status | Check delivery status of a sent email |
| list_emails | List recently sent emails with status |
| validate_email | Validate an email address before sending |
| list_api_keys | List all API keys |
| create_api_key | Create a new API key |
| list_domains | List verified and pending domains |
| agent_signup | Create a new AISend account (no API key needed) |
Zero-Config Agent Signup
Don't have an API key? The MCP server includes an agent_signup tool. Just ask Claude: "Sign up for AISend and send an email to..." — it will create an account, get credentials, and send the email automatically.
Example Prompts for Claude
Error Handling
AISend uses standard HTTP status codes. Error responses include a JSON body with an error field.
| Status | Meaning |
|---|---|
| 200 | Success |
| 400 | Bad request — check your parameters |
| 401 | Unauthorized — invalid or missing API key |
| 404 | Not found |
| 422 | Validation error — check required fields |
| 429 | Rate limited — check Retry-After header |
| 500 | Server error — retry with exponential backoff |
Ready to Start Sending?
3,000 emails/month free. No credit card required.