Angażuj klientów na całym świecie dzięki WhatsApp API
Połącz zespoły marketingu, obsługi klienta i operacji z klientami w najpopularniejszej aplikacji do komunikacji na świecie.
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 minut od npm install do pierwszej wysyłki
Wyślij wiadomość WhatsApp w języku, którego już używasz.
SDK w każdym popularnym środowisku uruchomieniowym. Pierwsza wiadomość jest wysyłana za pomocą szablonu zarządzanego przez Bird, np. bird_delivery_update, już zatwierdzonego przez Meta i automatycznie wybierającego nadawcę — dzięki temu widzisz dostarczenie prawdziwej wiadomości, zanim stworzysz własną.
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);Osiem rzeczy, które obsługujemy między Tobą a Meta.
WhatsApp jest chroniony bramkami: zatwierdzony szablon, odbiorca ze zgodą, zweryfikowana firma. Te bramki się nie zmieniają. Twój dostawca decyduje, czy pojawią się w Twoim kodzie, czy zostaną ukryte w panelu.
- 01
Oficjalny dostawca rozwiązań biznesowych Meta (BSP)
Bezpośrednia relacja z Meta od momentu powstania API. Bez pośredników, bez dodatkowych przeskoków.
- 02
Zarządzanie szablonami
Przeglądaj katalog i decyzje Meta dla każdego języka z poziomu CLI lub narzędzi MCP. Tworzenie i przesyłanie szablonów odbywa się w panelu.
- 03
Szablony w każdym języku
Jeden identyfikator, wiele języków. Wskaż go przy wysyłce lub pozwól, aby domyślny język szablonu został zastosowany automatycznie.
- 04
Przyciski i karuzele
Przyciski z linkiem, szybką odpowiedzią, numerem telefonu i kodem do skopiowania oraz karuzele od 2 do 10 kart.
- 05
Multimedia i treści rozszerzone
Obrazy, wideo, audio, naklejki, dokumenty i lokalizacja — każdy typ w jednym polu wysyłki.
- 06
Tagi i metadane w każdej wysyłce
Tagi stają się wymiarami filtrów i analityki; metadane wracają w każdym webhooku.
- 07
Webhooki wiadomości przychodzących
Zdarzenia podpisane HMAC dla wiadomości przychodzących, potwierdzeń dostarczenia i potwierdzeń odczytu.
- 08
Ponad 3 mld użytkowników w jednym endpoincie
Ponad trzy miliardy aktywnych miesięcznie użytkowników WhatsApp dostępnych z jednego wywołania bird.whatsapp.send.
Odkryj platformę WhatsApp
Każda funkcja w szczegółach. Jedno API, jeden zestaw kluczy.
Szablony.
Kategorie, zatwierdzanie dla każdego języka i zmienne wypełniane w momencie wysyłki.
Wysyłanie.
Jeden typ treści na żądanie, klucze idempotentności, tagi i metadane.
Komunikacja dwukierunkowa.
Wiadomości przychodzące, 24-godzinne okno obsługi klienta i odpowiedzi.
Numery.
Nadawcy zarządzani przez Bird, możliwość użycia własnego numeru i konta firmowe.
Cennik.
Jedna stawka za wiadomość, zależna od kraju docelowego i kategorii.
FAQ.
Wszystkie pytania o WhatsApp w jednym miejscu — od pierwszej wysyłki po analitykę.
Dlaczego tworzymy WhatsApp
Byliśmy jednym z pierwszych BSP WhatsApp. Nadal jesteśmy jednym z niewielu, którzy dostarczają kod razem z Tobą.
WhatsApp jest chroniony bramkami. Potrzebujesz zatwierdzonego szablonu; potrzebujesz otwartego okna obsługi klienta, aby wysłać cokolwiek poza szablonem; potrzebujesz weryfikacji biznesowej Meta. To się nie zmienia i nie zmieni. Zmienia się to, czy Twój BSP ułatwia, czy utrudnia przejście przez te bramki: udostępniając je w Twoim kodzie, w webhookach, które możesz subskrybować, w błędach, które dokładnie mówią, co jest nie tak. My wybraliśmy to pierwsze.
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"Każda zmiana stanu to webhook.
Payloady podpisane HMAC, zabezpieczone przed powtórzeniem, idempotentne. Ta sama struktura w każdym kanale Bird: naucz się jednego, a znasz je wszystkie.
{
"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" }
}
}Harmonogram ponownych prób: 5s, 5m, 30m, 2h, 5h, a potem 10h dwukrotnie. Po ostatniej próbie dostarczenie zostaje trwale oznaczone jako nieudane, a ponowne odtworzenie przywraca je z panelu lub API.
whatsapp.acceptedPrzyjęto przez API i umieszczono w kolejce do wysyłki do Meta.whatsapp.sentPrzekazano do Meta Cloud API.whatsapp.deliveredMeta potwierdza, że wiadomość dotarła na urządzenie odbiorcy.whatsapp.readOdbiorca otworzył wiadomość (jeśli potwierdzenia odczytu są włączone).whatsapp.rejectedOdrzucone przed wysłaniem i bez opłat: kod przyczyny w odpowiedzi.whatsapp.failedTrwały błąd: kod przyczyny w payloadzie.whatsapp.receivedWiadomość przychodząca od użytkownika WhatsApp.
Dotarcie do tego samego klienta przez SMS to to samo wywołanie, jedno pole dalej.
Ten sam klient, ta sama autoryzacja, ta sama struktura błędów, ten sam format webhooka. Zmienia się zawartość: WhatsApp niesie szablon zatwierdzony przez Meta, SMS niesie tekst. Tagi i metadane towarzyszą obu kanałom, więc jeden zestaw paneli obsługuje oba.
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" },
] }],
},
});Szablon zarządzany przez Bird: zatwierdzony przez Meta, dostępny w ponad 70 językach i automatycznie dobierający nadawcę. Wartości zastępcze są przekazywane jako komponenty.
SMS
await bird.sms.send({
from: "Bird",
to: "+15551234567",
text: `Your order BRD-49217 has shipped.`,
category: "transactional",
});Ten sam czasownik na drugim kanale: dowolny tekst plus kategoria, bez konieczności zatwierdzania szablonu.
Jedna stawka za wiadomość, z opłatą Meta w cenie.
Rozliczenie według zużycia. Każda stawka obejmuje opłatę Meta i naszą w jednej kwocie i zależy od kraju docelowego oraz kategorii wiadomości. Bez opłat za użytkownika i bez niczego, co wymaga rocznego zobowiązania.