SMS API untuk developer yang benar-benar perlu mengirim.

Siap dalam:
Cursor

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.

send-notification.ts
202 · 0.4s
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:     "Your order #4821 has shipped. Track it: bird.ly/t/4821x",
  category: "transactional",
}).safe();

if (error) throw error;
console.log(data.id);
// → "sms_4kT01Lq2m..."
Hi Ada, reminder of your appointment tomorrow at 14:30 with Dr. Kowalski.
Your order #4821 has shipped. Track it: bird.ly/t/4821x
Your subscription renews on 3 Sep for €12/mo. Manage it here: bird.ly/account

5 menit dari npm install hingga 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.

1
2
3
4
5
6
7
const msg = await bird.sms.send({
  from: "+15557654321",
  to: "+14155550100",
  text: "Your verification code is 123456.",
  category: "authentication",
});
console.log(msg.id, msg.status);

Sepuluh hal yang kami urus, konfigurasi, dan rutekan agar Anda tidak perlu melakukannya.

Routing, kepatuhan, dan primitif inbound — teridentifikasi dan dapat diaudit.

  1. 01

    Jangkauan 150+ negara

    Satu API terpadu, satu hubungan penagihan. Tidak perlu mengejar kontrak per wilayah.

  2. 02

    240 koneksi langsung ke operator

    Tidak ada agregator perantara yang mengambil margin atau menghilangkan tanda terima antara kami dan MNO.

  3. 03

    Routing kelas operator

    Pemilihan ulang rute secara real-time saat jalur operator menurun; failover terjadi sebelum Anda menyadarinya.

  4. 04

    SMS dua arah inbound

    Pesan masuk tiba sebagai webhook bertanda tangan HMAC pada nomor yang Anda sediakan.

  5. 05

    Nomor dalam berbagai bentuk

    Long code, short code, toll-free, dan alphanumeric sender ID, disediakan melalui satu endpoint.

  6. 06

    A2P 10DLC dalam dashboard

    Registrasi brand dan kampanye ditangani di konsol; status dapat di-query dari API.

  7. 07

    MNP lookup sebelum pengiriman

    Kami menyelesaikan operator penerima saat ini di setiap pengiriman sehingga rute selalu tepat.

  8. 08

    Kepatuhan STOP / HELP

    Kata kunci opt-out dipatuhi secara otomatis per penerima; daftar supresi dapat di-query.

  9. 09

    Delivery receipt sebagai webhook

    Setiap transisi status memicu event bertanda tangan: dari sms.accepted hingga sms.delivered atau sms.failed.

  10. 10

    Keamanan segmen dan Unicode

    SDK menghitung segmen sebelum pengiriman dan memperingatkan perubahan encoding yang akan memecah pesan.

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.

send-notification.ts
202 · 0.4s
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:     "Your order #4821 has shipped. Track it: bird.ly/t/4821x",
  category: "transactional",
}).safe();

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

Setiap perubahan status adalah webhook.

Payload bertanda tangan HMAC, dilindungi dari replay, idempoten. Format yang sama di setiap channel Bird: pelajari satu, Anda menguasai semuanya.

POST /webhooks/bird
signed
{
  "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 percobaan ulang: 5d, 5m, 30m, 2j, 5j, lalu 10j dua kali. Setelah percobaan terakhir, pengiriman dinyatakan gagal permanen, dan replay memulihkannya 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.rejectedDitolak sebelum serah terima ke operator: tujuan tidak valid, supresi, atau perlindungan kebijakan konten.
  • sms.undeliveredOperator melaporkan kegagalan pengiriman non-permanen.
  • sms.failedKegagalan terminal: pesan tidak akan terkirim.

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.

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

WhatsApp

Verb yang sama. Payload berbeda: berbasis template, sudah opt-in, di channel yang dibuka dua miliar orang setiap hari.

otp.ts
await bird.whatsapp.send({
  to: "+15005550006",
  template: {
    slug: "bird_otp",
    language: "en",
    components: [
      { type: "body", parameters: [{ type: "text", text: code }] },
    ],
  },
});

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.

Dipercaya setiap hari oleh tim yang membangun perangkat lunak berkelas dunia

Mulai dengan satu channel.
Tambahkan yang lain saat Anda siap.

API key uji coba langsung tersedia untuk Anda. Akses produksi terbuka setelah Anda menambahkan metode pembayaran dan memverifikasi pengirim.

Menggunakan Claude Code, Cursor, atau Codex? Salin prompt pengaturan dan agen Anda akan menginstal Bird CLI dan skill untuk Anda. Pilih milik Anda:

Cursor