← Back to blog

GUIDE

Migrating from Resend to MailKaka in 10 minutes

2026-08-04

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/bcc arrays 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: true field (adds a one-click List-Unsubscribe header) requires exactly one to recipient 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.

Migrating from Resend to MailKaka in 10 minutes | MailKaka