SMS API untuk developer yang benar-benar perlu mengirim.
150+ negara, 240 koneksi langsung ke operator, satu model autentikasi. Sekitar 40% volume SMS komersial dunia melewati jaringan Bird — kami telah melakukannya selama satu dekade. 95% pesan terkirim dalam waktu kurang dari 2,5 detik.
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.`,
category: "authentication",
}).safe();
if (error) throw error;
console.log(data.id);
// → "sms_4kT01Lq2m..."
Today at 2:14 PM
5 menit dari npm install ke pengiriman pertama
Kirim SMS dari bahasa pemrograman yang sudah Anda gunakan.
SDK di setiap runtime utama. Pengiriman pertama dikirim ke penerima uji coba yang telah ditentukan (+15005550006) sehingga Anda bisa menjalankan CI check sebelum menyediakan nomor.
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
const { data, error } = await bird.sms.send({
to: "+15005550006",
text: "Hello from Node.",
category: "transactional",
}).safe();Sepuluh hal yang kami urus, konfigurasi, dan rutekan agar Anda tidak perlu melakukannya.
Routing, kepatuhan, dan primitif inbound — teridentifikasi dan dapat diaudit.
- 01
Jangkauan 150+ negara
Satu API terpadu, satu hubungan penagihan — tidak perlu mengejar kontrak per wilayah.
- 02
240 koneksi langsung ke operator
Tidak ada agregator perantara yang mengambil margin atau menghilangkan tanda terima antara kami dan MNO.
- 03
Routing kelas operator
Pemilihan ulang rute secara real-time saat jalur operator menurun; failover terjadi sebelum Anda menyadarinya.
- 04
SMS dua arah inbound
Pesan masuk tiba sebagai webhook bertanda tangan HMAC pada nomor yang Anda sediakan.
- 05
Nomor dalam berbagai bentuk
Long code, short code, toll-free, dan alphanumeric sender ID — disediakan melalui satu endpoint.
- 06
A2P 10DLC dalam dashboard
Registrasi brand dan kampanye ditangani di konsol; status dapat di-query dari API.
- 07
MNP lookup sebelum pengiriman
Kami menyelesaikan operator penerima saat ini di setiap pengiriman sehingga rute selalu tepat.
- 08
Kepatuhan STOP / HELP
Kata kunci opt-out dipatuhi secara otomatis per penerima; daftar supresi dapat di-query.
- 09
Delivery receipt sebagai webhook
Every state transition fires a signed event — sms.accepted through sms.delivered or sms.failed.
- 10
Keamanan segmen dan Unicode
SDK menghitung segmen sebelum pengiriman dan memperingatkan perubahan encoding yang akan memecah pesan.
Jelajahi platform SMS
Setiap kemampuan secara mendalam. Satu API, satu set key.
SMS adalah satu channel dalam perangkat yang lebih besar. Verifikasi pengguna dengan one-time passcode melalui Verifications, periksa line type dan operator sebuah nomor sebelum mengirim dengan Lookup, atau jangkau handset yang sama dengan kartu kaya lewat RCS.
Mengapa kami membangun SMS
SMS adalah kanal yang rumit. Kami membangun API yang membuatnya membosankan.
Setiap negara punya aturan berbeda, setiap operator punya rute berbeda, setiap wilayah punya konvensi sender-ID yang berbeda. Kami telah menjalankan SMS selama sepuluh tahun, sehingga seluruh pengetahuan itu tersedia di balik satu endpoint, satu model autentikasi, satu kontrak webhook. Apa pun yang berubah di hulu, panggilan yang Anda tulis ke bird.sms.send tetap sama.
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.`,
category: "authentication",
}).safe();
if (error) throw error;
console.log(data.id);
// → "sms_4kT01Lq2m..."
Setiap perubahan status adalah webhook.
Payload bertanda tangan HMAC, dilindungi dari replay, idempoten. Envelope yang sama di setiap kanal Bird — pelajari satu, Anda sudah mempelajari semuanya.
{
"type": "sms.delivered",
"timestamp": "2026-05-19T15:42:01.221Z",
"data": {
"sms_id": "sms_4kT01Lq2m",
"workspace_id": "ws_8KQ2",
"to": "+15005550006",
"from": "Bird",
"tags": [{ "name": "campaign", "value": "otp" }],
"metadata": { "user_id": "usr_12345" },
"carrier": "Verizon",
"mcc_mnc": "311480"
}
}
Jadwal retry: 5d, 30d, 5m, 30m, 2j, 6j, 12j. Dead-letter setelah percobaan terakhir; setiap event dead-letter dapat di-replay dari dashboard atau API.
sms.acceptedDiterima oleh API dan diantrekan untuk penyerahan ke operator.sms.sentDikirim ke SMSC operator tujuan.sms.deliveredDelivery receipt diterima dari operator (DLR).sms.failedKegagalan permanen — penolakan operator, nomor tidak valid, terkena supresi.sms.receivedPesan masuk di salah satu nomor yang Anda sediakan.sms.opted_outPenerima mengirim kata kunci STOP; pengiriman selanjutnya ke nomor ini akan disupresi.
Jika Anda sudah mengintegrasikan SMS, Anda sudah mengintegrasikan WhatsApp.
Model auth yang sama, kontrak idempotency yang sama, amplop error yang sama, bentuk webhook yang sama. Yang berbeda adalah apa yang dilakukan masing-masing, bukan cara Anda memanggilnya.
SMS
Satu verb. Teks biasa. To/from numerik. Bentuk yang sudah menjadi kebiasaan setiap developer.
await bird.sms.send({
to: "+15005550006",
text: `Your code is ${code}.`,
category: "authentication",
});
Verb yang sama. Payload berbeda — templated, opted-in, di kanal yang dibuka dua miliar orang setiap hari.
await bird.whatsapp.send({
from: "+15551234567",
to: "+15005550006",
template: { name: "otp", variables: { code } },
});
FAQ SMS API
Seberapa cepat saya bisa mengirim SMS pertama?+
Apa saja yang termasuk dalam SMS API Bird?+
Ke negara mana saja saya bisa mengirim?+
Apakah Anda menangani keyword STOP dan HELP?+
Apakah saya perlu mendaftar A2P 10DLC?+
Harga
Dari di bawah satu sen hingga beberapa sen per segment
Dihargai berdasarkan penggunaan dan negara tujuan. Grid lengkap per negara ada di halaman harga, dan diskon volume berlaku otomatis di level akun. Tanpa biaya platform, tanpa biaya seat, tanpa fitur tier yang dikunci di balik komitmen tahunan.