Linje

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.