Skip to content

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:

Canonical request
cURL
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:

SDKSetting
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
Send with a Resend SDK
// .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-* and svix-* headers.

Resend's contacts, audiences, broadcasts, and templates aren't part of the Chebu API. Chebu adds suppressions and usage endpoints of its own.