SMS przechodzi modernizację

SMS API dla programistów, którzy naprawdę muszą dostarczać.

Skonfigurowane w:
Cursor

Ponad 150 krajów, 240 bezpośrednich połączeń z operatorami, jeden model uwierzytelniania. Około 40% światowego komercyjnego ruchu SMS przechodzi przez sieć Bird — robimy to od dekady. 95% wiadomości dostarczanych w mniej niż 2,5 sekundy.

send-otp.ts
200 · 0.4s
import { BirdClient } from "@messagebird/sdk";

const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });

const code = generateOtp();

const { data, error } = await bird.sms.send({
  from: "Bird",
  to:   "+15005550006",
  text: `Your Bird verification code is ${code}. Reply STOP to opt out.`,
}).safe();

if (error) throw error;
console.log(data.id);
// → "sms_4kT01Lq2m..."

Today at 2:14 PM

Hey Ada — your Bird sign-in code is 482917. It'll expire in 10 minutes. Don't share it with anyone.
482917
Delivered

5 minut od npm install do pierwszego wysłania

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

SDK w każdym popularnym środowisku uruchomieniowym. Pierwsza wiadomość trafia do autoryzowanego odbiorcy testowego (+15005550006), więc możesz dodać test CI, zanim zamówisz numer.

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.sms.send({
  from: "Bird",
  to:   "+15005550006",
  text: "Hello from Node.",
}).safe();

Dziesięć rzeczy, które rejestrujemy, konfigurujemy i trasujemy, żebyś nie musiał.

Trasowanie, zgodność regulacyjna i elementy obsługi ruchu przychodzącego — nazwane i możliwe do audytu.

  1. 01

    Zasięg w ponad 150 krajach

    Jedno zunifikowane API, jedna relacja rozliczeniowa — żadnych umów per region do ścigania.

  2. 02

    240 bezpośrednich połączeń z operatorami

    Żaden pośrednik-agregator nie zjada marży ani nie gubi potwierdzeń między nami a operatorem.

  3. 03

    Routing klasy operatorskiej

    Przełączanie trasy w czasie rzeczywistym, gdy ścieżka operatora się pogarsza; failover następuje, zanim zdążysz zauważyć.

  4. 04

    Dwukierunkowe SMS przychodzące

    Wiadomości przychodzące docierają jako webhooki podpisane HMAC na numerze, który zamówiłeś.

  5. 05

    Numery każdego rodzaju

    Numery długie, krótkie, bezpłatne i alfanumeryczne identyfikatory nadawcy — zamawiane przez jeden endpoint.

  6. 06

    A2P 10DLC w panelu

    Rejestracja marki i kampanii obsługiwana w konsoli; status można odpytać przez API.

  7. 07

    Sprawdzenie MNP przed wysyłką

    Przy każdym wysłaniu ustalamy aktualnego operatora odbiorcy, aby trasa była zawsze prawidłowa.

  8. 08

    Zgodność ze STOP / HELP

    Słowa kluczowe rezygnacji honorowane automatycznie per odbiorca; lista wykluczeń dostępna do odpytania.

  9. 09

    Potwierdzenia dostarczenia jako webhooki

    Każda zmiana stanu generuje podpisane zdarzenie — od sms.queued przez sms.delivered lub sms.failed.

  10. 10

    Bezpieczeństwo segmentów i Unicode

    SDK liczy segmenty przed wysyłką i ostrzega o zmianach kodowania, które mogłyby podzielić wiadomość.

SMS to jeden kanał w większym zestawie narzędzi. Weryfikuj użytkowników jednorazowymi kodami dostępu przez Verifications, sprawdzaj typ linii i operatora numeru przed wysyłką dzięki Lookup lub docieraj do tego samego urządzenia za pomocą rich cards przez RCS.

Dlaczego tworzymy SMS

SMS to trudny kanał. Zbudowaliśmy API, które sprawia, że staje się nudny.

Każdy kraj ma inne przepisy, każdy operator ma inne trasy, każdy region ma inne konwencje identyfikatora nadawcy. Prowadzimy SMS od dziesięciu lat, więc cała ta wiedza kryje się za jednym endpointem, jednym modelem uwierzytelniania i jednym kontraktem webhook. Cokolwiek zmieni się po stronie operatora, wywołanie bird.sms.send, które napisałeś, pozostaje bez zmian.

send-otp.ts
200 · 0.4s
import { BirdClient } from "@messagebird/sdk";

const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });

const code = generateOtp();

const { data, error } = await bird.sms.send({
  from: "Bird",
  to:   "+15005550006",
  text: `Your Bird verification code is ${code}. Reply STOP to opt out.`,
}).safe();

if (error) throw error;
console.log(data.id);
// → "sms_4kT01Lq2m..."

Każda zmiana stanu to webhook.

Payloady podpisane HMAC, chronione przed powtórzeniem, idempotentne. Ta sama koperta na każdym kanale Bird — naucz się jednego, znasz je wszystkie.

POST /webhooks/bird
signed
{
  "type": "sms.delivered",
  "id":   "evt_7jR42x...",
  "created_at": "2026-05-19T15:42:01.221Z",
  "data": {
    "sms_id":     "sms_4kT01Lq2m",
    "from":       "Bird",
    "to":         "+15005550006",
    "mcc_mnc":    "310-260",
    "country":    "US",
    "segments":   1,
    "latency_ms": 1284
  }
}

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

  • sms.queuedPrzyjęta przez API i dodana do kolejki przekazania operatorowi.
  • sms.sentPrzesłana do SMSC operatora docelowego.
  • sms.deliveredOtrzymano potwierdzenie dostarczenia od operatora (DLR).
  • sms.failedTrwała awaria — odrzucenie przez operatora, nieprawidłowy numer, trafienie na listę wykluczeń.
  • sms.receivedWiadomość przychodząca na jeden z Twoich zamówionych numerów.
  • sms.opted_outOdbiorca wysłał słowo kluczowe STOP; przyszłe wysyłki na ten numer będą blokowane.

Jeśli zintegrowałeś SMS, zintegrowałeś WhatsApp.

Ten sam model uwierzytelniania, ten sam kontrakt idempotencji, ta sama koperta błędu, ta sama struktura webhooka. Różnica polega na tym, co każdy z nich robi, a nie na tym, jak go wywołujesz.

SMS

Jeden czasownik. Zwykły tekst. Numeryczne to/from. Kształt, który każdy programista ma już w pamięci mięśniowej.

otp.ts
await bird.sms.send({
  from: "Bird",
  to:   "+15005550006",
  text: `Your code is ${code}.`,
});

WhatsApp

Ten sam czasownik. Inny payload — szablonowy, z wyrażoną zgodą, w kanale, który dwa miliardy ludzi otwiera codziennie.

otp.ts
await bird.whatsapp.send({
  from: "+15551234567",
  to:   "+15005550006",
  template: { name: "otp", variables: { code } },
});

FAQ dotyczące API SMS

Jak szybko wyślę pierwszą wiadomość SMS?+
Zainstaluj SDK i wyślij do dozwolonego odbiorcy testowego +15005550006 w około pięć minut — możesz wdrożyć kontrolę CI, zanim jeszcze udostępnisz numer.
Co obejmuje API SMS od Bird?+
Jeden endpoint wysyłki, dwukierunkowy ruch przychodzący, udostępnianie numerów (long codes, short codes, toll-free oraz alfanumeryczne identyfikatory nadawcy), zgodność z A2P 10DLC i obsługa opt-out, routing direct-to-carrier oraz analityka dostarczania — wszystko w jednym API.
Do jakich krajów mogę wysyłać?+
Bird obejmuje ponad 150 krajów poprzez 240 połączeń direct-to-carrier, z ponownym wyborem trasy na poziomie operatora, gdy ścieżka operatora ulega pogorszeniu.
Czy obsługujecie słowa kluczowe STOP i HELP?+
Tak, automatycznie dla każdego odbiorcy. STOP wypisuje odbiorcę i dodaje go do przeszukiwalnej listy wykluczeń, HELP odsyła automatyczną odpowiedź pomocniczą, a START zapisuje go ponownie.
Czy muszę rejestrować się w A2P 10DLC?+
Aby wysyłać ruch application-to-person na numery w USA — tak. Rejestracja marki i kampanii odbywa się w panelu, a status można odpytywać przez API.

Cennik

Od ułamka centa do kilku centów za segment

Wycena według użycia i kraju docelowego. Pełna siatka cen dla poszczególnych krajów znajduje się na stronie cennika, a rabaty ilościowe są automatycznie stosowane na poziomie konta. Bez opłaty za platformę, bez opłaty za stanowisko, bez funkcji poziomów zablokowanych za rocznymi zobowiązaniami.

Codziennie zaufany przez zespoły tworzące oprogramowanie światowej klasy

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