Transactional Email API
Send product email without the campaign machinery.
Linje handles magic links, receipts, password resets, invites, and alerts. It keeps retries, bounces, delivery events, and timelines visible when you need to debug.
Send
Use POST /v1/messages.
curl -fsS \
-H "Authorization: Bearer $LINJE_PROJECT_TOKEN" \
-H "content-type: application/json" \
-d '{
"idempotency-key":"welcome-user-123",
"from":"no-reply@tx.example.com",
"to":["person@example.net"],
"subject":"Welcome",
"text":"Welcome to Example.",
"html":"<p>Welcome to Example.</p>"
}' \
https://api.linje.systems/v1/messages
Semantics
Linje separates accepted, delivered, bounced, and dead.
Status
Meaning
Use
accepted
The configured transport accepted the message.
Safe handoff, not inbox placement.
delivered
The remote MX accepted the message.
Requires Postfix log ingestion.
bounced
A correlated hard-bounce DSN was ingested.
Suppression should apply.
Events
Send status changes to your application.
Projects can receive outbound event webhooks for accepted, delivered, bounced, and dead messages. Webhook delivery is signed, retryable, and replayable.