SMS API dla programistów, którzy naprawdę muszą dostarczać.
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.
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
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.
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.
- 01
Zasięg w ponad 150 krajach
Jedno zunifikowane API, jedna relacja rozliczeniowa — żadnych umów per region do ścigania.
- 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.
- 03
Routing klasy operatorskiej
Przełączanie trasy w czasie rzeczywistym, gdy ścieżka operatora się pogarsza; failover następuje, zanim zdążysz zauważyć.
- 04
Dwukierunkowe SMS przychodzące
Wiadomości przychodzące docierają jako webhooki podpisane HMAC na numerze, który zamówiłeś.
- 05
Numery każdego rodzaju
Numery długie, krótkie, bezpłatne i alfanumeryczne identyfikatory nadawcy — zamawiane przez jeden endpoint.
- 06
A2P 10DLC w panelu
Rejestracja marki i kampanii obsługiwana w konsoli; status można odpytać przez API.
- 07
Sprawdzenie MNP przed wysyłką
Przy każdym wysłaniu ustalamy aktualnego operatora odbiorcy, aby trasa była zawsze prawidłowa.
- 08
Zgodność ze STOP / HELP
Słowa kluczowe rezygnacji honorowane automatycznie per odbiorca; lista wykluczeń dostępna do odpytania.
- 09
Potwierdzenia dostarczenia jako webhooki
Każda zmiana stanu generuje podpisane zdarzenie — od sms.queued przez sms.delivered lub sms.failed.
- 10
Bezpieczeństwo segmentów i Unicode
SDK liczy segmenty przed wysyłką i ostrzega o zmianach kodowania, które mogłyby podzielić wiadomość.
Poznaj platformę SMS
Każda funkcja dogłębnie. Jedno API, jeden zestaw kluczy.
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.
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.
{
"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.
await bird.sms.send({
from: "Bird",
to: "+15005550006",
text: `Your code is ${code}.`,
});
Ten sam czasownik. Inny payload — szablonowy, z wyrażoną zgodą, w kanale, który dwa miliardy ludzi otwiera codziennie.
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?+
Co obejmuje API SMS od Bird?+
Do jakich krajów mogę wysyłać?+
Czy obsługujecie słowa kluczowe STOP i HELP?+
Czy muszę rejestrować się w A2P 10DLC?+
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.