What is CeanAI?
CeanAI is a transactional email infrastructure service. You get reliable delivery, a user-friendly REST API, and a dashboard to manage templates, domains, automations, and analytics.
Dashboard First
No-code setup for domains, templates, automations, and analytics.
Secure
API key authentication, hashed keys, and abuse protection.
High Deliverability
Verified domains, DKIM, and enterprise-grade infrastructure.
Real-Time Analytics
Live delivery status, logs, usage, and trends.
Getting Started in 5 Steps
Follow this checklist to go from zero to sending your first email.
Create your account
Sign up at /signup. You get a 7-day free trial with 100 emails — no credit card required.
Verify a custom domain
Go to Dashboard → Custom Domains, add your domain, and copy the DKIM (TXT) and Return-Path (CNAME) records to your DNS provider. Click Verify DNS once records have propagated.
Create your first template
Go to Dashboard → Templates. Click Seed Default Templates to instantly create welcome, OTP, password reset, and login alert templates. Or build your own with {{variable}} placeholders.
Create an automation
Go to Dashboard → Automations. Choose an event type (e.g., user.signup) and link it to a template. From now on, that event automatically sends the right email.
Get an API key
Go to Dashboard → API Keys and create a key. Copy the full key immediately — it is shown only once. Use it in the X-API-Key header of every API request.
Connect Your App to CeanAI
Use the Events API to trigger automated emails from your backend. Choose your language below and copy the working code.
Important: Keep your API key secret. Never expose it in client-side code or public repositories. Calls should be made from your server.
Base URL
https://api.ceanai.com/api/v1Replace with your actual backend URL if self-hosting.
const API_URL = 'https://api.ceanai.com/api/v1';
const API_KEY = 'your_api_key';
async function sendEmail(eventType, to, data = {}) {
const response = await fetch(`${API_URL}/events`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-Key': API_KEY,
},
body: JSON.stringify({
event: eventType,
to,
data,
}),
});
if (!response.ok) {
const err = await response.json();
throw new Error(err.error?.message || 'Failed to send email');
}
return response.json();
}
// Example: send a welcome email
sendEmail('user.signup', 'user@example.com', {
name: 'John',
appName: 'MyApp',
});API Reference
All API calls require an X-API-Key header. The Events API is the recommended way to send transactional emails.
/eventsTrigger an automated email. CeanAI looks up the automation matching the event type, fills the linked template with your data, and sends the email.
Request body
{
"event": "user.signup",
"to": "user@example.com",
"data": {
"name": "John",
"appName": "MyApp"
},
"idempotencyKey": "optional-unique-key"
}event— required, must match an automation event typeto— required, valid recipient email addressdata— optional object passed to the template variablesidempotencyKey— optional string to prevent duplicate sends
/emails/sendSend a single email directly without using an automation or template. Useful for one-off or dynamic content.
const API_URL = 'https://api.ceanai.com/api/v1';
const API_KEY = 'your_api_key';
async function sendDirectEmail({ to, subject, html, from }) {
const response = await fetch(`${API_URL}/emails/send`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-Key': API_KEY,
},
body: JSON.stringify({
to,
subject,
html,
from,
}),
});
return response.json();
}
sendDirectEmail({
to: 'user@example.com',
subject: 'Welcome to MyApp',
html: '<h1>Welcome!</h1><p>Thanks for joining.</p>',
from: 'hello@yourdomain.com',
});to— required recipientsubject— required email subjecthtml— required HTML bodyfrom— required sender address on a verified domaintext— optional plain text fallbackreplyTo— optional reply-to address
Other Endpoints
/keys— List your API keys/keys— Create a new API key/keys/:id— Revoke an API key/templates— List templates/templates— Create a template/templates/seed— Seed default templates/templates/:id/test— Send a test email/events— List event logs (JWT auth)/emails— List sent emails (JWT auth)Common Event Types
| Event | Description | Typical Template |
|---|---|---|
user.signup | New user registration | Welcome email |
auth.otp | OTP verification code | OTP email |
password.reset | Password reset link | Password reset |
security.login | New login notification | Login alert |
auth.magic-link | Magic link authentication | Magic link |
notification | Generic notification | Custom notification |
Dashboard Guide
Everything you need to manage email is in the dashboard.
Overview
Quick stats on total sent, delivered, failed, and current usage. Your command center for email health.
Custom Domains
Add and verify domains. Copy DKIM and Return-Path records to your DNS provider to enable sending.
Templates
Create and edit email templates with {{variable}} placeholders. Seed default templates in one click.
Automations
Map event types to templates. Once set up, CeanAI sends emails automatically when events arrive.
API Keys
Create, name, and revoke keys. The full key is shown only once, so save it immediately.
Logs
Detailed history of every email with status, recipient, and timestamp. Search and filter easily.
Analytics
Charts for delivery rates, volume, event distribution, and failures over time.
Billing
View plan, usage, and billing history. Upgrade or downgrade from the dashboard.
Email Templates
Templates define the subject and body of your emails. Use variables to personalize content.
Using Variables
Wrap variable names in double curly braces: {{name}}. When an event is triggered, pass the value in the data object and CeanAI replaces it automatically.
Subject
Welcome to {{appName}}, {{name}}!
Body
Hi {{name}}, your verification code is {{code}}.
Data passed in API call
data: { name: "John", appName: "MyApp", code: "123456" }
Seed Default Templates
New workspaces can instantly create templates for common flows: welcome, OTP, password reset, login alert, and magic link. Go to Dashboard → Templates and click Seed Default Templates.
Event-Based Automations
Automations link an event type to a template. Once created, every matching event sends the email automatically.
How to Create an Automation
- 1Go to Dashboard → Automations
- 2Click "Create Automation"
- 3Choose an event type (e.g., user.signup)
- 4Select the template to use
- 5Save — the automation is now active
Note: Only one automation is allowed per event type. To change the template for an event, edit the existing automation.
Custom Domains
Send emails from your own domain to build trust and improve deliverability.
- 1Go to Dashboard → Custom Domains
- 2Click "Add Domain" and enter your domain (e.g., yourdomain.com)
- 3Copy the generated DKIM (TXT) and Return-Path (CNAME) records
- 4Add them to your DNS provider (Cloudflare, GoDaddy, Namecheap, etc.)
- 5Click "Verify DNS" in CeanAI once records have propagated
- 6Start sending from addresses like noreply@yourdomain.com
Analytics & Logs
Track every email event and understand delivery performance.
Delivery Tracking
Sent, delivered, opened, bounced, and failed counts in real time.
Usage Statistics
Monitor your monthly quota and API call volume.
Event Logs
Search and filter every email event by status, recipient, or date.
Volume Trends
Daily and 30-day volume charts for delivery analysis.
Billing & Plans
Choose the plan that fits your volume. Upgrade or downgrade anytime.
| Plan | Price | Email Limit | API Keys |
|---|---|---|---|
| Free Trial | Free | 100 emails (7 days) | 1 |
| Starter | $18/mo | 8,000/month | 5 |
| Growth | $49/mo | 40,000/month | 10 |
| Pro | $89/mo | 90,000/month | Unlimited |
Usage resets according to your Paddle billing cycle. Go to Dashboard → Billing to manage your plan.
Need Help?
Our team is here to help you get the most out of CeanAI.