FOR DEVELOPERS ON ANY STACK
One POST. That is the whole integration.
Django, Rails, Node, Go, a cron job written in bash — if it can make an HTTP request, it can use this. There is no SDK to adopt and nothing to rewrite, because the integration surface is deliberately small enough to read in one sitting.
Keep your language, your framework and your mail server.The API reference documents every error type, including the ones that mean stop retrying.
WHERE WE SIT
Your mail goes out the way it does today. We write down what happened.
Your appyoursSends one request: who it goes to, which template to use, and the values to fill in.
Spoolwaythis is usWe fill in your template, hand it to your server, and write down every step.
Your mail serveryoursAmazon SES, Mailgun, Postmark, or your own server. We never send as if the mail were ours.
Your customeryoursGets the email, the same as they do today. Your address, your reputation.
and every step above is written down
THE RECORDsearchable later — and kept for exactly as long as you decide
Did that email actually go out?Your mail server’s own reply, word for word, with the time it was accepted.
What exactly did it say?The message itself, stored encrypted, for as long as your retention policy says — or never stored at all.
Who else can send as us?Every key is named and belongs to a person. Revoke one without breaking the rest.
WHAT CHANGES FOR YOU
Four things, in plain words.
One endpoint, small enough to readA single JSON POST with a template name and the values to fill in. No SDK to adopt, nothing to rewrite.
Idempotent on purposeSend the same key twice and the second call returns the first result. Retries after a timeout do not duplicate mail.
Errors that say what to doEvery failure names whether retrying will help. A refusal arrives at the edge as a 4xx, not at delivery time as a message that vanished.
Keys that belong to a personEach key is named, scoped to what it needs, and revocable on its own. Removing one does not break the rest.
THE INTEGRATION
The whole integration
POST /api/v1/messages
Authorization: Bearer spw_live_…
Content-Type: application/json
{"template":"billing/invoice","application":"billing-prod",
"to":"[email protected]","variables":{"total":"$81.02"}}WHAT WE DO NOT DO
We never send mail as if it were ours, and we never show a delivery we cannot prove.
There is no plan where we become your sender. Your server keeps your reputation. Where a mail server cannot report back, the record stops at the handoff and says so — no green tick standing in for a fact nobody has.
what we hold, and what we do not have yet →ALSO WRITTEN FOR
Your transport. Your record.
Running in five minutes.
connect your mail server → name the product → send a testStart free — no card requiredFree forever tier · caps pause, never auto-upgrade