SendrinSendrin Docsv1.0 (Current)
Channels

Email & SMTP Transport

High-throughput transactional email delivery via Postal SMTP connection pooling and dynamic sender handles.

Sendrin provides dedicated transactional email delivery backed by a self-hosted Postal SMTP relay cluster with connection pooling and TLS encryption.

⚡ Integrate with AI

1. Default Shared Sender Handle

By default, every application receives a dedicated email address on the shared IITDeveloper domain:

{application_slug}@sendrin.com

For example, an application named "Acme Billing" with slug acme-billing dispatches from:

"Acme Billing" <[email protected]>

To send from your own domain (e.g. billing.acme.com), see Custom Sending Domains & DKIM.

2. Dispatching an Email (POST /api/v1/notifications)

Sendrin utilizes template-driven events. Specify your registered event_key, the target email inside the recipient object, and variables matching your template schema in data. Always provide a unique Idempotency-Key header.

curl -X POST "https://api.sendrin.com/api/v1/notifications" \
-H "Authorization: Bearer sendrin_a1b2c3d4e5f6.xY7z..." \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 1f8e21a0-4b39-4c28-98e1-58291df930b1" \
-d '{
  "event_key": "statement_ready",
  "channel": "email",
  "recipient": {
    "email": "[email protected]"
  },
  "data": {
    "customer_name": "Taylor",
    "invoice_number": "INV-4029",
    "statement_url": "https://acme.com/invoices/4029"
  }
}'

3. Asynchronous Acceptance (202 Accepted)

The endpoint responds with 202 Accepted indicating that the notification has been validated and persisted to the transactional outbox:

Response
202 Accepted
{
"id": "notif_01HXYZ11AA22BB33CC44DD55EE",
"application_id": "app_01HXYZ11223344556677889900",
"event_key": "statement_ready",
"channel": "email",
"recipient": {
  "email": "[email protected]"
},
"event_data": {
  "customer_name": "Taylor",
  "invoice_number": "INV-4029",
  "statement_url": "https://acme.com/invoices/4029"
},
"metadata_json": {},
"locale": "en",
"variant": "default",
"priority": 5,
"status": "pending",
"correlation_id": null,
"scheduled_at": null,
"next_attempt_at": "2026-09-16T02:00:00Z",
"failure_code": null,
"created_at": "2026-09-16T02:00:00Z",
"updated_at": "2026-09-16T02:00:00Z"
}

4. Postal Connection Pooling & Delivery Lifecycle

Sendrin utilizes an asynchronous SMTP connection pool configured via environment variables:

  • Keep-Alive Pool: Reuses warm SMTP connections to eliminate TLS handshake latency.
  • Failover Queue: Transient relay errors trigger exponential backoff retries via Celery background tasks.
  • Strict TLS: Enforces STARTTLS encryption across all outbound relays.

Track email transmission states (queued → processing → delivered / failed) in the Sendrin Console activity feed or subscribe to Outbound Webhooks.

On this page