SMS sedang ditingkatkan

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-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.`,
  category: "authentication",
}).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 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.

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({
  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.

  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

    Every state transition fires a signed event — sms.accepted through sms.delivered or 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-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.`,
  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.

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 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.

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

WhatsApp

Verb yang sama. Payload berbeda — templated, opted-in, di kanal yang dibuka dua miliar orang setiap hari.

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

FAQ SMS API

Seberapa cepat saya bisa mengirim SMS pertama?+
Pasang SDK dan kirim ke penerima uji resmi +15005550006 dalam waktu sekitar lima menit — Anda bisa merilis cek CI sebelum memprovisikan nomor.
Apa saja yang termasuk dalam SMS API Bird?+
Satu endpoint pengiriman, inbound dua arah, provisi nomor (long codes, short codes, toll-free, dan alphanumeric sender ID), kepatuhan A2P 10DLC dan opt-out, routing langsung ke operator, serta analitik pengiriman — semuanya dalam satu API.
Ke negara mana saja saya bisa mengirim?+
Bird menjangkau 150+ negara melalui 240 koneksi langsung ke operator, dengan pemilihan ulang rute berkelas operator saat sebuah jalur operator menurun.
Apakah Anda menangani keyword STOP dan HELP?+
Ya, otomatis per penerima. STOP membuat penerima keluar dan menambahkannya ke daftar penekanan yang bisa dikueri, HELP mengirim balasan bantuan otomatis, dan START membuatnya berlangganan kembali.
Apakah saya perlu mendaftar A2P 10DLC?+
Untuk mengirim trafik application-to-person ke nomor AS, ya. Registrasi brand dan campaign ditangani di dashboard, dan statusnya dapat dikueri dari API.

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