Kunden weltweit mit der WhatsApp API ansprechen
Verbinden Sie Marketing-, Service- und Operations-Teams mit Kunden auf der weltweit beliebtesten Messaging-App.
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({
apiKey: process.env.BIRD_API_KEY!,
});
const msg = await bird.whatsapp.send({
to: "+15551234567",
template: {
slug: "bird_delivery_update",
components: [{ type: "body", parameters: [
{ type: "text", name: "ref", text: "#4821" },
{ type: "text", name: "date", text: "Wednesday" },
] }],
},
});
console.log(msg.id, msg.status);
// → "wam_01krdgeqcxet5s7t44vh8rt9mg", "accepted"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 Laufzeitumgebung. Der erste Versand erfolgt über ein von Bird verwaltetes Template wie bird_delivery_update – bereits von Meta genehmigt und mit automatischer Absenderauswahl. So sehen Sie eine echte Nachricht ankommen, bevor Sie ein eigenes Template erstellen.
const msg = await bird.whatsapp.send({
to: "+15551234567",
template: {
slug: "bird_otp",
components: [{ type: "body", parameters: [{ type: "text", text: "123456" }] }],
},
});
console.log(msg.id, msg.status);Acht Dinge, die wir zwischen Ihnen und Meta übernehmen.
WhatsApp ist reglementiert: ein genehmigtes Template, ein Empfänger mit Opt-in, ein verifiziertes Unternehmen. Diese Hürden bleiben bestehen. Ihr Anbieter entscheidet, ob sie in Ihrem Code sichtbar sind oder in einem Dashboard versteckt werden.
- 01
Offizieller Meta Business Solution Provider (BSP)
Direkte Beziehung zu Meta, seit es die API gibt. Kein weiterverkaufter Transit, kein Drittanbieter-Hop.
- 02
Template-Verwaltung
Lesen Sie den Katalog und Metas Bewertung pro Sprache über die CLI oder MCP-Tools. Erstellung und Einreichung erfolgen im Dashboard.
- 03
Templates in jeder Sprache
Ein Slug, viele Sprachen. Geben Sie beim Versand einen an oder lassen Sie den Standard des Templates greifen.
- 04
Buttons und Karussells
Link-, Schnellantwort-, Telefonnummer- und Code-kopieren-Buttons sowie Karussells mit 2–10 Karten.
- 05
Medien und Rich Content
Bilder, Video, Audio, Sticker, Dokumente und Standort – jeweils über ein einzelnes Feld beim Versand.
- 06
Tags und Metadaten bei jedem Versand
Tags werden zu Filter- und Analyse-Dimensionen; Metadaten kommen bei jedem Webhook zurück.
- 07
Webhooks für eingehende Nachrichten
HMAC-signierte Events für eingehende Nachrichten, Zustellbestätigungen und Lesebestätigungen.
- 08
3 Mrd.+ Nutzer über einen Endpunkt
Über drei Milliarden monatliche WhatsApp-Nutzer, erreichbar über einen einzigen bird.whatsapp.send-Aufruf.
Explore the WhatsApp platform
Each capability in depth. One API, one set of keys.
Templates.
Categories, per-language approval, and placeholders filled at send time.
Sending.
One content kind per request, idempotency keys, tags, and metadata.
Two-way.
Inbound messages, the 24-hour customer service window, and replies.
Numbers.
Bird-managed senders, bringing your own number, and business accounts.
Pricing.
One all-in rate per message, by destination country and category.
FAQs.
Every WhatsApp question in one place, from first send to analytics.
Warum wir WhatsApp entwickeln
Wir waren einer der ersten WhatsApp-BSPs. Und wir sind immer noch einer der wenigen, die Code mit Ihnen ausliefern.
WhatsApp ist reglementiert. Sie brauchen ein genehmigtes Template; Sie brauchen ein offenes Kundenservice-Fenster, um etwas anderes als ein Template zu senden; Sie brauchen eine Meta-Unternehmensverifizierung. Das ändert sich nicht – und wird es auch nicht. Was sich ändert, ist ob Ihr BSP diese Hürden einfacher oder schwieriger macht: indem er sie in Ihrem Code sichtbar macht, über Webhooks, die Sie abonnieren können, in Fehlermeldungen, die genau sagen, was falsch ist. Wir haben uns für Ersteres entschieden.
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({
apiKey: process.env.BIRD_API_KEY!,
});
const msg = await bird.whatsapp.send({
to: "+15551234567",
template: {
slug: "bird_delivery_update",
components: [{ type: "body", parameters: [
{ type: "text", name: "ref", text: "#4821" },
{ type: "text", name: "date", text: "Wednesday" },
] }],
},
});
console.log(msg.id, msg.status);
// → "wam_01krdgeqcxet5s7t44vh8rt9mg", "accepted"Jede Statusänderung ist ein Webhook.
HMAC-signierte Payloads, Replay-geschützt, idempotent. Dasselbe Format auf jedem Bird-Kanal: einen lernen, alle beherrschen.
{
"type": "whatsapp.read",
"timestamp": "2026-05-19T15:42:08.114Z",
"data": {
"whatsapp_id": "wam_01krdgeqcxet5s7t44vh8rt9mg",
"workspace_id": "ws_01krdgeqcxet5s7t44vh8rt9mg",
"direction": "outbound",
"from": { "phone_number": "+15557654321" },
"to": { "phone_number": "+15551234567" },
"tags": [{ "name": "campaign", "value": "order-updates" }],
"metadata": { "order_id": "BRD-49217" }
}
}Wiederholungsplan: 5s, 5m, 30m, 2h, 5h, dann zweimal 10h. Nach dem letzten Versuch gilt die Zustellung als endgültig fehlgeschlagen – Replay stellt sie über das Dashboard oder die API wieder her.
whatsapp.acceptedVon 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.rejectedVor dem Versand abgelehnt und nicht berechnet: Fehlercode in der Payload.whatsapp.failedPermanenter Fehler: Fehlercode im Payload.whatsapp.receivedEingehende Nachricht von einem WhatsApp-Nutzer.
Denselben Kunden per SMS zu erreichen, ist derselbe Aufruf – nur ein Feld weiter.
Derselbe Client, dieselbe Authentifizierung, dasselbe Fehlerformat, dieselbe Webhook-Struktur. Was sich ändert, ist die Payload: WhatsApp enthält ein von Meta genehmigtes Template, SMS enthält Text. Tags und Metadaten werden bei beiden mitgesendet, sodass ein Dashboard-Set beide Kanäle abdeckt.
await bird.whatsapp.send({
to: "+15551234567",
template: {
slug: "bird_delivery_update",
language: "en",
components: [{ type: "body", parameters: [
{ type: "text", name: "ref", text: "BRD-49217" },
{ type: "text", name: "date", text: "10 Jul 2026" },
] }],
},
});Ein von Bird verwaltetes Template: von Meta genehmigt, in über 70 Sprachen verfügbar, mit automatischer Absenderauswahl. Platzhalterwerte werden als Komponenten übergeben.
SMS
await bird.sms.send({
from: "Bird",
to: "+15551234567",
text: `Your order BRD-49217 has shipped.`,
category: "transactional",
});Derselbe Befehl auf dem anderen Kanal: Freitext plus Kategorie, ohne Template-Genehmigung.
Ein Preis pro Nachricht, inklusive Meta-Gebühr.
Nutzungsbasierte Preise. Jeder Preis deckt die Meta-Gebühr und unsere in einer einzigen Zahl ab und richtet sich nach Zielland und Nachrichtenkategorie. Keine Gebühr pro Nutzer und nichts, was eine Jahresbindung voraussetzt.