BIRD Email

API Email untuk developer yang juga mengirim pesan lainnya.

Siap dalam:
Cursor

Transactional and marketing email on the same infrastructure that carries your SMS, voice, and WhatsApp. About 40% of the world's commercial email transits the Bird network. We've been at this a decade. On Black Friday weekend 2025 we processed 19.9 billion emails.

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..."

5 menit dari npm install hingga pengiriman pertama

Kirim email dari bahasa pemrograman yang sudah Anda gunakan.

SDK untuk setiap runtime utama. Pengiriman pertama bisa diarahkan ke alamat uji yang disetujui (delivered@messagebird.dev), jadi Anda dapat membangun terhadap API langsung (pengiriman, webhook, seluruh alur) 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"

Sepuluh bagian email yang bukan lagi urusan Anda.

Deliverability and operational primitives, bernama dan dapat diaudit.

  1. 01

    Ditandatangani di edge.

    Three records to publish: DKIM, a return-path CNAME, and a DMARC policy. The CNAME covers SPF too, so nothing has to go on your domain apex.

  2. 02

    Audit sebelum Anda mengirim satu byte pun.

    Arahkan alat audit ke domain mana pun dan alat ini akan meresolusi record DMARC, SPF, DKIM, BIMI, dan MX yang aktif, menilai cara kerjanya bersama, dan mengurutkan prioritas perbaikan. Tidak perlu akun.

  3. 03

    IP dedikasi terkelola.

    Disediakan per akun dan dipanaskan secara otomatis selama kurang lebih 30 hari, terorganisir dalam pool yang Anda kendalikan.

  4. 04

    Dynamic suppression list.

    Bounce, komplain, dan unsubscribe menekan penerima secara otomatis dan reversibel.

  5. 05

    Tidak perlu polling untuk memverifikasi domain.

    Add a domain, publish the records, and Bird re-checks on its own until they resolve, usually within minutes of DNS propagating. There's a verify call if you want an answer right now.

  6. 06

    Template tersimpan, atau HTML Anda sendiri.

    Sebutkan nama template tersimpan dan Bird akan merendernya dengan Liquid, atau render React Email ke HTML di aplikasi Anda dan kirimkan hasilnya.

  7. 07

    Log email yang dapat dicari.

    Setiap pesan yang Anda kirim dicatat beserta event pengiriman dan statusnya. Kueri email apa pun berdasarkan ID.

  8. 08

    Metrik deliverability, dirincikan.

    Kode bounce, jenis keluhan, serta rincian penyedia kotak surat dan klien, dipecah per domain, ISP, dan IP, di dashboard maupun lewat stats API.

  9. 09

    Parsing inbound.

    Gunakan alamat penerusan yang dibuat Bird, atau publikasikan record MX pada subdomain milik Anda. Kedua cara tersebut menghasilkan email yang masuk sebagai webhook bertanda tangan yang dapat Anda rangkai.

  10. 10

    Batch send up to 100.

    Hingga 100 pesan independen per panggilan, masing-masing dengan penerima dan variabelnya sendiri. Satu idempotency key mencakup seluruh batch.

Why we build email

Because your verification codes shouldn't live in a different vendor than your delivery receipts.

Email bukan produk tersendiri; ia satu kanal dalam sebuah alur. Kode auth dimulai sebagai email dan beralih ke SMS bila gagal. Tanda terima dikirim lewat WhatsApp ketika pelanggan lebih memilihnya. Bird Email adalah satu-satunya yang API, webhook, dan kontrak idempotensinya cocok dengan setiap kanal lain, karena tim engineering yang sama membangun semuanya di atas jaringan yang sama.

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..."

Setiap perubahan status adalah webhook.

Payload bertanda HMAC, terlindung dari replay, idempoten. Amplop bertanda yang sama di setiap kanal Bird, sehingga handler yang Anda tulis untuk email sudah dapat mem-parse event SMS dan WhatsApp Anda.

POST /webhooks/bird
signed
{
  "type": "email.delivered",
  "timestamp": "2026-05-19T15:42:01.221Z",
  "data": {
    "email_id":       "em_01krdgeqcxet5s7t44vh8rt9mg",
    "recipient_id":   "er_01krdgeqcxet5s7t44vh8rt9mg",
    "workspace_id":   "ws_01krdgeqcxet5s7t44vh8rt9mg",
    "recipient":      "ada@example.com",
    "recipient_role": "to",
    "tags":     [{ "name": "campaign", "value": "spring-2026" }],
    "metadata": { "order_id": "ord_5512" }
  }
}

Eight attempts over roughly 27.5 hours, backing off 5s, 5m, 30m, 2h, 5h, 10h, 10h with 20% jitter so retries don't synchronize. Every attempt reuses the same webhook-id, which is what makes your deduplication check work. After the last one the delivery is permanently failed, and a replay call recovers it.

  • email.acceptedThe send was accepted and is being prepared for delivery.
  • email.processedDiantrekan ke server email penerima.
  • email.deliveredServer email penerima menerima pesan.
  • email.openedPenerima membuka pesan. Bisa terpicu lebih dari sekali.
  • email.clickedPenerima mengklik tautan yang dilacak.
  • email.bouncedGagal permanen: tipe bounce dan kode SMTP ada di payload.
  • email.complainedPenerima melaporkan pesan sebagai spam.
  • email.unsubscribedPenerima memilih keluar melalui tautan berhenti berlangganan yang dilacak.
  • email.list_unsubscribedPenerima menggunakan fitur berhenti berlangganan satu klik dari klien email mereka.

Jika Anda sudah mengintegrasikan email, Anda sudah mengintegrasikan SMS.

Model auth yang sama, kontrak idempotensi yang sama, amplop error yang sama, bentuk webhook yang sama. Bedanya adalah apa yang dilakukan masing-masing, bukan cara Anda memanggilnya.

Email

Domain terverifikasi, ditandatangani di edge, sadar supresi. Render React atau kirim HTML mentah.

order-shipped.tsx
await bird.email.send({
  from:    "hello@bird.com",
  to:      ["ada@example.com"],
  subject: "Your code",
  html:    `<p>Code: ${code}</p>`,
});

SMS

Envelope yang sama, idempotensi yang sama, registri tipe error yang sama. Transportnya satu-satunya yang berbeda.

order-shipped.tsx
await bird.sms.send({
  from:     "Bird",
  to:       "+14155550172",
  text:     `Your code is ${code}.`,
  category: "authentication",
});

Harga

From $0.30 per 1,000 emails

Mulai gratis: 1.000 email per bulan, tanpa kartu. Paket berbayar dimulai dari $15 untuk 50K, dan tarif per pesan Growth terus turun seiring Anda berkembang hingga 2,5M. Tanpa biaya platform, tanpa biaya seat, tanpa fitur tier yang dikunci di balik komitmen tahunan.

Trusted every day by teams that build world-class software

Mulai dengan satu channel.
Tambahkan yang lain saat Anda siap.

API key uji coba langsung tersedia untuk Anda. Akses produksi terbuka setelah Anda menambahkan metode pembayaran dan memverifikasi pengirim.

Using Claude Code, Cursor, or Codex? Copy a setup prompt and your agent installs the Bird CLI and skills for you. Pick yours:

Cursor