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":"orders@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.

Make it replyable

Send a Reply-To that points back to your application object.

Generate an opaque address for an order, ticket, invoice, or other object and use it as the outbound message's Reply-To. When the recipient replies, Linje delivers the email and your immutable metadata to a signed inbox webhook.

Read the reply-by-email guide.

Next step

Send the product email your application already needs.

Send your first transactional email Read the API docs