WhatsApp jest ulepszany

WhatsApp Business API bez zbędnej biurokracji BSP.

Oficjalny dostawca rozwiązań Meta Business od momentu powstania API. Zatwierdzanie szablonów, okna sesji, multimedia, wiadomości interaktywne — wszystko obsłużone. Ponad dwa miliardy aktywnych użytkowników WhatsApp miesięcznie, dostępnych z jednego endpointu, który wygląda jak każdy inny kanał Bird.

order-shipped.ts
200 · 480ms
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 minut od npm install do pierwszej wysyłki

Wyślij wiadomość WhatsApp w języku, którego już używasz.

SDK dla każdego popularnego środowiska uruchomieniowego. Pierwsza wiadomość trafia do autoryzowanego odbiorcy testowego (+15005550009) z wcześniej zatwierdzonym szablonem, dzięki czemu możesz uruchomić test CI, zanim zgłosisz swój pierwszy szablon do zatwierdzenia.

1
2
3
4
5
6
7
8
9
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();

Dziesięć rzeczy, które BSP przed Tobą ukrywa. My nie.

WhatsApp jest kontrolowany przez Meta. Wybór BSP to kwestia tego, czy ograniczenia pojawiają się w Twoim kodzie, czy są ukryte w dashboardzie. My wybraliśmy kod.

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

  2. 02

    Zarządzanie szablonami

    Wysyłaj szablony, śledź status zatwierdzenia i otrzymuj webhook w momencie, gdy Meta zatwierdzi lub odrzuci.

  3. 03

    Świadomość okna sesji

    SDK informuje Cię przed wysyłką, czy dozwolona jest wiadomość dowolna, czy wymagany jest szablon.

  4. 04

    Wiadomości interaktywne

    Przyciski, listy, karty produktów i WhatsApp Flows — deklarowane w tym samym payloadzie.

  5. 05

    Multimedia i treści rozszerzone

    Obrazy, wideo, dokumenty, lokalizacja, kontakty, podglądy linków, reakcje i odpowiedzi.

  6. 06

    WhatsApp Flows

    Wieloetapowe formularze w aplikacji z walidacją po stronie backendu, definiowane jako JSON, wykonywane przez Meta.

  7. 07

    Reklamy Click-to-WhatsApp

    Integracja z Meta Ads Manager — kliknięcia w reklamę trafiają do konwersacji, na którą możesz odpowiedzieć.

  8. 08

    Fallback między kanałami

    Dodaj fallback: "sms" do dowolnego wysłania. Po wygaśnięciu sesji wiadomość automatycznie kierowana jest przez SMS.

  9. 09

    Webhooki wiadomości przychodzących

    Zdarzenia podpisane HMAC dla wiadomości przychodzących, potwierdzeń odczytu, reakcji i stanów szablonów.

  10. 10

    Ponad 2 mld użytkowników na jednym endpoincie

    Ponad dwa miliardy aktywnych użytkowników WhatsApp miesięcznie, dostępnych z jednego wywołania bird.whatsapp.send.

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 kontrolowany. Potrzebujesz zatwierdzonego szablonu, okna sesji z wyrażoną zgodą i weryfikacji biznesowej Meta. To się nie zmieni. Zmienia się to, czy Twój BSP ułatwia, czy utrudnia przejście przez te bramki — czy udostępnia je w kodzie, w webhookach, na które możesz subskrybować, w błędach, które mówią dokładnie, co jest nie tak. My wybraliśmy to pierwsze.

order-shipped.ts
200 · 480ms
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..."

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.

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

Harmonogram ponownych prób: 5s, 30s, 5m, 30m, 2h, 6h, 12h. Dead-letter po ostatniej próbie; każde zdarzenie dead-letter można odtworzyć z dashboardu lub API.

  • whatsapp.queuedPrzyję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.failedTrwały błąd: kod przyczyny w payloadzie.
  • whatsapp.receivedWiadomość przychodząca od użytkownika w 24-godzinnym oknie sesji.
  • whatsapp.template.approvedMeta zatwierdziło zgłoszony przez Ciebie szablon.
  • whatsapp.template.rejectedMeta odrzuciła szablon: powód odrzucenia w payloadzie.

Fallback na SMS to jeden atrybut, a nie druga integracja.

Jeśli WhatsApp nie może dostarczyć wiadomości — sesja wygasła, odbiorca nie wyraził zgody, szablon jeszcze niezatwierdzony — Bird kieruje tę samą wiadomość przez SMS w tym samym żądaniu. Ta sama autoryzacja, ten sam kontrakt idempotentności, ten sam format webhooka po drugiej stronie.

WhatsApp z fallbackiem.

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

Jeden payload, jedno uwierzytelnienie. Wygaśnięcie sesji, brak zgody, niezatwierdzony szablon — wszystko automatycznie kierowane przez SMS.

SMS bezpośrednio.

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

Te same połączenia, adresowane bezpośrednio. Użyj, gdy chcesz jawnie wybrać ścieżkę SMS.

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.

Zacznij od jednego kanału.
Dodaj kolejne, gdy będziesz gotowy.

Testowy klucz API otrzymasz od razu. Dostęp produkcyjny odblokujesz po dodaniu metody płatności i weryfikacji nadawcy.

Używasz Claude Code, Cursor lub Codex? Skopiuj prompt konfiguracyjny, a Twój agent zainstaluje za Ciebie Bird CLI i umiejętności. Wybierz swój:

Cursor