Transactional email with explicit terminal delivery state for every send. EU-hosted. Replayable. Multi-tenant ready.
Terminal delivery state, not transport acceptance.
Built strictly for transactional email. Not for campaigns.
import { Truncus } from '@truncus/node'
const truncus = new Truncus({ apiKey: 'tr_...' })
const { status, message_id } = await truncus.emails.send({
to: 'user@example.com',
from: 'hello@yourapp.com',
subject: 'Your invoice is ready',
html: '<p>Thanks for your order.</p>'
})
// → { status: 'delivered', message_id: 'msg_8f21' }
// → { status: 'bounced', reason: 'mailbox_full' }Most email APIs return "accepted" and surface it as "delivered." Final mailbox state is not guaranteed.
Truncus exposes the terminal state of every send:
No inferred status. No implicit retries. No optimistic success codes. Your system receives a terminal state.
Every send returns a terminal state. Failures include a machine-readable reason.
// call
const { status, message_id } = await truncus.emails.send(...)// possible responses
{ "status": "delivered", "message_id": "msg_8f21" }{ "status": "bounced", "reason": "mailbox_full" }{ "status": "rejected", "reason": "suppression_list" }Delivery events are stored and queryable.
Operational model
Transport: AWS SES (global delivery).
Control plane: Truncus (EU) — stores events, enforces idempotency, replays webhooks, exposes terminal state.
Transport layer: AWS SES (global deliverability). Control layer: Truncus orchestration and event storage (EU-hosted). Account data, logs, and webhook history remain in EU infrastructure.
Each send returns a terminal state. No acceptance masquerading as delivery.
Structured JSON responses. Built-in idempotency. MCP-compatible. Designed for systems that act on delivery state.
Per-tenant domains. Reputation separation. Automated warm-up. Isolated suppression lists. One tenant cannot degrade another.
All delivery events are stored. Replay on demand. Supports recovery from downtime, endpoint failure, agent crash, and testing workflows.
Fixed tiers. No hidden overage rules. No forced annual contracts.
Delivery events are stored in real time and remain queryable. Terminal state. Stored. Replayable.
| Time | Message ID | To | Subject | Status | Reason |
|---|---|---|---|---|---|
| 09:14:02 | msg_8f21a3 | user@acme.com | Your invoice is ready | delivered | — |
| 09:14:18 | msg_9b44c1 | old@defunct.co | Password reset | bounced | mailbox_full |
| 09:14:33 | msg_a2f7e8 | blocked@example.org | Welcome aboard | rejected | suppression_list |
| 09:15:01 | msg_c3d9f2 | team@startup.io | Deployment succeeded | delivered | — |
Configure SPF, DKIM, DMARC. Automatic verification and warm-up.
Single endpoint. Typed SDKs. Deterministic response.
Real-time webhooks. Queryable log. Replay when needed.
Truncus is designed for transactional infrastructure. Campaign platforms optimize for marketing workflows.
| Feature | Truncus | Resend | SendGrid |
|---|---|---|---|
| EU data residency | Default | US | US |
| Deterministic terminal state | Yes | Partial | Partial |
| Explicit failure reason | Yes | Partial | Partial |
| Replayable webhooks | Yes | No | No |
| Multi-tenant isolation | Built-in | Manual | Enterprise |
| Agent-native (MCP) | Yes | No | No |
| Predictable pricing | Fixed tiers | Soft limits | Volume tiers |
All plans include deterministic delivery, replayable webhooks, and EU data residency. No annual contracts.
For testing and development
For shipping products
For serious infrastructure
No credit card required.
Why Truncus exists
Transactional systems depend on accurate delivery state. Most APIs expose acceptance, not final mailbox state. Truncus was built to expose explicit terminal delivery state for every send.
Jasper — Founder, Van Moose
Deterministic terminal state. EU-hosted orchestration. Replayable delivery events.
Get API keyNo credit card required.