← Back to blog
·9 min read·
Vanessa LozzardoVanessa Lozzardo

Resend vs SendGrid vs Sendkit: picking the right email API

Comparing Resend, SendGrid, and Sendkit on API design, pricing, deliverability, and developer experience to help you choose.

comparisonemail-apiresendsendgrid
Resend vs SendGrid vs Sendkit: picking the right email API

Choosing an email API feels like it should be simple. You send HTTP requests, emails go out, done. But after you've wired up the integration and pushed to production, the differences between providers start showing up in ways that are hard to undo: pricing that scales badly, missing features that force you onto a second platform, or API quirks that slow your team down.

I've spent time building with Resend, SendGrid, and Sendkit. This is an honest look at where each one fits and where each one falls short.

The short version

If you want the quick answer before we get into the details:

  • Resend is great for developers who only need transactional email and love clean, modern APIs.
  • SendGrid is the safe enterprise pick with the widest feature set, but it comes with complexity and per-contact pricing that stings at scale.
  • Sendkit sits in the middle: clean API like Resend, but with campaigns, automations, contacts, and email validation built in. No per-contact fees.

That's the summary. The rest of this post is the evidence.

API design

API design matters more than people give it credit for. You'll be reading these docs at 11pm when something breaks, and bad ergonomics will cost you time every single time.

Resend

Resend has the cleanest API of the three. It's minimal, well-documented, and clearly inspired by Stripe's design philosophy. Sending an email looks like this:

import { Resend } from 'resend';

const resend = new Resend('re_123456');

const send = async () => {
  const { data, error } = await resend.emails.send({
    from: '[email protected]',
    to: '[email protected]',
    subject: 'Welcome aboard',
    html: '<p>Thanks for signing up.</p>',
  });
};

Simple. The SDK returns { data, error } instead of throwing, which I prefer over try/catch for most send flows. The downside: Resend only does transactional email. No campaigns, no contact management. If you need those later, you're bolting on a second provider.

SendGrid

SendGrid's API has been around since 2009 and it shows. The v3 API is functional but verbose. Here's the same send:

import sgMail from '@sendgrid/mail';

sgMail.setApiKey('SG.xxxx');

const send = async () => {
  await sgMail.send({
    to: '[email protected]',
    from: '[email protected]',
    subject: 'Welcome aboard',
    html: '<p>Thanks for signing up.</p>',
  });
};

Not terrible, but the SDK is showing its age. The personalizations array for batch sends is notoriously confusing, and the docs mix v2 and v3 examples in ways that will waste your time. SendGrid also has separate APIs for marketing vs. transactional, which means two mental models.

Sendkit

Sendkit's API borrows the good parts from Resend's design (JSON in, JSON out, predictable responses) and adds the features Resend is missing:

import { Sendkit } from '@sendkitdev/sdk';

const sendkit = new Sendkit('sk_live_your_api_key');

const send = async () => {
  const { data, error } = await sendkit.emails.send({
    from: '[email protected]',
    to: '[email protected]',
    subject: 'Welcome aboard',
    html: '<p>Thanks for signing up.</p>',
  });
};

The email API covers transactional sends, batch sending, templates with Handlebars syntax, and inbound email parsing. You get SDKs for Node.js, Python, PHP, Ruby, Go, Laravel, .NET, Java, Elixir, and Rust. More language coverage than either Resend or SendGrid.

Evaluating email API options for your project

Pricing

Pricing is where most people should start this comparison, honestly. The cheapest option at 5,000 emails/month might be the most expensive at 100,000.

Resend SendGrid Sendkit
Free tier 3,000 emails/mo, 1 domain 100 emails/day 3,000 emails/mo, 1 domain
10K emails/mo $20/mo $19.95/mo (Essentials) $15/mo
50K emails/mo $80/mo $19.95/mo (Essentials) $65/mo
100K emails/mo $80/mo $34.95/mo (Essentials, up to 100K) $85/mo
Contact storage N/A (no contacts) Charged per contact Unlimited, all plans
Marketing email Not available Separate plan, per-contact fees Included from $30/mo
Overage Blocks sends Varies by plan $1 per 1,000 emails

The per-contact pricing on SendGrid is the thing that bites people. You might be paying $19.95/mo for sends, then discover your contact list storage costs more than the sends themselves. I've talked to founders who didn't realize this until they got the invoice.

Resend is straightforward on pricing but only covers transactional email. If you need marketing campaigns, you're paying for Resend plus Mailchimp or ConvertKit. Those costs add up fast.

Sendkit charges by volume, not contacts. You can store unlimited contacts on every plan. The pricing page has a calculator if you want exact numbers for your volume.

Features beyond sending

All three can send an email. The real question is what else you need alongside that.

Feature Resend SendGrid Sendkit
Transactional API Yes Yes Yes
SMTP relay No Yes Yes
Marketing campaigns No Yes (separate product) Yes (built in)
Automations No Yes (Marketing plan only) Yes
Contact management No Yes (per-contact fees) Yes (unlimited)
Email validation No Yes (paid add-on) Yes (built in)
A/B testing No Yes Yes
Drag-and-drop editor No Yes Yes
Inbound email parsing No Yes Yes
Webhook signing Yes Yes (but SendGrid calls it "Event Webhook Verification") Yes (HMAC-SHA256)

Resend is intentionally focused on transactional email. That's a valid choice, and if you know you'll never need campaigns or automations, Resend is excellent at what it does. But most products eventually need to send marketing email too, and then you're running two providers.

SendGrid has everything, but it's spread across multiple products with separate billing and separate APIs. The marketing side uses a different sending infrastructure than the transactional side. Switching between them is jarring.

Sendkit puts transactional, campaigns, automations, contacts, and email validation under one API and one bill. The SMTP relay works with Nodemailer, PHPMailer, or whatever you're already using. You don't have to choose between "developer tool" and "marketing tool" because it's both.

Developer experience

DX is subjective, so I'll stick to specifics.

Documentation

Resend's docs are clean and well-organized. They're short because the API surface is small. SendGrid's docs are extensive but disorganized. Finding the right example for your use case can take a while, and you'll run into outdated v2 references. Sendkit's docs at sendkit.dev/docs cover the full API with code examples for every supported language.

SDKs

Resend supports JavaScript/TypeScript, Python, Go, Ruby, PHP, Java, and Elixir. SendGrid supports most major languages but some SDKs feel abandoned (check the last commit dates). Sendkit covers Node.js, Python, PHP, Ruby, Go, Laravel, .NET, Java, Elixir, and Rust. The Rust and Elixir SDKs are worth mentioning because few email providers bother with those ecosystems.

SMTP support

Resend doesn't offer SMTP. If your app already uses SMTP (Rails ActionMailer, Laravel Mail, Django's email backend), you'll need to rewrite your sending layer to use their HTTP API. SendGrid and Sendkit both offer SMTP as a drop-in option:

// Sendkit SMTP with Nodemailer
import nodemailer from 'nodemailer';

const transport = nodemailer.createTransport({
  host: 'smtp.sendkit.com',
  port: 587,
  auth: {
    user: 'sendkit',
    pass: 'sk_live_your_api_key',
  },
});

const send = async () => {
  await transport.sendMail({
    from: '[email protected]',
    to: '[email protected]',
    subject: 'Your order shipped',
    text: 'Tracking number: 1Z999AA10123456784',
  });
};

You still get open/click tracking and webhook events through SMTP. Some providers strip those features from SMTP sends, which is frustrating when you're migrating from an API-first setup.

Writing integration code for email APIs

Deliverability

None of these providers will magically fix deliverability problems caused by bad list hygiene or spammy content. But the infrastructure matters.

All three support DKIM, SPF, and DMARC authentication. All three handle bounces and complaints automatically (to varying degrees).

SendGrid has the longest track record here. They've been managing sender reputations at scale for over 15 years. Their shared IP pools are large and well-maintained. Dedicated IPs are available on higher-tier plans.

Resend is newer. They use Amazon SES under the hood, which has a strong track record. But they don't offer dedicated IPs yet, which matters if you're sending high volume and want full control over your sender reputation.

Sendkit offers dedicated IPs starting at the 100K emails/month tier. They run their own infrastructure (not a wrapper around SES), handle bounce processing and complaint loops automatically, and maintain dynamic suppression lists. The built-in email validation catches bad addresses before they hurt your reputation, which neither Resend nor SendGrid include by default.

The honest answer on deliverability: at typical startup volumes (under 100K/month), all three will deliver your email fine if your DNS is configured correctly and you're not sending spam. The differences show up at higher volumes or when you have a mixed sender reputation.

When to pick each one

Resend makes sense if you're building a product that only sends transactional email and you want the cleanest possible API. It does one thing and does it well. Just know that "just transactional" tends to be a temporary state for most products.

SendGrid is the right call if you're at an enterprise that needs a vendor with a long track record, or your compliance team wants a name they recognize. It works. It's just more complex than it needs to be, and the pricing gets weird once you factor in contact storage.

Sendkit is what I'd recommend if you want one platform for transactional and marketing email without paying per contact. The API is clean, the SDK coverage is wide, and you won't outgrow it six months in the way you might outgrow a transactional-only provider.

The migration question

Switching email providers mid-project is annoying but not catastrophic. The actual API swap takes a day or two. The harder parts are DNS changes (updating SPF/DKIM records, warming a new IP) and migrating templates.

If you're starting fresh, you have the luxury of picking once. My suggestion: think about what you'll need in 12 months, not just today. A lot of teams pick Resend or raw SES for their MVP, then spend a sprint migrating to something with more features six months later. That's fine if you plan for it. Less fine if it catches you off guard.

If you're curious about Sendkit specifically, the docs are the best place to start. The free tier gives you 3,000 emails/month with no credit card, which is enough to test a real integration before committing.

Share this article