Transactional Email API
Email API, engineered in Europe.
Transactional email, SMTP relay, and inbound parsing — from one Rust-powered API hosted in the EU. A GDPR-native alternative to Resend, SendGrid, and Postmark.
import { Postkit } from '@postkit/sdk';
const postkit = new Postkit('pk_live_...');
await postkit.emails.send({
from: 'hello@yourapp.eu',
to: 'user@example.com',
subject: 'Welcome aboard!',
html: '<h1>Welcome, {{name}}!</h1>'
});Powerful features, simple API
Send, receive, schedule, template, sign, and track — all over one HTTPS endpoint. Everything you need to manage transactional email at scale.
Email Sending
REST API and SMTP relay. Single or batch up to 100 emails. Scheduled delivery.
Templates
Handlebars-powered with variables. Draft/publish versioning.
Signed Webhooks
Real-time delivery events with HMAC-SHA256 signing (Standard Webhooks). Exponential backoff retries.
Custom Domains
DKIM, SPF, DMARC verification. Automated DNS monitoring.
Inbound Email
Receive and parse incoming email. MIME parsing, S3 attachment storage.
Idempotent Sends
Send an Idempotency-Key header to safely retry without duplicates. 24-hour deduplication window.
Rate-limited by Design
Standard X-RateLimit headers on every response. Retry-After on 429. Predictable, well-documented limits.
Developer Experience
Send in any language
import { Postkit } from '@postkit/sdk';
const postkit = new Postkit('pk_live_...');
const email = await postkit.emails.send({
from: 'hello@yourapp.eu',
to: 'user@example.com',
subject: 'Welcome aboard!',
html: '<h1>Welcome!</h1>'
});
console.log(email.id); // em_abc123...Why Europe
Built where your data belongs
EU Data Residency
Hetzner Cloud, Vienna & Frankfurt. Your data never leaves the EU. No US cloud providers, no third-country transfers.
GDPR by Design
Opt-in tracking, DPA included, suppression management built-in. Compliance isn't an afterthought — it's the architecture.
Austrian Engineering
Rust backend, compile-time SQL, type-safe APIs. Precision meets developer experience. Built for reliability — uses 5× less RAM than Node.js alternatives.
Pricing
Simple, transparent pricing
Start free, scale as you grow. No hidden fees, no overage surprises.
Free
For side projects and testing
- 100 emails / month
- 1 domain
- 5 templates
- 1 webhook endpoint
- Community support
Pro
For growing products
- 50,000 emails / month
- 10 domains
- Unlimited templates
- 10 webhook endpoints
- Email support
- €0.40 per 1,000 overage
Business
For production workloads
- 200,000 emails / month
- Unlimited domains
- Unlimited templates
- Unlimited webhooks
- Priority support + SLA
- €0.30 per 1,000 overage
FAQ
Frequently asked questions
Yes. Postkit is GDPR-native by design. All data is stored exclusively in EU data centers (Hetzner, Vienna and Frankfurt). A Data Processing Agreement is included at every plan tier, and suppression management is built in.
Exclusively within the European Union. Postkit runs on Hetzner Cloud in Vienna and Frankfurt. Your data never leaves the EU and no US cloud providers are involved.
Yes. Postkit receives, parses (full MIME), and stores inbound emails with attachments on EU-hosted S3-compatible storage. Inbound messages are queryable via the REST API and can trigger webhooks.
The default rate limit is 10 requests per second per organization, with 2 requests per second for batch sends. Every response includes standard X-RateLimit headers, and 429 responses include Retry-After.
Both. Postkit offers a REST API for modern applications and an SMTP relay for legacy systems or anything that speaks SMTP.
Yes. Postkit is designed for agent use — idempotency keys defend against retry-loop duplicates, signed webhooks let agents subscribe to replies, and inbound parsing gives agents a real inbox. A dedicated MCP server for Claude and OpenAI function calling is coming soon.
Postkit is built on top of Postal, an open-source SMTP engine. The Postkit API layer (templates, webhooks, auth, inbound, billing) is proprietary, but the delivery foundation is open.