De WhatsApp Business API, zonder het BSP-gedoe.
Officiële Meta Business Solution Provider sinds het bestaan van de API. Template-goedkeuring, sessievensters, media, interactieve berichten — allemaal geregeld. Meer dan twee miljard maandelijkse WhatsApp-gebruikers, bereikbaar via één enkel endpoint dat eruitziet als elk ander Bird-kanaal.
import { BirdClient } from "@messagebird/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 van npm install tot eerste verzending
Verstuur een WhatsApp-bericht in de taal die u al gebruikt.
SDK's in elke gangbare runtime. De eerste verzending gaat naar een goedgekeurde testontvanger (+15005550009) met een vooraf goedgekeurd template, zodat u een CI-check kunt draaien voordat u uw eerste template ter goedkeuring indient.
import { BirdClient } from "@messagebird/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();Tien dingen die de BSP-poort voor u verbergt. Wij niet.
WhatsApp wordt door Meta afgeschermd. De keuze van BSP bepaalt of die afschermingen in uw code verschijnen of verborgen worden in een dashboard. Wij kozen voor code.
- 01
Officiële Meta Business Solution Provider (BSP)
Directe relatie met Meta sinds het bestaan van de API. Geen doorverkocht transport, geen tussenstation van derden.
- 02
Templatebeheer
Dien in, volg de goedkeuringsstatus en ontvang een webhook zodra Meta goedkeurt of afwijst.
- 03
Sessievenster-bewustzijn
De SDK vertelt u of vrije tekst of een template is toegestaan voordat u verstuurt.
- 04
Interactieve berichten
Knoppen, lijsten, productkaarten en WhatsApp Flows — gedeclareerd in dezelfde payload.
- 05
Media en rijke content
Afbeeldingen, video, documenten, locatie, contacten, linkvoorbeelden, reacties en antwoorden.
- 06
WhatsApp Flows
Meerstaps in-app-formulieren met backend-validatie, gedefinieerd als JSON, uitgevoerd door Meta.
- 07
Click-to-WhatsApp Ads
Integratie met Meta Ads Manager zodat advertentieklikken in een gesprek terechtkomen dat u kunt beantwoorden.
- 08
Cross-channel fallback
Voeg fallback: "sms" toe aan elke verzending — bij sessieverlopen wordt automatisch via SMS gerouteerd.
- 09
Webhooks voor inkomende berichten
HMAC-ondertekende events voor inkomende berichten, leesbevestigingen, reacties en templatestatus.
- 10
2B+ gebruikers via één endpoint
Meer dan twee miljard maandelijkse WhatsApp-gebruikers bereikbaar via één enkele bird.whatsapp.send-aanroep.
Waarom wij WhatsApp bouwen
Wij waren een van de eerste WhatsApp BSP's. We zijn nog steeds een van de weinigen die mee-ontwikkelen met uw code.
WhatsApp is afgeschermd. U hebt een goedgekeurd template nodig, een opt-in sessievenster en een Meta-bedrijfsverificatie. Dat verandert niet — en zal niet veranderen. Wat wel verandert, is of uw BSP die drempels makkelijker of moeilijker maakt — door ze zichtbaar te maken in uw code, via webhooks waarop u kunt abonneren, in foutmeldingen die precies vertellen wat er mis is. Wij kozen voor het eerste.
import { BirdClient } from "@messagebird/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..."Elke statuswijziging is een webhook.
HMAC-ondertekende payloads, replay-beschermd, idempotent. Dezelfde envelope op elk Bird-kanaal — leer er één, en u kent ze allemaal.
{
"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-schema: 5s, 30s, 5m, 30m, 2h, 6h, 12h. Dead-letter na de laatste poging; elk dead-lettered event is opnieuw af te spelen vanuit het dashboard of de API.
whatsapp.queuedGeaccepteerd door de API en in de wachtrij gezet voor verzending naar Meta.whatsapp.sentOvergedragen aan Meta's Cloud API.whatsapp.deliveredMeta meldt dat het bericht op het apparaat van de ontvanger is afgeleverd.whatsapp.readOntvanger heeft het bericht geopend (als leesbevestigingen aan staan).whatsapp.failedPermanente fout — redencode in de payload.whatsapp.receivedInkomend bericht van een gebruiker binnen het 24-uurs sessievenster.whatsapp.template.approvedMeta heeft een door u ingediend template goedgekeurd.whatsapp.template.rejectedMeta heeft een template afgewezen — afwijzingsreden in de payload.
Fallback naar SMS is één attribuut, geen tweede integratie.
Als WhatsApp niet kan afleveren — sessie verlopen, ontvanger nooit opt-in gegeven, template nog niet goedgekeurd — routeert Bird hetzelfde bericht via SMS in hetzelfde verzoek. Dezelfde authenticatie, hetzelfde idempotency-contract, dezelfde webhook-structuur aan de andere kant.
WhatsApp met fallback.
await bird.whatsapp.send({
to: "+15005550009",
template: "order_shipped",
variables: { order_id: "BRD-49217" },
fallback: "sms",
});Eén payload, één authenticatie. Sessieverlopen, opt-in-hiaat, niet-goedgekeurd template — alles wordt automatisch via SMS gerouteerd.
SMS direct.
await bird.sms.send({
from: "Bird",
to: "+15005550006",
text: `Your order BRD-49217 has shipped.`,
});Dezelfde lijnen, rechtstreeks geadresseerd. Gebruik het wanneer u expliciet het SMS-pad wilt.
Vanaf $0,005 per bericht + Meta's gesprekskosten tegen kostprijs.
Afgerekend op basis van gebruik. We berekenen Meta's gesprekskosten door tegen kostprijs — zonder opslag. Volumekortingen worden automatisch toegepast boven 100K/maand en nogmaals boven 1M/maand. Geen stoelkosten, geen functies achter een jaarlijkse verbintenis.