Getting started
Use Resend SDKs with Chebu
Chebu's API follows Resend's, so you can keep a Resend SDK and change where it points.
Chebu serves the same paths, request bodies, response shapes, and error names as Resend's API for emails, domains, API keys, and webhooks. To move existing code, set your SDK's base URL option to https://api.chebu.io and use a Chebu API key in place of a Resend key.
Plain HTTP is the reference. If a request works with curl, it works from any SDK that sends the same request:
curl -X POST https://api.chebu.io/emails \
-H "Authorization: Bearer $CHEBU_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"from": "Northwind <[email protected]>",
"to": ["[email protected]"],
"subject": "Your receipt #1042",
"html": "<p>Thanks for your order.</p>"
}'Set the base URL
Each official Resend SDK has an option or environment variable for the API base URL. These are the settings at the time of writing:
| SDK | Setting |
|---|---|
Node.js (resend) | RESEND_BASE_URL environment variable |
Python (resend) | resend.api_url |
Go (resend-go) | client.BaseURL |
PHP (resend-php) | RESEND_BASE_URL environment variable |
// .env
// RESEND_BASE_URL=https://api.chebu.io
// CHEBU_API_KEY=ck_...
import { Resend } from "resend";
const resend = new Resend(process.env.CHEBU_API_KEY);
const { data, error } = await resend.emails.send({
from: "Northwind <[email protected]>",
to: ["[email protected]"],
subject: "Your receipt #1042",
html: "<p>Thanks for your order.</p>",
});What's covered
- Emails: send, batch, retrieve, list, reschedule, and cancel.
- Domains: create, list, retrieve, update, verify, and delete.
- API keys: create, list, and delete.
- Webhooks, signed with the Standard Webhooks scheme Resend uses. Chebu sends both
webhook-*andsvix-*headers.
Resend's contacts, audiences, broadcasts, and templates aren't part of the Chebu API. Chebu adds suppressions and usage endpoints of its own.