BIRD Email

Die Email-API für Entwickler, die auch den Rest der Nachricht ausliefern.

Eingerichtet in:
Cursor

Transaktionale und Marketing-E-Mails auf derselben Infrastruktur, die Ihre SMS-, Voice- und WhatsApp-Nachrichten transportiert. Etwa 40 % der weltweiten kommerziellen E-Mails laufen über das Bird-Netzwerk. Wir machen das seit einem Jahrzehnt. Am Black-Friday-Wochenende 2025 haben wir 19,9 Milliarden E-Mails verarbeitet.

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 Minuten mit npm install bis zum ersten Versand

Sende eine Email aus der Sprache, die du ohnehin nutzt.

SDKs für jede große Runtime. Der erste Versand kann an eine zugelassene Testadresse gehen (delivered@messagebird.dev), sodass du gegen die Live-API entwickeln kannst (Sends, Webhooks, der gesamte Flow), bevor du eine Domain verifizierst.

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"

Zehn Teile von Email, die nicht mehr dein Problem sind.

Deliverability- und Betriebs-Primitive, benannt und auditierbar.

  1. 01

    Signiert am 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

    An audit before you send a byte.

    Point the audit tool at any domain and it resolves the live DMARC, SPF, DKIM, BIMI, and MX records, grades how they work together, and ranks what to fix. No account needed.

  3. 03

    Verwaltete Dedicated IPs.

    Pro Account bereitgestellt und automatisch über rund 30 Tage aufgewärmt, organisiert in Pools, die du steuerst.

  4. 04

    Dynamische Suppression-Liste.

    Bounces, Complaints und Abmeldungen unterdrücken den Empfänger automatisch und reversibel.

  5. 05

    No polling to verify a 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

    Stored templates, or your own HTML.

    Name a stored template and Bird renders it with Liquid, or render React Email to HTML in your app and pass the result.

  7. 07

    Durchsuchbares Email-Log.

    Jede Nachricht, die du sendest, wird mit ihren Delivery-Events und ihrem Status geloggt. Frag jede Email per ID ab.

  8. 08

    Deliverability-Metriken, aufgeschlüsselt.

    Bounce-Codes, Complaint-Typen sowie Aufschlüsselungen nach Mailbox-Provider und Client, aufgeteilt pro Domain, ISP und IP – im Dashboard und über die Stats-API.

  9. 09

    Inbound-Parsing.

    Take a Bird-generated forwarding address, or publish MX records on a subdomain you own. Either way the mail arrives as a signed webhook you can thread.

  10. 10

    Batch-Versand von bis zu 100.

    Bis zu 100 unabhängige Nachrichten pro Aufruf, jede mit eigenem Empfänger und eigenen Variablen. Ein Idempotency-Key deckt den gesamten Batch ab.

Warum wir Email bauen

Weil deine Verifizierungscodes nicht bei einem anderen Anbieter liegen sollten als deine Zustellbelege.

Email ist kein eigenständiges Produkt; sie ist ein Kanal in einem Flow. Auth-Codes starten als Email und fallen auf SMS zurück. Belege gehen per WhatsApp raus, wenn der Kunde das bevorzugt. Bird Email ist die, deren API, Webhooks und Idempotency-Vertrag zu jedem anderen Kanal passen – weil dasselbe Engineering-Team sie alle auf demselben Netzwerk gebaut hat.

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

Jede Statusänderung ist ein Webhook.

HMAC-signierte Payloads, replay-geschützt, idempotent. Derselbe signierte Envelope auf jedem Bird-Kanal, sodass der Handler, den du für Email schreibst, schon deine SMS- und WhatsApp-Events parst.

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.processedQueued for the recipient's mail server.
  • email.deliveredThe recipient's mail server accepted the message.
  • email.openedThe recipient opened the message. Can fire more than once.
  • email.clickedThe recipient clicked a tracked link.
  • email.bouncedPermanently failed: bounce type and SMTP code in the payload.
  • email.complainedThe recipient reported the message as spam.
  • email.unsubscribedThe recipient opted out through a tracked unsubscribe link.
  • email.list_unsubscribedThe recipient used their mail client's one-click unsubscribe.

Wenn du Email integriert hast, hast du SMS integriert.

Gleiches Auth-Modell, gleicher Idempotency-Vertrag, gleicher Error-Envelope, gleiche Webhook-Form. Der Unterschied liegt darin, was jeder tut, nicht wie du ihn aufrufst.

Email

Verifizierte Domain, signiert am Edge, suppression-aware. Render React oder übergib rohes HTML.

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

SMS

Gleicher Envelope, gleiche Idempotency, gleiches Error-Type-Registry. Der Transport ist der einzige Unterschied.

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

Preise

Ab $0.30 pro 1.000 Emails

Starte kostenlos: 1.000 Emails pro Monat, ohne Karte. Bezahlte Pläne beginnen bei $15 für 50K, und der Growth-Preis pro Nachricht sinkt weiter, während du auf 2,5 Mio. skalierst. Keine Plattformgebühr, keine Seat-Gebühr, keine Tier-Features hinter Jahresverträgen.

Täglich genutzt von Teams, die erstklassige Software bauen

Starten Sie mit einem Kanal.
Fügen Sie die anderen hinzu, wenn Sie bereit sind.

Ein Test-API-Key steht Ihnen sofort zur Verfügung. Der Produktivzugang wird freigeschaltet, sobald Sie eine Zahlungsmethode hinzufügen und einen Absender verifizieren.

Sie nutzen Claude Code, Cursor oder Codex? Kopieren Sie einen Setup-Prompt und Ihr Agent installiert die Bird CLI und Skills für Sie. Wählen Sie Ihren:

Cursor