Every login link and receipt, accounted for.

Send account email with one API call. Postar signs it, delivers it, and tells you in plain words what happened. When a message doesn't arrive, you see why.

Transactional mail only: messages a person triggers by using your product.

message 7c41e0b2
POST /v1/send { "from": "login@postar.vip", "to": "sam@example.com", "subject": "Your login link" }
  1. 0.00saccepted202, queued for delivery
  2. 0.01squeuedproject "Acme web", rate limit ok
  3. 0.34ssignedDKIM d=postar.vip s=mail
  4. 0.52sconnectedgmail-smtp-in.l.google.com, TLS 1.3
  5. 0.91sdelivered250 2.0.0 OK
An example. Your dashboard shows this for every message you send.

Built around the life of one message

Most email problems happen before the send or after it. Postar covers both ends.

Before you send

Test without sending
Mail to localhost and .test addresses lands in a built-in inbox. See how it looks. Nothing leaves the system, and it costs nothing.
One project per app
Each app gets its own keys and the sending domains it may use. Revoke a key and it stops working immediately.
A cap on mistakes
Every key has an hourly limit, so a bug in a loop can't flood your users.

While it sends

Signed and authenticated
DKIM-signed, from a domain with SPF and DMARC. Use ours, or add yours and publish the records we show you.
Unsubscribe that works
Messages can carry one-click unsubscribe (RFC 8058). People who opt out stay opted out.
Sent in the background
Your call returns immediately with a message id. Delivery doesn't slow your login page down.

After it sends

See every message
Delivered, queued and failed, per day and per project, with the full path of each message.
Failures in plain language
A bounce tells you what the receiving server said and what to do next, and failed messages can be retried.
Bad addresses blocked
Bounced and complaining recipients are suppressed automatically, which protects your sender reputation.

One endpoint. Your language.

Authenticate with a project key and post JSON. Anything that can make an HTTP request can send email.

  • 202 means acceptedThe message is queued. Its final state shows up in the dashboard.
  • Clear errors401 for a bad key, 403 for a domain the key can't use, 422 for an invalid message, 429 at the limit.
  • Ready-made helpersA PHP SDK and a Yii2 component are included. The API docs cover other languages.
// Node 18+, no dependencies
const res = await fetch("https://api.postar.vip/v1/send", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.POSTAR_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    from: "login@postar.vip",
    to: user.email,
    subject: "Your login link",
    html: `<a href="${link}">Log in</a>`,
    text: `Log in: ${link}`,
  }),
});

// 202 { "id": "7c41e0b2...", "status": "queued" }

You pay for email that is sent

One credit per message that leaves. Sandbox mail is free. Allowances refill every 30 days.

Free

100emails every 30 days

Unlimited projects and keys. No card needed to start.

Request access

Pro

10,000emails every 30 days

Unlimited projects and keys. Subscribe from Billing in the dashboard.

Sign in to subscribe

Sending that stays welcome

Postar is for transactional mail. It isn't for newsletters, bulk marketing, purchased or scraped lists, or phishing, and projects that abuse it are suspended.

Got a message from us you didn't expect? Use the unsubscribe link in it, or report it to office@rapttor.com.