Email infrastructure
for the agentic era
Generate, preview, validate, and send emails, from your code, your terminal, or your AI agent. One API, every workflow.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16import Migma from 'migma'; const migma = new Migma(process.env.MIGMA_API_KEY); const email = await migma.emails.generateAndWait({ projectId: 'proj_abc123', // your brand colors, logo, and knowledge prompt: 'Welcome email for new subscribers', }); await migma.sending.send({ recipientEmail: '[email protected]', conversationId: email.data.conversationId, subject: email.data.result.subject, from: '[email protected]', fromName: 'Your Brand', });
One platform, every interface
Node.js library
Import a brand, generate an email, and send it, all in a few lines of TypeScript. The SDK handles polling, retries, and error handling for you.
Command line
Create and send emails without leaving the terminal. Chain commands in scripts, pipe JSON output, or add to your CI/CD pipeline.
Emails from any chat platform
OpenClaw is an open-source AI agent for WhatsApp, Telegram, Discord, and Slack. Install the Migma skill and generate, validate, and send emails from a chat message.
Built for AI agents
Connect Migma to your agent stack, MCP, Skills, or direct API calls
MCP Server
Connect to Claude Desktop, Claude Code, Cursor, and any MCP-compatible client. 25+ tools out of the box.
npx -y @migma/mcpAI Coding Skills
Add Migma to Claude Code, Cursor, Codex, and 35+ AI coding assistants. One command.
npx skills add MigmaAI/migma-skillsWebhooks
Real-time event notifications. Get instant callbacks when emails generate, sends complete, or exports finish.
migma webhooks create --url https://...Brands
import Migma from 'migma';
const migma = new Migma(process.env.MIGMA_API_KEY);
// Import brand from a website, auto-polls
const brand = await migma.projects.importAndWait({
urls: ['https://yourbrand.com']
});
console.log(brand.data.projectId); // proj_abc123
console.log(brand.data.name);
// List all projects
const projects = await migma.projects.list();
console.log(projects.data.projects);Import brands from any URL
Pass a website URL, Migma extracts colors, fonts, logos, and tone of voice automatically. Returns a projectId you use everywhere.
Email Generation
import Migma from 'migma';
const migma = new Migma(process.env.MIGMA_API_KEY);
// Generate and wait, returns conversationId
const email = await migma.emails.generateAndWait({
projectId: 'proj_123',
prompt: 'Welcome email for new subscribers',
languages: ['en']
});
console.log(email.data.conversationId); // conv_xyz789
console.log(email.data.result.subject);
console.log(email.data.result.html);Generate on-brand emails
Async email generation returns a conversationId. Poll or use webhooks. Get HTML, React code, and subject when ready.
Send Email
import Migma from 'migma';
const migma = new Migma(process.env.MIGMA_API_KEY);
// Send to a single recipient using conversationId
const result = await migma.sending.send({
recipientType: 'email',
recipientEmail: '[email protected]',
conversationId: email.data.conversationId,
subject: email.data.result.subject,
from: '[email protected]',
fromName: 'Your Brand',
});
console.log(result.data.id);
// Or send to an entire segment
await migma.sending.send({
recipientType: 'segment',
recipientId: 'seg_vip',
conversationId: email.data.conversationId,
subject: 'Exclusive offer',
from: '[email protected]',
fromName: 'Your Brand',
});Send to individuals or audiences
Pass a conversationId, the API resolves the template and project automatically. Send to one recipient, a tag, or a segment.
Email Preview
import Migma from 'migma';
const migma = new Migma(process.env.MIGMA_API_KEY);
// Create previews and wait for screenshots
const preview = await migma.previews.createAndWait({
html: email.data.result.html,
subject: 'Welcome aboard!',
devices: [
'gmail-web', 'outlook-2021',
'iphone-15', 'pixel-8'
]
});
// Each device has a screenshot URL
for (const d of preview.data.devices) {
console.log(d.deviceName, d.screenshotUrl);
}Preview on 40+ real devices
Generate screenshots rendered on real email clients. Test across Gmail, Outlook, iPhone, and more.
Contacts
import Migma from 'migma';
const migma = new Migma(process.env.MIGMA_API_KEY);
// List contacts with filters
const contacts = await migma.contacts.list({
projectId: 'proj_123',
status: 'subscribed',
tags: 'vip,newsletter',
page: 1,
limit: 50
});
console.log(contacts.data);
console.log(contacts.count);Manage your audience
Import contacts in bulk, segment audiences, filter by tags and status, and manage subscriber lists.
Export
import Migma from 'migma';
const migma = new Migma(process.env.MIGMA_API_KEY);
// Export to HTML
const html = await migma.export.html('conv_abc123');
console.log(html.data.files[0].url);
// Export to Klaviyo
const klaviyo = await migma.export.klaviyo('conv_abc123');
// Export to PDF
const pdf = await migma.export.pdf('conv_abc123');
// Other formats: mjml, mailchimp, hubspotExport to any ESP
Export conversations to Mailchimp, Klaviyo, HubSpot, HTML, MJML, or PDF, one method per format.
Get started in minutes
Three steps to your first AI-generated email
Install
npm install migmaAuthenticate
export MIGMA_API_KEY="sk_live_..."Generate and send
import Migma from 'migma';
const migma = new Migma(process.env.MIGMA_API_KEY);
// Generate, returns a conversationId
const email = await migma.emails.generateAndWait({
projectId: 'proj_123',
prompt: 'Welcome email for new subscribers',
languages: ['en']
});
// Send the generated email
await migma.sending.send({
recipientType: 'email',
recipientEmail: '[email protected]',
conversationId: email.data.conversationId,
subject: email.data.result.subject,
from: '[email protected]',
fromName: 'Your Brand',
});