Email infrastructure for developers, marketers, and AI agents. Transactional, broadcast, and inbound through one API, CLI, and SDKs for every runtime.
<container>
<heading>
Welcome, {{firstName}}
</heading>
<paragraph>
Thanks for joining us.
</paragraph>
<button href="https://sevk.io">
Get started →
</button>
</container>import { readFile } from 'node:fs/promises'
import { Sevk } from 'sevk'
const markup = await readFile('welcome.sevk', 'utf8')
const sevk = new Sevk(process.env.SEVK_API_KEY!)
await sevk.emails.send({
from: 'hello@yourdomain.com',
to: 'ada@example.com',
subject: 'Welcome aboard',
markup
})One workflow,
every role.
Marketers write copy, designers shape the template, developers wire it to the API. Same markup, same render output, same primitives across every surface.
View all featuresAI generation
Draft sevk Markup from a prompt or an AI agent. Output is valid markup, not a free-text guess.
Visual editor
WYSIWYG that emits sevk Markup, not HTML soup. Marketers and developers edit the same source.
MCP for AI agents
Connect agents directly to sevk through 74 focused tools. Existing API keys, existing scopes, same backend logic.
Inbound emails
Receive on your own domain, forward messages to a shared inbox, and link replies back to the original send.
Command-line interface
Send, render, broadcast from your shell. Single static binary, multiple profiles, scriptable end to end.
SDKs in eight languages
Node, Python, Go, Rust, Java, .NET, PHP, and Ruby. One HTTP surface, identical resource shape across every SDK.
Write emails
like code.
A markup language designed for email clients. No build step, no transpile, no framework runtime. Write it, render it, send it.
<section background-color="#f8f9fa" padding="40px 20px">
<container max-width="600px">
<section padding="0" text-align="center">
<heading level="1" color="#1a1a1a">
Welcome to sevk! 👋
</heading>
</section>
<section padding="20px 0" text-align="center">
<text color="#666666">
We're excited to have you on board.
</text>
</section>
<section padding="0" text-align="center">
<button padding="10px 20px" background-color="#0a0a0a" color="#ffffff" border-radius="8px" href="https://sevk.io">
Get Started
</button>
</section>
</container>
</section>Polyglot SDKs,
same markup.
Render sevk Markup locally and call emails.send from Node, Bun, Python, Go, PHP, Ruby, .NET, Java, or Rust. Same primitives, same HTTP surface.
Browse all SDKsimport { Sevk, render } from 'sevk';
const sevk = new Sevk('your-api-key');
const html = render(`
<section padding="40px 20px" background-color="#f8f9fa">
<container max-width="600px">
<heading level="1" color="#1a1a1a">Welcome!</heading>
<paragraph color="#666666">Thanks for signing up.</paragraph>
<button href="https://example.com" background-color="#5227FF" color="#ffffff">
Get Started
</button>
</container>
</section>
`);
sevk.emails.send({
to: 'recipient@example.com',
from: 'hello@yourdomain.com',
subject: 'Welcome!',
html
});Prompt in,
markup out.
Describe the email. Get valid sevk Markup back. Edit it, render it, send it. The output is the same source the editor uses.
Your terminal is a first-class client.
Every API surface has a CLI command. Works in CI jobs, AI agent tool calls, and ad-hoc shell sessions. Same auth model, same output formats.
Prepaid balance.
Per email cost.
Outbound and accepted inbound email each include 1,000 free messages every month. After its own allowance, each direction costs $0.001 per email. No tiers, seat fees, or plan upgrades. Higher-volume pricing is negotiable. Excludes applicable taxes.
Changelog
in your inbox.
New sevk Markup tags, SDK releases, and API changes. Sent when there's something to report, not on a schedule.