# MakiSend vs Resend

Resend is a hosted email provider: its servers send your mail. MakiSend is the API, queue, retries, logs and dashboard, running in your own Cloudflare account, and it hands each email to the SMTP provider you pick.

Last updated: 2026-11-01. Web page: https://makisend.lixalistudio.tech/compare/resend/

## At a glance

|  | Resend | MakiSend |
|---|---|---|
| Where it runs | Resend's servers | Your Cloudflare account |
| Price | Free up to 100 emails a day, then from $20 a month | Free. Hundreds of emails a day on Workers Free, no daily cap on Workers Paid ($5 a month) |
| Who sends the mail | Resend | Your SMTP provider or Cloudflare Email Service |
| Your data | Stored by Resend | AES-256 encrypted in your own D1 |
| Servers to manage | None | None |

> Resend prices from [resend.com/pricing](https://resend.com/pricing), read in October 2026. Cloudflare quotas from its Workers Free and Paid plans.

## When Resend is the better choice

- You want one company to handle sending and its reputation, and you do not have an SMTP provider.
- You need `cc`, `bcc`, `reply_to`, custom `headers`, `tags` or `scheduled_at` today. MakiSend does not support them yet.
- You need webhooks or bounce, open and click tracking. MakiSend only logs sends for now.
- Your SMTP provider requires a fixed sending IP. Workers do not have one.

## When MakiSend fits

- You already pay for a mailbox (Google Workspace, Zoho, Microsoft 365) or a sending service, and do not want a second subscription for the API.
- You want recipients, bodies, attachments and SMTP passwords encrypted (AES-256-GCM) in a database you own.
- Your app already runs on Cloudflare, or you want the API on Workers Free at no cost.
- You like Resend's delivery but not paying for its dashboard: point MakiSend at Resend's SMTP and keep the logs in your account.
- You would rather run it on your own server: the same MakiSend runs from one Docker image on any VPS ([VPS guide](https://github.com/lixalistudio-oss/makisend/blob/main/docs/SELF_HOST_VPS.md)).

## Move a call from Resend

The request keeps its shape. The changes are the endpoint, the sender and the recipient list.

| Resend `POST /emails` | MakiSend `POST /send-email` |
|---|---|
| `Authorization: Bearer <key>` | Same header, or `x-api-key` |
| `Idempotency-Key` header | Same header, 24-hour replay window |
| `from` | Not in the body: the sender belongs to the SMTP configuration the API key is linked to |
| `to` (string or array) | One address per request |
| `subject`, `html`, `text` | Same names; `text` and `html` are both required |
| `attachments` (`filename`, `content`, `content_type`) | Same shape; `path` (a URL to fetch) is refused |
| `cc`, `bcc`, `reply_to`, `headers`, `tags`, `scheduled_at` | Not supported yet |
| `200` with an `id` | `202` with an `emailId`; the outcome shows in the dashboard logs |

Before, with Resend:

```bash
curl -X POST https://api.resend.com/emails \
  -H "Authorization: Bearer $RESEND_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "Acme <billing@acme.example>",
    "to": ["customer@example.com"],
    "subject": "Your receipt",
    "html": "<p>Thanks for order <b>#1042</b>.</p>"
  }'
```

After, with MakiSend:

```bash
curl -X POST https://<your-worker>.workers.dev/send-email \
  -H "Authorization: Bearer $MAKISEND_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "customer@example.com",
    "subject": "Your receipt",
    "text": "Thanks for order #1042.",
    "html": "<p>Thanks for order <b>#1042</b>.</p>"
  }'
```

Every field is in the [API reference](https://makisend.lixalistudio.tech/api/).

## Keep Resend as the sender

MakiSend can send through Resend. In the dashboard, add an SMTP configuration with the Resend preset: host `smtp.resend.com`, port 465, user name `resend`, and a Resend API key as the password. Resend keeps delivering your mail; MakiSend keeps the API keys, templates, retries and logs in your Cloudflare account.

## What each one costs

Resend is free up to 3,000 emails a month (100 a day), then from $20 a month. MakiSend is free; you pay Cloudflare only past Workers Free, and your SMTP provider for the mail it sends. The [pricing page](https://makisend.lixalistudio.tech/pricing/) has the quotas.

## Or let MakiSend do it

MakiSend is everything on this page, packaged: an authenticated `POST /send-email`, a queue, a durable Workflow with retries, nodemailer over sockets opened by hostname, the Cloudflare Email Service binding and a dashboard with the logs. It is open source and deploys on your own Cloudflare account, including a Workers Free one.

- With a coding agent: [copy the install prompt](https://makisend.lixalistudio.tech/install.md) and paste it into Claude Code, Codex, Cursor or another agent.
- Without one: [Deploy to Cloudflare](https://makisend.lixalistudio.tech/deploy/), after generating the two secrets it asks for.
- Read the code first: [github.com/lixalistudio-oss/makisend](https://github.com/lixalistudio-oss/makisend).

## Questions

### Is MakiSend a drop-in replacement for Resend?

Close, not identical. The API key header, Idempotency-Key and the attachments format are the same. The sender moves to the SMTP configuration, each request has one recipient, and cc, bcc, reply_to, headers, tags and scheduled_at are not supported yet.

### Can MakiSend send through Resend?

Yes. Use the Resend SMTP preset (smtp.resend.com, port 465, user name resend, an API key as the password). Resend delivers the mail and MakiSend keeps the logs in your account.

### Is MakiSend free?

Yes. It is open source under the MIT license. Running it is free on Cloudflare's Workers Free plan, which covers hundreds of emails a day; your SMTP provider bills the mail it sends.
