Maildeno ships official SDKs for JavaScript/TypeScript and Python. Both expose an identical conceptual surface — only the language idioms differ.
Since v2.0 the SDKs render in-process: they fetch a template’s JSON from Maildeno once via GET /v1/sdk/template/{id}, cache it locally (memory or disk), and render HTML / React Email / MJML on your own server. Your merge tags and visibility context never leave your infrastructure. See JS Caching / Python Caching for the caching model.
Available SDKs
| Language | Package | Version | Minimum runtime |
|---|---|---|---|
JavaScript / TypeScript |
2.1.0 |
Node.js 18+ (or any runtime with native |
|
Python |
2.0.0 |
Python 3.9+ |
Quick comparison
| Feature | JavaScript SDK | Python SDK |
|---|---|---|
Async support |
Native ( |
|
Sync support |
N/A (JS is async by nature) |
|
Transport |
Native |
|
Type safety |
Full TypeScript types exported |
Full PEP 561 type stubs (mypy / pyright) |
Error type |
|
|
Validation errors |
|
|
Rendering |
In-process (embedded engine) |
In-process (embedded Wasm engine) |
Caching |
Memory (default) or disk, with stale-on-error fallback |
Memory (default) or disk, with stale-on-error fallback |
Render methods
Both SDKs expose the same methods:
| Method | Returns |
|---|---|
|
Full result object ( |
|
Rendered HTML string |
|
Rendered React/TSX string |
|
Rendered MJML string |
Where to go next
-
JavaScript / TypeScript SDK — full reference
-
Python SDK — full reference
-
REST API — raw HTTP reference (no SDK)
-
Error Codes — complete error code reference
-
API Key Scopes — key creation and permissions