The email API
you'd actually pick.
Typed SDKs in 7 languages. Idempotent sends. HMAC-signed webhooks with replay. OpenTelemetry-compatible tracing. Zero proprietary dashboards required to ship.
SDK languages
7
Median send
187ms
Event types
9
Idempotency TTL
24h
One endpoint.
Every send shape.
Transactional, marketing, receipts, one-offs, bulk batch, React components rendered at send time — the same POST /v1/email handles all of it.
Idempotency keys
Every key cached for 24h. Retry a thousand times, deliver exactly once.
Batch sending
Up to 100 recipients per request, individually tracked, single atomic call.
Scheduled delivery
Pass
scheduled_at; we queue and fire to the minute.Attachments up to 40MB
base64 or pre-signed URL, MIME types you pick.
Tags & metadata
Up to 10 tags, 40 metadata fields. Filter logs, slice analytics.
// One call. Typed response. Retries built in.const { id, status } = await volt.send({from: 'team@acme.dev',to: ['dev@customer.io'],subject: 'Your receipt #4827',react: <Receipt order={order} />,tags: ['billing', 'receipt'],metadata: { order_id: order.id, plan: 'pro_plus' },idempotencyKey: `receipt:${order.id}`,});// → { id: "em_01HQ7X9KVZT…", status: "queued" }
Every state change,
signed and streamed.
Delivered · Opened · Clicked · Bounced · Complained · Deferred · Unsubscribed · Queued · Rejected. Nine event types, HMAC-signed payloads, exponential retry, dashboard replay.
HMAC-SHA256 signing
Verify
X-VoltMail-Signature; rotate secrets without downtime.Retry with backoff
5 attempts over 3 hours, then dead-letter queue you can replay.
Replay from dashboard
Pick a date range, pick events, replay to any endpoint.
Event filtering
Subscribe per-endpoint to only the events you need. No noise.
TypeScript schemas
Zod-validated payloads bundled with the SDK.
Scoped keys.
Zero-downtime rotation.
Separate live from test. Separate read from send. Rotate without a deploy. Audit who used what, last.
Permission scopes
send:write,logs:read,domains:admin, etc.IP allowlists
Bind a key to specific CIDR ranges.
Rate limits per key
Protect production from runaway scripts.
Last-used tracking
Find stale keys. Revoke with a click.
Audit log
Every key action (create, rotate, revoke) recorded, exportable as CSV.
- prod-apiLIVEsend:writevm_live_•••••• 7a2f
- prod-logsLIVElogs:readvm_live_•••••• 3c91
- ci-testsTESTsend:writevm_test_•••••• b4e2
- webhooks-adminLIVEwebhooks:adminvm_live_•••••• 9d05
- legacy-migrationREVOKEDvm_live_•••••• e118
What ships with every SDK.
Typed client
Full request + response types per endpoint, generated from OpenAPI.
Discriminated errors
`InvalidInputError`, `RateLimitError`, `IdempotentReplay` — never `unknown`.
Retry policy
Exponential backoff with jitter on 5xx + network errors. Configurable.
Webhook verifier
HMAC-SHA256 signature check, replay-window guard, raw-body helper.
Zod schemas
Every event type bundled. Parse webhook bodies with one call.
Mock client for tests
In-memory implementation that records sends, asserts, and replays.
Tracing hooks
OpenTelemetry-compatible. Wire to your existing trace context.
CLI
Tail logs, send a test email, verify a domain — without the dashboard.
Read the OpenAPI.
Paste the key. Ship.
Free forever up to 3,000 emails / month. No card. No call. The pricing page is the contract.