Sign inCreate account
// 01 / THE PROTOCOL

The complete
message lifecycle.

One deliberate interface for sending, understanding, trusting, and receiving product email.

// 02 / ONE SYSTEM

Four surfaces.
One message identity.

The interface changes with the job. The underlying message record does not.

// 01 / SEND

Application intent becomes one durable request.

Send transactional, scheduled, or batch messages through the same idempotent contract.

Read the specification
send.ts
const message = await posta.emails.send({
  from: "Product <hello@acme.dev>",
  to: "maya@northstar.dev",
  template: "workspace-ready",
  idempotencyKey: "welcome/user_482"
});
REQUESTPOST /api/v1/emailsRESPONSE201 CreatedMESSAGEemail_msg_8f2a
// 03 / MESSAGE LEDGER

A route that can be read after it runs.

01Request validated201 Created02Policy appliedquota + suppression03Transport acceptedemail.sent04Provider event receiveddelivery / engagement05Webhook attempted1 of 5