Satu API untuk setiap
email yang Anda kirim.

Transaksional atau marketing, satu pesan atau seratus, dikirim melalui Email API yang sama, dengan idempotensi, supresi, dan webhook bawaan. Kirim HTML mentah atau render template React Email Anda.

welcome.tsx
200 · 1.2s
import { BirdClient } from "@messagebird/sdk";
import { render } from "@react-email/render";
import { WelcomeEmail } from "./emails/welcome";

const bird = new BirdClient({
  apiKey: process.env.BIRD_API_KEY!,
});

const { data, error } = await bird.email.send({
  from:    "Bird <hello@bird.com>",
  to:      ["ada@example.com"],
  subject: "Your invite is ready",
  html:    await render(<WelcomeEmail name="Ada" />),
}).safe();

if (error) throw error;
console.log(data.id);
// → "em_2bX91Yk8h..."

Sudah mengirim melalui SMTP?

Pertahankan klien SMTP yang sudah ada dan hubungkan ke relay Bird. Gunakan halaman pengaturan SMTP untuk host regional, port TLS, dan autentikasi. Jika aplikasi Anda perlu menerima dan mem-parse pesan, mulai dengan email masuk.

Kirim email pertama Anda dalam lima menit.

Dari bahasa pemrograman yang sudah Anda gunakan.

Pengiriman adalah inti dari Bird Email API. Pengiriman pertama Anda bisa ditujukan ke alamat sandbox (delivered@messagebird.dev), sehingga Anda dapat mencoba seluruh platform (pengiriman, webhook, supresi) sebelum memverifikasi domain.

1
2
3
4
5
6
7
const msg = await bird.email.send({
  from: { email: "onboarding@messagebird.dev", name: "Bird" },
  to: ["delivered@messagebird.dev"],
  subject: "Hello from Bird",
  html: "<p>My first Bird email.</p>",
});
console.log(msg.id, msg.status); // "em_…", "accepted"

Lima hal yang tidak perlu Anda bangun sendiri.

Kontrak yang sama di setiap channel Bird.

  1. 01

    Transaksional + marketing.

    Endpoint yang sama mengirim reset kata sandi atau kampanye. Field kategori menentukan bagaimana supresi dan berhenti berlangganan diterapkan.

  2. 02

    Template sesuai cara Anda.

    Kirim HTML mentah, render template React Email ke HTML di aplikasi Anda lalu kirim hasilnya, atau sebutkan nama template tersimpan dan biarkan di-render untuk Anda. Toolchain Anda, tidak berubah.

  3. 03

    Batch hingga 100.

    Hingga 100 pesan independen per panggilan, masing-masing dengan penerima dan variabel sendiri, divalidasi sebagai satu unit sehingga Anda tidak pernah mengirim setengah jalan.

  4. 04

    Idempoten secara kontrak.

    Setiap pengiriman menerima kunci idempotensi, sehingga permintaan ulang setelah timeout mengembalikan hasil asli alih-alih mengirim dua kali.

  5. 05

    Webhook di setiap perubahan status.

    Diterima, terkirim, dibuka, diklik, bounce, dilaporkan. Setiap webhook ditandatangani HMAC, dilindungi dari replay, idempoten, dengan format yang sama di setiap channel.

Buat permintaan pertama dari aplikasi Anda.

Buat akun dan kunci API, lalu ikuti panduan pengiriman dengan penerima uji coba.

Mulai

Sudah mengirim dari platform lain? Pindah dalam satu sore.

Panggilan yang sudah Anda buat hampir tidak berubah: ganti client, pertahankan template Anda, arahkan webhook ke satu endpoint. Panduan migrasi mencakup SendGrid, Amazon SES, Mailgun, dan Resend.

sendgrid.ts
SendGrid
import sgMail from "@sendgrid/mail";

sgMail.setApiKey(process.env.SENDGRID_API_KEY!);

await sgMail.send({
  from:    "hello@yourdomain.com",
  to:      "delivered@messagebird.dev",
  subject: "Your invite is ready",
  html:    "<p>Welcome aboard, Ada.</p>",
});
bird.ts
Bird
import { BirdClient } from "@messagebird/sdk";

const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });

await bird.email.send({
  from:    "hello@yourdomain.com",
  to:      ["delivered@messagebird.dev"],
  subject: "Your invite is ready",
  html:    "<p>Welcome aboard, Ada.</p>",
});

Satu pesan atau seratus, satu panggilan.

Batch hingga 100 pesan independen dalam satu permintaan, masing-masing dengan penerima dan variabel sendiri. Batch divalidasi sebagai satu unit: satu pesan yang salah menolak panggilan dengan 422, sehingga Anda tidak pernah mengirim setengah jalan. Satu kunci idempotensi membuat seluruh permintaan aman untuk dicoba ulang.

digest.ts
202 · batch
import { BirdClient } from "@messagebird/sdk";
import { render } from "@react-email/render";
import { Digest } from "./emails/digest";

const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });

const messages = await Promise.all(
  users.map(async (u) => ({
    from:    "Acme <hello@yourdomain.com>",
    to:      [u.email],
    subject: "Your weekly digest",
    html:    await render(<Digest user={u} />),
  })),
);

const { data: batch, error } = await bird.email
  .sendBatch(messages)
  .safe();

if (error) throw error;
console.log(`queued ${batch.data.length} messages`);

Lampirkan konteks Anda sendiri ke setiap pengiriman.

Tag adalah dimensi kelas utama yang dapat difilter: potong data pengiriman dan engagement berdasarkan kampanye, template, atau eksperimen di API statistik (hingga 20 per pesan). Metadata adalah JSON arbitrer, hingga 2 KB, yang ikut bolak-balik tanpa diubah di setiap pembacaan dan webhook, sehingga ID Anda sendiri menyertai pesan.

tagged.ts
await bird.email.send({
  from:     "Acme <hello@yourdomain.com>",
  to:       ["delivered@messagebird.dev"],
  subject:  "Your invite is ready",
  html:     "<p>Welcome aboard, Ada.</p>",
  tags:     [{ name: "campaign", value: "spring-2026" }],
  metadata: { user_id: "u_2bX91", order_id: "ord_5512" },
});

Pantau setiap pesan sepanjang siklus hidupnya.

Pengiriman mengembalikan 202 langsung; hasilnya datang sebagai webhook per penerima. Verifikasi satu tanda tangan, periksa tipe-nya: format yang sama seperti yang sudah Anda tangani untuk SMS, voice, dan WhatsApp.

app/api/webhooks/bird/route.ts
signed
import { bird } from "@/lib/bird";

export async function POST(req: Request) {
  const event = bird.webhooks.unwrap(
    await req.text(),
    Object.fromEntries(req.headers),
  );

  switch (event.type) {
    case "email.delivered":
      await markDelivered(event.data.email_id);
      break;
    case "email.bounced":
      await flag(event.data.recipient, event.data.bounce_type);
      break;
  }

  return new Response(null, { status: 204 });
}

Hard bounce dan keluhan memperbarui supresi penerima. Berhenti berlangganan mencatat preferensi opt-out. Catatan tersebut diperiksa saat memproses pengiriman berikutnya.

  • email.acceptedPengiriman diterima dan sedang disiapkan untuk dikirim.
  • email.processedDalam antrean ke server email penerima.
  • email.deliveredServer email penerima menerima pesan.
  • email.deferredDitolak sementara, dan kami akan mencoba lagi.
  • email.bouncedGagal permanen: tipe bounce dan kode SMTP ada di payload.
  • email.openedPenerima membuka pesan. Bisa terpicu lebih dari sekali.
  • email.clickedPenerima mengklik tautan yang dilacak.
  • email.complainedPenerima melaporkan pesan sebagai spam.
  • email.unsubscribedPenerima berhenti berlangganan melalui tautan unsubscribe yang dilacak.

Uji setiap hasil sebelum Anda go live.

Di sandbox, alamat penerima menentukan hasilnya, sehingga status akun Anda tidak harus diatur. Kirim ke delivered@messagebird.dev untuk pengiriman bersih, atau ke bounce@, softbounce@, deferred@, complaint@, dan suppressed@ untuk menjalankan setiap jalur kegagalan melalui pipeline dan webhook yang sesungguhnya. Tidak perlu memverifikasi domain, tidak ada risiko terhadap reputasi Anda. Produksi sengaja dibatasi: Anda memverifikasi domain terlebih dahulu, dan domain baru atau IP dedicated melewati proses warmup sebelum menanggung volume penuh.

Pelajari lebih lanjut di dokumentasi.

Baca panduan pengiriman, hubungkan event dan webhook email, atau, jika Anda berpindah dari penyedia lain, ikuti panduan migrasi dari SendGrid, SES, Mailgun, atau Resend.

Uji perilaku seputar pengiriman.

Panggilan pengiriman yang berhasil adalah awal dari integrasi. Simulasikan bounce dan keluhan, tangani pengiriman webhook duplikat, dan tentukan cara aplikasi Anda menjadwalkan pesan atau menerima balasan.

161%

Peningkatan rasio buka email yang dilaporkan dalam kisah pelanggan Zillow.

Baca kisah Zillow

Dibangun dengan Bird

Saat rumah yang tepat muncul, email harus langsung sampai.

Zillow memindahkan notifikasi properti yang sensitif waktu ke Bird, dengan kapasitas menangani lonjakan pengiriman dan analitik untuk memahami keterlibatan. Timnya melaporkan peningkatan rasio buka sebesar 161% pada bulan pertama.

Merencanakan migrasi atau pengiriman volume lebih tinggi?

Hubungi tim penjualan

Pertanyaan tentang pengiriman email

Bisakah saya mengirim email transaksional dan marketing sekaligus?
Ya, keduanya melalui API pengiriman yang sama. Satu-satunya perbedaan adalah field category, yang menentukan bagaimana suppression dan unsubscribe diterapkan. Pilih transactional untuk reset kata sandi dan tanda terima, dan marketing untuk kampanye.
Apa yang terjadi jika permintaan timeout dan saya mengulanginya?
Kirim header Idempotency-Key dengan setiap pengiriman logis. Jika permintaan pertama berhasil tetapi Anda tidak melihat responsnya, mengulanginya dengan key yang sama akan mengembalikan hasil asli dengan header Idempotency-Replay, alih-alih mengirim email dua kali.
Bisakah saya menjadwalkan pengiriman untuk nanti?
Atur scheduled_at ke waktu mana pun antara 30 detik dan 30 hari ke depan. Pengiriman langsung dikembalikan sebagai accepted dan tetap terjadwal sampai terkirim, jadi Anda bisa membatalkannya kapan saja sebelum itu.
Bisakah saya melampirkan file?
Ya, sebagai base64 dalam array attachments. Untuk menampilkan gambar secara inline, berikan content_id dan referensikan dari HTML Anda dengan cid:. Jaga ukuran file mentah pada atau di bawah 15 MB agar pesan tetap muat dalam batas 20 MB setelah dienkode, dan perlu diketahui bahwa content type yang bersifat executable dan script akan ditolak sebelum pengiriman.

Hubungi tim email kami

Bangun integrasi email Anda berikutnya.

Diskusikan pesan transaksional, pengiriman massal, dan event pengiriman. Kami akan membantu Anda merencanakan integrasi, volume pengiriman, dan migrasi.

Buat akun Anda, lalu buat kunci API dan kirim pesan uji coba.

Data Anda

Produk yang diminati

Opsional

Skalakan tanpa
kehilangan kendali.

Atur tim dalam workspace, kontrol akses API, dan lacak perubahan melalui log audit.

BirdHarborOrganization
WorkspacesProductionSandbox

Delivery agent

API key · Customer operations team
Active
PermissionsAccess
EmailRead & write
SMSRead & write
ALAlex Lee AdminPermissions updated

Audit log

Production
Workspace
Production
Resource
Delivery agent
WhatsApp
ReadRead & write
Succeeded

Mulai dengan Email.
Bangun lintas kanal dengan Bird.

Ide Anda berikutnya.
Siap terhubung.