Sign inGet Started

Autentikasi & kunci API

Setiap permintaan terprogram ke Bird API melakukan autentikasi dengan kunci API yang dikirim sebagai bearer token. Kunci terikat pada workspace, membawa izin yang dapat Anda ubah, dan ditampilkan secara lengkap hanya sekali.
Untuk perbedaan antara kredensial layanan dan akses terdelegasi, lihat Kunci API dan token OAuth.

Cara permintaan melakukan autentikasi

Kirim kunci Anda di header Authorization pada setiap permintaan. SDK dan CLI menerima kunci sekali lalu mengatur header untuk Anda:
import { BirdClient } from "@messagebird/sdk";

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

await bird.email.send({
  from: "hello@yourdomain.com",
  to: ["delivered@messagebird.dev"],
  subject: "Hi",
  text: "Hello.",
});
Region pada prefix kunci menunjukkan host mana yang harus dipanggil: kunci bk_us1_... menuju ke https://us1.platform.bird.com, kunci bk_eu1_... ke https://eu1.platform.bird.com. SDK resmi Bird dan CLI membaca region dari kunci dan memilih host untuk Anda. Kunci yang dikirim ke host regional yang salah mengembalikan 421 (tipe misdirected_error); lihat Region.
Kunci yang tidak ada atau tidak valid mengembalikan 401. Kunci valid yang tidak memiliki izin yang dibutuhkan endpoint mengembalikan 403. Semantik header dan respons kesalahan ada di referensi autentikasi.

Anatomi kunci

Contoh kode
bk_us1_Ab3xKq9mP2wR5tY8uI1oL4n3A3aww
└┬┘└┬┘ └──────────┬──────────┘└─┬──┘
 │  │          payload      checksum
 │  └ region (routes the request)
 └ Bird key prefix
  • Prefix: bk_{region}_ menamai tipe kredensial dan regionnya. Prefix tetap yang khas inilah yang memungkinkan pemindai rahasia mengenali kunci Bird dalam kode, dan segmen region mengarahkan permintaan Anda ke host yang tepat.
  • Payload: 23 karakter acak yang membawa 136 bit entropi.
  • Checksum: 6 karakter terakhir adalah checksum dari sisa kunci, sehingga SDK atau API dapat langsung menolak kunci yang salah ketik atau terpotong, sebelum kunci tersebut pernah dicari.
Kunci lengkap dikembalikan sekali, dalam respons yang membuatnya. Anda tidak dapat mengambil teks aslinya nanti. Respons berikutnya menyertakan 15 karakter pertama sebagai key_prefix, misalnya bk_us1_Ab3xKq9m. Respons juga menyertakan fingerprint stabil 12 karakter untuk mencocokkan kunci di log dan percakapan dukungan tanpa mengekspos nilainya.
Jika Anda kehilangan kunci, rotasi kunci tersebut untuk mendapatkan rahasia baru, atau cabut kunci tersebut dan buat yang baru.

Membuat kunci

Buat kunci di dashboard di bawah Platform tools > Kunci API. Kunci dibuat dengan nama, satu atau lebih scope, dan kedaluwarsa opsional. Respons yang membuatnya adalah satu-satunya yang membawa field token (kunci lengkap): simpan di secret manager Anda segera.
Anda juga dapat membuat kunci tanpa browser, dengan bird api-keys create. Penerbitan kunci memerlukan scope api_keys:write, yang tidak termasuk dalam baseline login read-only, jadi minta scope tersebut saat Anda masuk:
Contoh kode
bird auth login --scope api_keys:write
bird api-keys create --body-file - <<'JSON'
{
  "name": "Email operations production key",
  "scopes": [{ "scope": "emails", "level": "write" }]
}
JSON
Jalankan bird api-keys create --example untuk mencetak body lengkap yang bisa diedit.
Scope adalah satu hal yang tidak dapat diberikan kunci kepada dirinya sendiri: api_keys:write tidak tersedia untuk kunci API, sehingga kunci tidak pernah bisa menerbitkan kunci lain. Penerbitan berjalan sebagai Anda, pada sesi dashboard atau grant CLI atau MCP.
Halaman Kunci API di dashboard Bird, menampilkan daftar kunci dengan prefix tersamar, scope, dan waktu terakhir digunakan
Anda dapat mengelola kunci setelah membuatnya:
  • Scope dapat diedit. Pengeditan mengganti set izin dan mempertahankan rahasia yang sama. Anda dapat memberikan scope yang dimiliki akun Anda sendiri. Jika kunci dibuat sebelum bisa mendukung izin seperti voice, rotasi kunci tersebut untuk menambahkan izin itu. Kunci yang dicabut dan kunci yang sudah digantikan oleh rotasi tidak dapat diedit.
  • Kedaluwarsa bersifat tetap. Atur expires_at ketika kunci harus berhenti bekerja pada waktu tertentu (keterlibatan kontraktor, jendela migrasi). Setelah momen tersebut, kunci mengembalikan 401; kunci tanpa kedaluwarsa berlaku sampai dicabut.
  • Pengelolaan kunci tetap pada orang. Membuat, mengedit, dan mencabut kunci memerlukan izin api_keys:write, yang dimiliki oleh peran workspace admin dan developer (lihat Users, teams & roles) dan tidak pernah dapat diberikan ke kunci API itu sendiri. Kunci yang bocor tidak dapat membuat lebih banyak kunci.
Halaman kunci API menampilkan setiap kunci dengan key_prefix, scope, dan tanggal last_used_on (presisi hari), sehingga Anda dapat melihat kunci usang secara sekilas. Kunci yang dicabut tidak muncul di daftar kecuali Anda memilih untuk menampilkannya.

Scope & level

Setiap scope pada kunci adalah pasangan {scope, level}, di mana level adalah read atau write (write mencakup read). Kunci API memiliki scope berikut:
Scopereadwrite
emailsMembaca pesan terkirim dan status pengirimanMengirim email
email_managementMembaca supresi, konfigurasi email, dan templateMengelola supresi, konfigurasi email, dan template
email_marketingMembaca kontak, audiens, dan broadcastMengelola kontak, audiens, dan broadcast
domainsMembaca domain pengiriman dan catatan DNS-nyaMenambahkan, memverifikasi, dan mengelola domain pengiriman
smsMembaca SMS terkirim dan status pengirimanMengirim SMS
sms_managementMembaca pengirim, registrasi, supresi, balasan kata kunci, tujuan, dan templateMengelola pengirim, registrasi, supresi, balasan kata kunci, tujuan, dan template
whatsappMembaca pesan WhatsApp terkirim dan statusnyaMengirim pesan WhatsApp
whatsapp_managementMembaca template dan pengaturan WhatsAppMengelola template dan pengaturan WhatsApp
verifyMembaca status verifikasiMengirim dan memeriksa kode verifikasi
realtimeMembaca aplikasi Realtime, channel, dan anggota channelMembuat aplikasi dan mempublikasikan event
voiceMembaca log leg dan statistik panggilanMengautentikasi panggilan SIP dan membuat kredensial sesi
voice_managementMembaca trunk, gateway, nomor, caller ID, dan tujuanMengelola trunk, gateway, nomor, caller ID, dan tujuan
mailboxMembaca mailbox, thread, dan pesanMengirim dan membalas pesan mailbox
mailbox_managementMembaca aturan penerimaan dan konfigurasi mailboxMembuat, memperbarui, dan menghapus mailbox dan aturan penerimaan
assetsMembaca aset dan folderMengunggah, memperbarui, dan menghapus aset dan folder
workspaceMembaca nama workspace, ID organisasi, dan pengaturanTidak tersedia
webhooksMembaca langganan webhook dan percobaan pengirimannyaMembuat, memperbarui, menghapus, menguji, memutar ulang, dan merotasi rahasia webhook
lookupTidak tersediaMencari nomor telepon, alamat email, dan kecocokan identitas
Mengubah pengaturan workspace, mengelola anggota, menerbitkan kunci, dan mengelola IP pool sengaja tidak dapat diberikan ke kunci API, sehingga operasi tersebut berjalan sebagai orang, bukan sebagai kunci: melalui dashboard, atau melalui CLI atau server MCP pada grant yang memiliki scope tersebut. Berikan set paling sempit yang memadai: kunci yang hanya mengirim email sebaiknya hanya memiliki emails:write dan tidak ada yang lain.
lookup tidak memiliki operasi level read: setiap endpoint pencarian, termasuk mengambil hasil yang sudah ada, memerlukan write.

Mencabut kunci

Cabut kunci dari barisnya di bawah Platform tools > Kunci API. Pencabutan bersifat permanen: kunci yang dicabut tidak dapat diaktifkan kembali, dan catatannya disimpan untuk audit dengan revoked_at diatur.
Pencabutan menyebar cepat tetapi tidak instan. Validasi kunci berjalan melalui cache berumur pendek, sehingga kunci yang baru dicabut dapat tetap bekerja selama beberapa detik (paling lama lima) sebelum setiap permintaan dengannya mengembalikan 401.

Merotasi kunci

Rotasi menerbitkan pengganti untuk kunci yang sudah Anda miliki dan mengembalikan token-nya sekali, dalam respons tersebut. Pengganti membawa nama, scope, dan pembatasan IP sumber dari kunci asal. Pengganti dimulai tanpa kedaluwarsa. Rotasi kunci dari barisnya di bawah Platform tools > Kunci API, atau tanpa browser dengan bird api-keys rotate dan tool api_keys_rotate MCP:
Contoh kode
bird auth login --scope api_keys:write
bird api-keys rotate key_01hqz8kp3v9x2m --yes
Kunci sebelumnya tetap bekerja selama masa tenggang, 24 jam secara default, sehingga Anda dapat men-deploy token baru sebelum yang lama berhenti. Kirim grace_period: 0 (--grace-period 0 di CLI) untuk langsung mencabut kunci sebelumnya, yang diperlukan untuk kunci yang bocor: tidak ada overlap, dan setiap permintaan yang masih membawanya mulai gagal. Kunci yang sudah diatur kedaluwarsa lebih awal dari masa tenggang tetap mempertahankan kedaluwarsanya sendiri, karena rotasi tidak pernah memperpanjang umur kunci.
Sebelum mengotomatiskan rotasi kunci, perhatikan dua batasan. Rotasi tidak pernah membawa kedaluwarsa ke kunci pengganti, jadi pengganti untuk kunci yang kedaluwarsa pada waktu tertentu akan hidup sampai dicabut; terbitkan ulang dengan create jika kedaluwarsa itu penting. Selain itu, satu kunci hanya bisa dirotasi sekali: rotasi kedua pada kunci yang sama mengembalikan 409, jadi kirim Idempotency-Key agar percobaan ulang memutar ulang respons asli. Tanpa itu, rotasi yang balasannya tidak pernah Anda terima telah membuat kunci aktif yang tokennya tidak bisa Anda baca kembali.
Menumpuk dua kunci secara manual tetap merupakan jalur yang lebih aman ketika Anda tidak dapat memprediksi berapa lama peralihan berlangsung, karena masa tenggang ditetapkan saat Anda merotasi dan tidak dapat diperpanjang setelahnya:
  1. Buat kunci baru dengan scope yang sama.
  2. Deploy kunci baru ke layanan Anda.
  3. Pantau last_used_on kunci lama sampai lalu lintas berpindah.
  4. Cabut kunci lama.

Kunci terikat pada workspace

Kunci API terikat pada workspace Anda dan melakukan autentikasi dengan otoritas workspace tersebut. Izin pribadi pembuat tidak memengaruhinya. Hal ini memiliki dua konsekuensi praktis:
  • Kunci tetap bertahan saat seseorang pergi. Ketika seorang karyawan keluar dan akun penggunanya dihapus, kunci yang mereka buat tetap bekerja. Anda tidak pernah mengalami gangguan produksi karena orang yang mengklik "create" meninggalkan perusahaan. (Kepergian mereka tetap merupakan saat yang tepat untuk merotasi kunci yang pernah mereka akses.)
  • Jangkauan kunci berhenti di workspace. Kunci tidak pernah dapat menjalankan operasi level organisasi: penagihan, anggota organisasi, pengaturan organisasi.
Karena kunci terpasang pada workspace, permintaan dengan kunci tidak memerlukan konteks tambahan; lihat Workspace untuk mengetahui bagaimana workspace dan organisasi di atasnya membagi apa yang dapat Anda jangkau.

Jalur terdelegasi: token OAuth untuk CLI dan server MCP

Kunci API ditujukan untuk layanan. Bird CLI dan server Bird MCP menggunakan OAuth saat seseorang masuk. Anda masuk melalui browser, memilih workspace, dan memberikan subset izin Anda. Tool kemudian menerima token pengguna bt_{region}_... berumur pendek.
Setiap token dibatasi pada izin yang Anda miliki. Anda dapat mencabut akses untuk setiap tool di bawah Profile > Connected apps. Tool mengelola token ini untuk Anda, jadi jangan menyalin atau menyimpannya di secret manager. Gunakan kunci API untuk beban kerja server.

Langkah selanjutnya