Transactional email you can see into.
A REST API, SDK and CLI for sending, receiving and watching email, hosted in Germany. Warmup, bounces and IP reputation are visible, not hidden.
import { DevelEmail } from '@develemail/sdk';
export async function sendWelcomeOnce() {
const client = new DevelEmail({
apiKey: process.env.DEVELEMAIL_API_KEY!,
baseUrl: 'https://develemail.com/api',
});
const { id, status } = await client.emails.send(
{
from: '[email protected]',
to: '[email protected]',
subject: 'Welcome aboard',
text: 'Your account is ready.',
},
{ idempotencyKey: 'welcome-user-42' },
);
return { id, status };
}curl -X POST https://develemail.com/api/v1/emails \
-H "Authorization: Bearer $DEVELEMAIL_API_KEY" \
-H "Idempotency-Key: welcome-user-42" \
-H "Content-Type: application/json" \
-d '{
"from": "[email protected]",
"to": "[email protected]",
"subject": "Welcome aboard",
"text": "Your account is ready."
}'import os
import requests
response = requests.post(
"https://develemail.com/api/v1/emails",
headers={
"Authorization": f"Bearer {os.environ['DEVELEMAIL_API_KEY']}",
"Idempotency-Key": "welcome-user-42",
},
json={
"from": "[email protected]",
"to": "[email protected]",
"subject": "Welcome aboard",
"text": "Your account is ready.",
},
)
response.raise_for_status()import { DevelEmail, Heading, Html, Text } from '@develemail/react';
function Welcome({ name }: { name: string }) {
return (
<Html>
<Heading>Welcome, {name}</Heading>
<Text>Your account is ready.</Text>
</Html>
);
}
export async function sendWelcome() {
const client = new DevelEmail({
apiKey: process.env.DEVELEMAIL_API_KEY!,
baseUrl: 'https://develemail.com/api',
});
return client.emails.send({
from: '[email protected]',
to: '[email protected]',
subject: 'Welcome aboard',
react: <Welcome name="Ada" />,
});
}API keys come from your project in the dashboard or with devel key create.
How it works
From a new domain to your first observed send, in four steps.
Add your domain
Register a sending domain and get the DKIM, SPF and DMARC records to publish.
devel domains add example.comPublish DNS from the CLI
Push the records to Cloudflare and wait until verification passes.
devel domains publish-dns <id> && devel domains verify <id> --waitSend
Call the REST API or the TypeScript SDK. Idempotency keys make retries safe.
Observe
Tail events from the terminal, read logs, and get a daily deliverability digest.
devel tail
What you get
Each feature below ships today.
REST API and SDK
Idempotency keys, batch send, sandbox recipients and a typed TypeScript SDK, plus Next.js and Fastify packages.
Learn more: REST API and SDKVisible deliverability
Per-domain IP warmup, suppression lists, reputation block detection and a daily digest.
Learn more: Visible deliverabilityInbound and conversations
Receive mail on your domain and keep replies grouped in the same product you send from.
Learn more: Inbound and conversationsA CLI that does the DNS work
Add a domain, publish its records to Cloudflare and wait for verification without leaving the terminal. Signed webhooks and React templates too.
Learn more: A CLI that does the DNS workYour data, your call
Hosted in Germany, isolated per organization, with data export and account deletion in the product.
Learn more: Your data, your call
Deliverability you can inspect
Warmup runs per domain and pauses itself when bounces or deferrals climb, then resumes. If an IP lands on a reputation blocklist, the daily digest tells you. Suppression lists and content scanning keep bad sends off your reputation.
| Days | Daily cap | Note |
|---|---|---|
| 0 to 7 | 50 | |
| 7 to 14 | 100 | |
| 14 to 18 | 200 | |
| 18 to 25 | 0 | Auto-pause |
| 25 to 32 | 200 | Auto-resume |
| 32 to 39 | 400 | |
| 39 to 46 | 800 | |
| 46 to 53 | 1,600 | |
| 53 to 56 | Full volume | Full volume |
[DevelEmail] Daily digest — sample
Yesterday’s stats
- Attempted
- 1,200
- Delivered
- 1,180
- Bounced
- 8
- Failed
- 2
- Bounce rate
- 0.7%
Needs attention
Bounced · [email protected] · 550 5.1.1 user unknown
IP reputation
No blocks reported
Warmup progress
example.com · stage 3 of 6 · Resumed automatically after a clean cooldown
Blocklist status
Clean ✓
Built for developers
Typed SDK, signed webhooks, idempotent sends and a CLI that fits in a deploy script. Docs live alongside the API reference.
devel login
Authenticated successfully.
devel domains add mail.example.com
Created domain: mail.example.com (<id>)
devel domains publish-dns <id> --yes
devel domains verify <id> --wait
devel tail
Tailing email events… (Ctrl-C to stop)
Hosted in Germany
DevelEmail runs on servers in Nuremberg, Germany. You can export your data and request deletion from the product.
Access is invite-only for now
Tell us what you are sending and we will review your request.
Request access