MailKaka's transactional send API follows the same shape as Resend's, on purpose -- so moving an existing integration over is usually a config change, not a rewrite.
1. Get a MailKaka API key
Verify a sending domain and create an API key from your MailKaka dashboard. Keys are scoped per domain.
2. Point your SDK at MailKaka
If you're using Resend's Node SDK:
import { Resend } from "resend";
const mailkaka = new Resend(process.env.MAILKAKA_API_KEY, {
baseURL: "https://www.mailkaka.in/api",
});
await mailkaka.emails.send({
from: "hello@yourdomain.in",
to: ["customer@example.com"],
subject: "Welcome aboard",
html: "<strong>It just works.</strong>",
});Raw HTTP or cURL callers change two things: the host, and the bearer token.
3. Check what carries over as-is
to/cc/bccarrays work the same way -- send one request with an array of recipients, don't fan it out into one request per recipient.- Batch sending is available at
POST /emails/batch, up to 100 messages per request. - Display-name senders (
"Name <email>") are supported.
4. Check what's different
- MailKaka's optional
unsubscribe: truefield (adds a one-clickList-Unsubscribeheader) requires exactly onetorecipient per request -- Resend has no equivalent flag, so this only matters if you're adding new behavior, not doing a like-for-like port. - Some advanced, provider-specific Resend features are outside MailKaka's current scope -- check the docs before migrating a large or unusual integration.
5. Cut over
Nothing about your already-sent Resend email needs migrating -- there's no historical data to move. Point new sends at the new base URL, confirm delivery in the MailKaka dashboard, then remove the old provider's key.
Full reference, including a copy-pasteable prompt for AI coding agents: docs.md. See also our full MailKaka vs Resend comparison.