Transactional email infrastructure
OpenSES: an open-source transactional email API for Amazon SES
OpenSES turns Amazon SES into a clean sending API with logs, webhooks, domains, and templates. Open source, self-hostable, and ready for cloud teams.
Trusted by teams using AWS SES
Quick start
Send an email in
60 seconds.
Install the SDK
npm install @openses/opensesInitialize with your API key
Works with any AWS region.
Send
It's in the inbox.
import { OpenSES } from '@openses/openses'
const client = new OpenSES({
apiKey: process.env.OPENSES_API_KEY,
baseUrl: 'https://email.mycompany.com',
})
const { id } = await client.emails.send({
from: 'Acme <noreply@acme.com>',
to: ['user@example.com'],
subject: 'Your order is confirmed',
html: '<p>Order #1042 is on its way.</p>',
})
console.log(`Sent: ${id}`)
// Sent: em_k8s92jx1n3pFeatures
Everything email infrastructure needs.
Not a marketing platform. A sending infrastructure layer with the primitives serious applications need.
Architecture
Zero vendor lock-in. Your infra, your data.
OpenSES sits between your application and Amazon SES. Your credentials and email content stay inside your AWS model.
Pricing
Simple pricing, no surprises.
You pay AWS for the emails. We charge for the platform.
AWS SES costs $0.10 per 1,000 emails. OpenSES adds nothing to that sending cost.
Need SAML, multi-region, or a higher SLA? Talk to us about Enterprise
What developers say
The DX you expect. Without the lock-in.
Open Source
Everything is in the open. Read it, fork it, contribute.
AGPL-3.0 core / MIT SDK
FAQ
Frequently asked questions.
Everything teams usually ask before moving transactional email onto their own SES account.
What is OpenSES?
OpenSES is an open-source transactional email platform that wraps Amazon SES. It adds a clean REST API, a Node.js SDK, delivery and bounce logs, signed webhooks, domain verification, and reusable templates on top of the SES account you already own.
How is OpenSES different from Resend, SendGrid, or Postmark?
Those services resell email sending at their own margin and hold your sending reputation. OpenSES sends through your own Amazon SES account, so you pay AWS directly at $0.10 per 1,000 emails and keep control of your domains, sending limits, and deliverability reputation. OpenSES is also open source and can be self-hosted.
How much does OpenSES cost?
The core platform is free and open source under AGPL-3.0-only, and self-hosting costs nothing beyond your own infrastructure. Managed cloud plans are available for teams that do not want to run it themselves. In every case, email sending is billed by AWS at $0.10 per 1,000 emails — OpenSES adds nothing to that per-email cost.
Can I self-host OpenSES?
Yes. OpenSES ships as a Docker deployment covering the API, dashboard, and Postgres database. Self-hosting keeps email content, logs, and API keys entirely inside your own infrastructure.
Do I need my own AWS account to use OpenSES?
Yes. OpenSES connects to your Amazon SES account using your AWS credentials and works with any AWS region. Your SES sending quota, verified domains, and reputation stay under your control.
How do I migrate from Resend to OpenSES?
The OpenSES Node.js SDK includes a Resend-compatible facade for the transactional sending path. Existing code can keep the same client variable, the emails.send() call, and the { data, error } response shape, so most migrations only require swapping the import and the API key.
How does OpenSES handle webhooks?
OpenSES signs the raw webhook request body with HMAC-SHA256 and sends the result in the X-OpenSES-Signature header. Your endpoint recomputes the signature with your webhook secret and compares it to verify the payload is authentic.
What email events does OpenSES track?
OpenSES records queued, sending, sent, delivered, opened, bounced, and complained events for every message, with per-recipient detail available in the dashboard logs and over the API.
Start sending in minutes.
Not weeks.
Self-host for free or start with OpenSES Cloud. No vendor lock-in either way.
Cloud plans start at $10/month. No free trial.
Self-hosted: AGPL-3.0 for the core, MIT for the SDK.