Compare

Resend vs SendGrid vs Postmark vs Sendpository

Four email APIs developers shortlist, compared on what changes your code and your bill - including where each one is the better choice.

In short

All four send transactional email over a REST API with DKIM-signed mail and delivery webhooks. They differ in shape and focus: Resend is built around React Email, SendGrid is a broad platform with marketing tools, Postmark is known for its transactional-only focus, and Sendpository adds receiving with sender verification to a small API and a permanent free plan (6,000 emails a month (up to 200 a day), free forever).

At a glance

SendpositoryResendSendGridPostmark
Free tier6,000 emails a month (up to 200 a day), free foreverFree: 3,000 emails a month, capped at 100 a day, one domain. Paid plans start at $20 a month for 50,000 emails.The permanent free plan was retired in 2025 in favour of a 60-day trial (100 emails a day). Essentials starts at $19.95 a month for up to 100,000 emails.Free developer plan: 100 emails a month, no expiry. Basic is $15 a month for 10,000 emails, with overage at $1.80 per 1,000.
Send endpointPOST https://api.sendpository.com/v1/emailsPOST https://api.resend.com/emailsPOST https://api.sendgrid.com/v3/mail/sendPOST https://api.postmarkapp.com/email
AuthenticationAuthorization: Bearer sp_...Authorization: Bearer re_...Authorization: Bearer SG....X-Postmark-Server-Token: <server token>
Request shapeFlat JSON: from, to, subject, html, textFlat JSON: from, to, subject, html, textpersonalizations, from object, content arrayPascalCase JSON: From, To, HtmlBody, TextBody
Webhook securityHMAC-SHA256 in Sendpository-SignatureSvix: svix-id, svix-timestamp and svix-signature headersSigned Event Webhook: ECDSA with a public key, in X-Twilio-Email-Event-Webhook-Signature and -TimestampNo HMAC signature - secured with basic auth in the URL or an IP allowlist
Receiving emailInbound addresses with SPF, DKIM and DMARC verdictsInbound email is available as a feature of the platform.Inbound Parse posts incoming mail to your webhook.Inbound processing posts parsed messages to your webhook.
Best forSending and receiving through one small APITeams already building templates with React Email, and anyone who wants the most-used developer email API with the largest community.Large organisations that want marketing campaigns, contact management and enterprise support contracts from the same vendor as their transactional email.Teams that want a provider with a very long transactional-only reputation and separate message streams for transactional and broadcast mail.

Competitor details are from their own documentation and pricing pages, checked 2026-09-25. Sendpository’s free tier is read from its live plans.

The same email, four ways

A receipt sent with each provider, so you can see what your code would look like.

Sendpository
import { Sendpository, SendpositoryError } from "sendpository";

const sendpository = new Sendpository(process.env.SENDPOSITORY_API_KEY);

try {
  const { id } = await sendpository.emails.send(
    {
      from: "Acme <billing@mail.yourdomain.com>",
      to: ["customer@example.com"],
      subject: "Your receipt",
      html: "<p>Thanks for your order.</p>",
      text: "Thanks for your order.",
      tags: { type: "receipt" },
    },
    // A retried job returns the first message's id instead of sending twice.
    { idempotencyKey: "receipt-10428" },
  );
  console.log(id);
} catch (err) {
  if (err instanceof SendpositoryError) console.error(err.type, err.message);
  throw err;
}
Resend
import { Resend } from "resend";

const resend = new Resend(process.env.RESEND_API_KEY);

const { data, error } = await resend.emails.send({
  from: "Acme <billing@yourdomain.com>",
  to: ["customer@example.com"],
  subject: "Your receipt",
  html: "<p>Thanks for your order.</p>",
  tags: [{ name: "type", value: "receipt" }],
});
SendGrid
await fetch("https://api.sendgrid.com/v3/mail/send", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.SENDGRID_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    personalizations: [{ to: [{ email: "customer@example.com" }] }],
    from: { email: "billing@yourdomain.com", name: "Acme" },
    subject: "Your receipt",
    content: [{ type: "text/html", value: "<p>Thanks for your order.</p>" }],
    categories: ["receipt"],
  }),
}); // 202, empty body
Postmark
await fetch("https://api.postmarkapp.com/email", {
  method: "POST",
  headers: {
    "X-Postmark-Server-Token": process.env.POSTMARK_SERVER_TOKEN,
    "Content-Type": "application/json",
    Accept: "application/json",
  },
  body: JSON.stringify({
    From: "Acme <billing@yourdomain.com>",
    To: "customer@example.com",
    Subject: "Your receipt",
    HtmlBody: "<p>Thanks for your order.</p>",
    TextBody: "Thanks for your order.",
    Tag: "receipt",
    MessageStream: "outbound",
  }),
});

How to choose

If you need…Choose
React Email templates and the largest developer communityResend
Marketing campaigns and contact management from the same vendorSendGrid
Separate transactional and broadcast streams with a long delivery track recordPostmark
To receive email on your domain with sender verification, through the API you send withSendpository
Signed webhooks without running a verification librarySendpository (HMAC-SHA256, one header)

Questions

Which is best: Resend, SendGrid or Postmark?

It depends on the job. Resend suits teams building templates with React Email, SendGrid suits organisations that also want marketing campaigns and enterprise contracts, and Postmark suits teams that value a long transactional-only track record. Sendpository suits developers who want to send and receive through one API with a permanent free plan.

Which email API has the best free tier?

Free tiers change often. As published when this page was checked: Resend 3,000 a month capped at 100 a day, Postmark 100 a month, and SendGrid a 60-day trial instead of a permanent free plan. Sendpository's current free plan is shown in the table and on its pricing page.

Which of these signs its webhooks?

Resend signs with Svix headers, SendGrid offers an ECDSA-signed Event Webhook, and Sendpository signs every webhook with HMAC-SHA256. Postmark's documentation says it does not support HMAC signatures and recommends basic auth or IP allowlisting.

Detailed comparisons and migration guides

Also compared: Mailgun and Amazon SES.

Send your first email in minutes

6,000 emails a month (up to 200 a day), free forever. No card needed.