A transactional email API for the emails your app cannot lose.
Password resets, sign-in links, receipts and alerts: one HTTP request each, with a record of what happened to every one.
- No card needed to test
- Prices in euros, excluding VAT
curl -X POST https://api.outstamp.dev/v1/emails \
-H "Authorization: Bearer $OUTSTAMP_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: welcome-42" \
-d '{
"from": "Acme <[email protected]>",
"to": "[email protected]",
"subject": "Welcome to Acme",
"html": "<p>Your account is ready.</p>"
}'const response = await fetch("https://api.outstamp.dev/v1/emails", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.OUTSTAMP_API_KEY}`,
"Content-Type": "application/json",
"Idempotency-Key": `welcome-${user.id}`
},
body: JSON.stringify({
from: "Acme <[email protected]>",
to: "[email protected]",
subject: "Welcome to Acme",
html: "<p>Your account is ready.</p>"
})
});
const email = await response.json(); // 202, { id, status: queued }import os, requests
response = requests.post(
"https://api.outstamp.dev/v1/emails",
headers={
"Authorization": f"Bearer {os.environ['OUTSTAMP_API_KEY']}",
"Idempotency-Key": f"welcome-{user.id}",
},
json={
"from": "Acme <[email protected]>",
"to": "[email protected]",
"subject": "Welcome to Acme",
"html": "<p>Your account is ready.</p>",
},
)
email = response.json() # 202, { id, status: queued }What a transactional email API should give you.
An id only when it is safe
Outstamp answers
202with an email id only after the email is stored. If it cannot store it, you get a retryable503, never a made-up id.Retries that do not duplicate
An
Idempotency-Keymakes a retried request return the first answer instead of sending again.The truth about delivery
Accepted, queued, sent, delivered, bounced or complained, each as its own event on a timeline.
Webhooks for every event
Signed, retried for 48 hours and replayable for 30 days, so your app can react to bounces and complaints.
When Outstamp is not the right tool.
We would rather you choose well than switch twice.
- Newsletters, campaigns or cold outreach. Outstamp is for messages a person expects because of something they did.
- Sending from the browser. Outstamp is a server-side API, and keys stay on your server.
- Receiving email. Outstamp only sends.
Your first transactional email in three steps.
- 1
Create a project
You get a test environment and an
os_test_key straight away. - 2
Send to the simulator
Use
[email protected]and watch the events arrive. - 3
Go live
Verify your domain, create a live key and send to real people.
Questions about transactional email.
What is transactional email?
Email triggered by something a person did or needs: confirming a sign-up, resetting a password, a receipt, a security alert. It goes to one person, who expects it.
How is it different from marketing email?
Marketing email goes to a list to promote something. Transactional email is part of using your product. Outstamp only sends transactional email.
Can I schedule emails?
Yes, from 1 minute to 30 days ahead. You can cancel or reschedule until 60 seconds before the send.
Can I send attachments?
Yes, on paid plans: up to 15 MB per file and 40 MB per message.
Send your first email in test mode.
No card and no DNS.
- No card needed to test
- Prices in euros, excluding VAT