Get started
Manzo follows Resend's API. If you have used Resend, you know most of this already. This page covers your first email and what differs. Moving an existing app? Follow the migration guide.
Get an account
We set up every account with you. Email us and we will add your first domain together and give you a sign-in.
Send your first email
Use the official Resend SDK with our base URL. You need a verified domain and an API key.
import { Resend } from "resend";
const resend = new Resend(process.env.MANZO_API_KEY, {
baseUrl: "https://manzo.dev",
});
const { data, error } = await resend.emails.send({
from: "Your app <hi@yourapp.com>",
to: "ada@example.com",
subject: "Your sign-in code",
html: "<p>Your code is 482913.</p>",
});Or call the API directly:
curl -X POST https://manzo.dev/emails \
-H "Authorization: Bearer $MANZO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"from": "Your app <hi@yourapp.com>",
"to": "ada@example.com",
"subject": "Your sign-in code",
"html": "<p>Your code is 482913.</p>"
}'A successful send returns {"id": "..."}. Find the email in your log by that ID, or call GET .
What is the same as Resend
- Request and response shapes for emails, batches, domains, API keys, templates, contacts, segments, broadcasts and webhooks.
- Error names and status codes, so the SDK's error handling keeps working.
- Rate limit headers and
Idempotency-Key. - Webhook event names, payloads and signatures.
We test these with the official Node SDK on every change.
What differs
- Open and click tracking is not available yet. Domains refuse
open_trackingorclick_trackingset to true. - There is no SMTP relay and no inbound email.
- Email bodies are not stored, so
GETreturns null for/emails /:id htmlandtext. - We send from one region in the United States.
- Attachments can total 25 MB on each email.