Transactional email for your application

Send password resets, receipts, and account notifications through REST or SMTP. Verify your sending domain, check each API response, and process signed delivery events with EU/EEA-hosted primary service data.

Evaluating providers? See why Postscale is an EU transactional email provider for product teams.

Prepare for a real delivery

A successful API request is the start of delivery. Separate your application job, Postscale's accepted request, and the recipient server's delivery event.

1. Configure live sending

Complete account approval. Add an active outbound or combined domain, verify SPF and an active DKIM key, and store a live API key on your server. Outbound-only sending can keep existing mailbox MX records.

Review DNS requirements →

2. Handle the send response

Test keys return simulated results without sending mail. For live sends, keep the message_id and inspect errors, suppressions, and limits. Idempotency-Key is not supported: investigate ambiguous timeouts before resubmitting.

Read the request contract →

3. Process delivery events

Subscribe to delivered, bounced, deferred, and complained events. Verify signatures against the raw body and make business updates idempotent. Delivery means acceptance by the recipient's mail server, not inbox placement or a read receipt.

Implement signed webhooks →

Everything the product needs. Nothing it does not.

A focused API surface with production controls, predictable resources, and the operational visibility to run email confidently.

01

SDKs, REST API, and SMTP relay

Use an official SDK or call REST from your backend. Keep SMTP where your application already expects it, and use delivery logs and webhooks to follow live messages.

02

Verify sender authentication

Publish the SPF and DKIM records shown for your domain, then verify them. Configure DMARC for your domain and the recommended return-path record for delayed bounce handling.

03

Real-time webhooks

Delivered, bounced, deferred, and complained events fire HMAC-signed webhooks as Postscale processes delivery logs, DSNs, and feedback-loop reports. Retries use exponential backoff.

04

Templates and merge fields

Create and update reusable templates with variable substitution, then preview them before sending. Keep application-specific localization and experiment logic in your own workflow.

05

Suppression list included

Complaints, hard bounces, and unsubscribes are managed automatically. Hitting a suppressed address fails fast instead of damaging reputation.

06

EU/EEA-hosted primary service data

Primary production service data is hosted in the EU/EEA. Limited network, device, and operational metadata may be processed by infrastructure providers under appropriate transfer safeguards.

Start with one request.

The public API uses explicit resources and familiar JSON. Move from a first request to production without changing integration models.

Keep this call in a server-side job or adapter. The example makes one request and does not automatically retry. If the connection fails after submission, the message may already be queued. Test keys exercise the request without sending, delivery webhooks, or quota consumption.

See sending docs
Node.js: check an accepted send ready
const response = await fetch("https://api.postscale.io/v1/send", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.POSTSCALE_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    from: "receipts@yourapp.example",
    to: ["user@example.com"],
    subject: "Your receipt",
    text_body: "Thank you for your order.",
    tags: ["receipt"],
  }),
});
const result = await response.json();
if (!response.ok) {
  throw new Error(result.error || "Send request failed");
}
// Persist with your application job; await delivery events separately.
console.log(result.message_id, result.status, result.environment);

FAQ

Can I retry a timed-out send automatically?

No automatic retry safety is promised. The sending endpoints do not support Idempotency-Key. Keep application job state and investigate whether a timed-out request was accepted before resubmitting, because another request can produce a duplicate email.

REST or SMTP: which should I use?

Use an SDK or REST if you control the sending code. Use SMTP for an existing framework or system that already speaks it. Follow the limits and error behavior of the chosen interface; track live delivery through logs and webhooks.

How good is the deliverability?

Authentication, suppression handling, feedback-loop complaints, and warming controls help you operate a sender responsibly. Inbox placement also depends on recipient engagement, content, and reputation. A delivered event confirms remote mail-server acceptance, not inbox placement.

What does it cost?

Free tier includes a working shared send + receive volume for evaluation. Paid plans start at €9/mo. Outbound usage is counted per accepted recipient, including To, Cc, and Bcc.

Can I send from my own domain?

Yes. Use an active, verified outbound or combined domain with SPF and an active verified DKIM key, plus an approved sending account. Publish the exact DNS records shown in your domain settings; propagation and approval times vary.

Build the email workflow your product needs.

The free tier includes everything required to evaluate the API. No credit card required.

Create a free account