WhatsApp is being upgraded

Die WhatsApp Business API, ohne den BSP-Umweg.

Offizieller Meta Business Solution Provider, seit es die API gibt. Template-Freigabe, Session-Fenster, Medien, interaktive Nachrichten — alles abgedeckt. Über zwei Milliarden monatliche WhatsApp-Nutzer, erreichbar über einen einzigen Endpoint, der wie jeder andere Bird-Kanal aussieht.

order-shipped.ts
200 · 480ms
import { BirdClient } from "@bird/sdk";

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

const { data, error } = await bird.whatsapp.send({
  to:       "+15005550009",
  template: "order_shipped",
  locale:   "en_US",
  variables: {
    customer_name:   "Ada",
    order_id:        "BRD-49217",
    tracking_url:    "https://track.bird.dev/49217",
    eta:             "Thursday, May 21",
  },
}).safe();

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

5 Minuten von npm install bis zum ersten Versand

Senden Sie eine WhatsApp-Nachricht in der Sprache, die Sie bereits nutzen.

SDKs für jede gängige Runtime. Der erste Versand geht an einen freigegebenen Testempfänger (+15005550009) mit einem vorab genehmigten Template — so können Sie einen CI-Check ausliefern, bevor Sie Ihr erstes Template zur Genehmigung einreichen.

1
2
3
4
5
6
7
8
9
import { BirdClient } from "@bird/sdk";

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

const { data, error } = await bird.whatsapp.send({
  to:       "+15005550009",
  template: "hello_world",
  locale:   "en_US",
}).safe();

Zehn Dinge, die das BSP-Gate vor Ihnen verbirgt. Wir nicht.

WhatsApp wird von Meta kontrolliert. Die Wahl des BSP entscheidet, ob die Gates in Ihrem Code auftauchen oder in einem Dashboard versteckt werden. Wir haben uns für Code entschieden.

  1. 01

    Offizieller Meta Business Solution Provider (BSP)

    Direkte Beziehung zu Meta, seit es die API gibt. Kein weiterverkaufter Transit, kein Drittanbieter-Hop.

  2. 02

    Template-Verwaltung

    Einreichen, Genehmigungsstatus verfolgen und einen Webhook erhalten, sobald Meta genehmigt oder ablehnt.

  3. 03

    Session-Fenster-Erkennung

    Das SDK sagt Ihnen vor dem Versand, ob Freitext oder Template erlaubt ist.

  4. 04

    Interaktive Nachrichten

    Buttons, Listen, Produktkarten und WhatsApp Flows — im selben Payload deklariert.

  5. 05

    Medien und Rich Content

    Bilder, Videos, Dokumente, Standort, Kontakte, Link-Vorschauen, Reaktionen und Antworten.

  6. 06

    WhatsApp Flows

    Mehrstufige In-App-Formulare mit Backend-Validierung, definiert als JSON, ausgeführt von Meta.

  7. 07

    Click-to-WhatsApp Ads

    Integration mit Meta Ads Manager, damit Anzeigenklicks in einer Konversation landen, die Sie beantworten können.

  8. 08

    Kanalübergreifender Fallback

    Fügen Sie fallback: "sms" zu jedem Versand hinzu — bei Session-Ablauf wird automatisch über SMS geroutet.

  9. 09

    Webhooks für eingehende Nachrichten

    HMAC-signierte Events für eingehende Nachrichten, Lesebestätigungen, Reaktionen und Template-Status.

  10. 10

    2 Mrd.+ Nutzer über einen Endpoint

    Über zwei Milliarden monatliche WhatsApp-Nutzer, erreichbar über einen einzigen bird.whatsapp.send-Aufruf.

Why we build WhatsApp

Wir waren einer der ersten WhatsApp-BSPs. Und wir sind immer noch einer der wenigen, die Code mit Ihnen ausliefern.

WhatsApp ist kontrolliert. Sie brauchen ein genehmigtes Template, ein Opt-in-Session-Fenster und eine Meta-Unternehmensverifizierung. Das ändert sich nicht — und wird es auch nicht. Was sich ändert, ist, ob Ihr BSP diese Gates einfacher oder schwerer durchschreitbar macht — indem er sie in Ihrem Code offenlegt, über Webhooks, die Sie abonnieren können, in Fehlermeldungen, die genau sagen, was falsch ist. Wir haben uns für Ersteres entschieden.

order-shipped.ts
200 · 480ms
import { BirdClient } from "@bird/sdk";

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

const { data, error } = await bird.whatsapp.send({
  to:       "+15005550009",
  template: "order_shipped",
  locale:   "en_US",
  variables: {
    customer_name:   "Ada",
    order_id:        "BRD-49217",
    tracking_url:    "https://track.bird.dev/49217",
    eta:             "Thursday, May 21",
  },
}).safe();

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

Jede Statusänderung ist ein Webhook.

HMAC-signierte Payloads, Replay-geschützt, idempotent. Dasselbe Envelope-Format auf jedem Bird-Kanal — lernen Sie eines, kennen Sie alle.

POST /webhooks/bird
signed
{
  "type": "whatsapp.read",
  "id":   "evt_7kQ02v...",
  "created_at": "2026-05-19T15:42:08.114Z",
  "data": {
    "wa_msg_id":   "wa_msg_8nB91Yk3p",
    "from":        "+15551234567",
    "to":          "+15005550009",
    "conversation_id": "wa_conv_3pX1g7t",
    "template":    "order_shipped",
    "delivered_at": "2026-05-19T15:42:01.802Z",
    "read_at":      "2026-05-19T15:42:08.020Z"
  }
}

Retry-Zeitplan: 5s, 30s, 5m, 30m, 2h, 6h, 12h. Dead-Letter nach dem letzten Versuch; jedes Dead-Letter-Event kann über das Dashboard oder die API erneut abgespielt werden.

  • whatsapp.queuedVon der API akzeptiert und für den Versand an Meta in die Warteschlange gestellt.
  • whatsapp.sentAn Metas Cloud API übergeben.
  • whatsapp.deliveredMeta meldet, dass die Nachricht auf dem Gerät des Empfängers angekommen ist.
  • whatsapp.readEmpfänger hat die Nachricht geöffnet (sofern Lesebestätigungen aktiviert sind).
  • whatsapp.failedPermanenter Fehler — Fehlercode im Payload.
  • whatsapp.receivedEingehende Nachricht eines Nutzers innerhalb des 24-Stunden-Session-Fensters.
  • whatsapp.template.approvedMeta hat ein von Ihnen eingereichtes Template genehmigt.
  • whatsapp.template.rejectedMeta hat ein Template abgelehnt — Ablehnungsgrund im Payload.

Fallback auf SMS ist ein Attribut, keine zweite Integration.

Wenn WhatsApp nicht zugestellt werden kann — Session abgelaufen, Empfänger hat nie zugestimmt, Template noch nicht genehmigt — routet Bird dieselbe Nachricht im selben Request über SMS. Gleiche Auth, gleicher Idempotency-Vertrag, gleiches Webhook-Format am anderen Ende.

WhatsApp mit Fallback.

whatsapp + fallback
await bird.whatsapp.send({
  to:       "+15005550009",
  template: "order_shipped",
  variables: { order_id: "BRD-49217" },
  fallback: "sms",
});

Ein Payload, eine Auth. Session-Ablauf, Opt-in-Lücke, nicht genehmigtes Template — alles wird automatisch über SMS geroutet.

SMS direkt.

sms
await bird.sms.send({
  from: "Bird",
  to:   "+15005550006",
  text: `Your order BRD-49217 has shipped.`,
});

Dieselben Leitungen, direkt adressiert. Verwenden Sie es, wenn Sie den SMS-Pfad explizit wollen.

Ab 0,005 $ pro Nachricht + Metas Konversationsgebühr zum Selbstkostenpreis.

Abrechnung nach Nutzung. Wir geben Metas Konversationsgebühr zum Selbstkostenpreis weiter — ohne Aufschlag. Mengenrabatte greifen automatisch ab 100.000/Monat und erneut ab 1 Mio./Monat. Keine Lizenzgebühr pro Nutzer, keine Funktionen hinter Jahresverträgen gesperrt.

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.

Jetzt startenDokumentation lesenoder

Using Claude Code, Cursor, or Codex? Point it at our MCP server — tools for every channel we expose, with scoped agent keys.

Cursor