An email API that works with the HTTP client you already have.
No SDK to install: curl, fetch or requests is enough. An OpenAPI schema, structured errors and a test mode make the rest predictable.
- 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 }Built for the way you work.
Errors you can act on
Every error has a
type, a stablecode, theparameterat fault, arequest_id, and whether it isretryable.An OpenAPI schema
One canonical schema describes every endpoint, field and error, for your client generator or your tests.
Docs your coding agent can read
llms.txt and llms-full.txt give AI coding tools the whole documentation in one request.
Test keys with known outcomes
os_test_keys and simulator addresses let your test suite check bounces and complaints, not only the happy path.
When you may want something else.
We would rather you choose well than switch twice.
- You want a typed SDK in your language today. Outstamp has none yet, though the OpenAPI schema can generate one.
- Your stack only speaks SMTP. Outstamp has no SMTP relay yet.
From key to first email.
- 1
Copy a test key
Create it in the dashboard and keep it in your server's environment.
- 2
Make one request
POST /v1/emailswith from, to, subject and html. You get202and an id. - 3
Read the events
GET /v1/emails/{id}/events, or subscribe a webhook endpoint.
Questions from developers.
Which languages can I use?
Any language that can make an HTTPS request. The docs show curl, Node.js and Python.
Is there a rate limit?
Yes, per project, and it grows as your sending history builds up. The limits and their error codes are in Limits and errors.
How do I find out what went wrong with a request?
Log the request_id from the error. It links the request to the email in your dashboard.
Make your first request in test mode.
No card, no DNS and no SDK.
- No card needed to test
- Prices in euros, excluding VAT