WhatsApp is being upgraded

WhatsApp Business API bez zbędnej biurokracji BSP.

Oficjalny dostawca rozwiązań biznesowych Meta (BSP) 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 "@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 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 "@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();

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 — zadeklarowane w jednym 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 dowolnej wysyłki — po wygaśnięciu sesji wiadomość automatycznie przechodzi 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; potrzebujesz okna sesji z wyrażoną zgodą; potrzebujesz weryfikacji biznesowej Meta. To się nie zmieni — i nie zmieni się. Zmienia się to, czy Twój BSP ułatwia, czy utrudnia przejście przez te bramki — eksponując je w Twoim kodzie, w webhookach, 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 "@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..."

Każda zmiana stanu to webhook.

Payloady podpisane HMAC, zabezpieczone przed powtórkami, idempotentne. Ta sama struktura na każdym kanale Bird — naucz się jednego, 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ło 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, jedna autoryzacja. Wygaśnięcie sesji, brak zgody, niezatwierdzony szablon — wszystko automatycznie przechodzi przez SMS.

SMS bezpośrednio.

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

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

Od 0,005 USD za wiadomość + opłata konwersacyjna Meta po kosztach.

Rozliczenie za użycie. Opłatę konwersacyjną Meta przekazujemy po kosztach — bez marży. Rabaty wolumenowe włączają się automatycznie powyżej 100 tys./mies. i ponownie powyżej 1 mln/mies. Bez opłat za stanowisko, bez funkcji zablokowanych za rocznym zobowiązaniem.

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.

RozpocznijPrzeczytaj dokumentacjęlub

Using Claude Code, Cursor, or Codex? Point it at our hosted MCP server: curated Bird tools, a browser sign-in, and no API key. Or install the bird-ai plugin.

Cursor