Bird vs Prelude

Bird vs Prelude untuk Verify

Prelude dibangun di sekitar keputusan risiko yang bisa Anda gunakan sebagai percabangan, dan Bird tidak memiliki padanannya. Kedua API cukup mirip sehingga migrasi sebagian besar hanya penggantian nama. Halaman ini membahas mana dari dua fakta tersebut yang lebih penting untuk apa yang sedang Anda bangun.

Keunggulan Prelude.
Perbedaan Bird.

Keunggulan Prelude

Keputusan yang bisa Anda gunakan sebagai percabangan. Panggilan create menerima sinyal IP, perangkat, dan sidik jari lalu menjawab dengan keputusan routing berupa success, retry, challenged, blocked, atau shadow_blocked, disertai alasan saat menolak. Respons create Bird hanya berisi verifikasi itu sendiri: tidak ada keputusan, tidak ada objek sinyal, dan tidak ada shadow block. Proses pendaftaran yang bergantung pada keputusan tersebut harus membuatnya sebelum memanggil Bird.

Channel yang tidak dijangkau Bird. Panggilan suara, RCS, Viber, Zalo, dan autentikasi jaringan senyap, di 230+ negara. Kedua platform mendukung SMS, WhatsApp, dan Telegram, jadi kesenjangannya ada pada lima channel tersebut, bukan keseluruhan: nomor yang dijangkau Prelude melalui Viber atau Zalo akan fallback ke SMS di sini, yang merupakan pertanyaan tingkat pengiriman yang layak diukur dalam uji coba daripada baru ditemukan saat volume penuh.

Pesan dan fallback bisa Anda atur sendiri. Template dengan variabel, locale, sender ID Anda sendiri, dan kode kustom semuanya per-request, serta max_auto_fallbacks dan force_challenge mengatur eskalasi per panggilan. Di Bird, teks kode sandi milik Bird dan fallback mengikuti rencana channel negara; pengirim dikonfigurasi per channel, bukan per request, dan hanya email yang bisa menggunakan alamat Anda sendiri.

Perbedaan Bird

Pemeriksaan gagal menunjukkan jenis kegagalannya. Prelude menggabungkan kode salah dan percobaan habis ke dalam satu status gagal. Bird menjawab dengan alasan berupa incorrect_code, expired, atau attempts_exhausted, dan menyertakan attempts_remaining di sampingnya, sehingga layar bisa memberi tahu pengguna berapa percobaan tersisa tanpa perlu menghitungnya sendiri.

Event pengiriman adalah langganan workspace, bertanda tangan. Prelude mengirim ke callback_url yang Anda atur per verifikasi. Endpoint Bird didaftarkan sekali, masing-masing berlangganan ke tipe event yang diinginkan, dan setiap pengiriman ditandatangani sesuai Standard Webhooks, sehingga URL keluar dari body request dan penerima memiliki sesuatu untuk diverifikasi.

Agen bisa menjalankan alurnya. Server MCP ter-host Bird memberikan agen tiga alat verifikasi terhadap workspace nyata: memulai verifikasi, memeriksa kode, dan melanjutkan ke channel berikutnya. Server ini tidak bisa mengonfigurasi ulang kebijakan di baliknya, yang memang disengaja, bukan kelalaian.

Matriks

Perbandingan per kapabilitas.

Kedua API memiliki bentuk serupa, sehingga sebagian besar baris setara dan perbedaannya tipis. Baca baris safe-retries dibandingkan halaman Twilio Verify: ini keunggulan Bird di keduanya, karena tidak ada create yang mendokumentasikan idempotency key. Lapisan risiko Prelude adalah pengakuan di atas, bukan sebuah baris, karena Bird tidak memiliki apa pun untuk dibandingkan.

CapabilityBirdPreludeWho wins?
Request createJSON ke /v1/verify/verifications dengan bearer key. Penerima adalah to.phone_number atau to.email, dan memanggil create lagi untuk penerima yang aktif akan mengulang, bukan memulai verifikasi baru.JSON ke endpoint verifikasi v2 dengan bearer key. Penerima adalah target.type dan target.value, dan memanggil create lagi untuk penerima yang aktif akan mengulang dengan cara yang sama.
Pengulangan amanHeader Idempotency-Key pada create membuat pengulangan menjadi aman.Referensi create mereka tidak mendokumentasikan idempotency key maupun header khusus, sehingga pengulangan setelah timeout bisa mengeluarkan kode sandi kedua. dispatch_id bukan salah satunya: Prelude mendefinisikannya sebagai identifier dari dispatch yang berasal dari SDK front-end, yang memungkinkan lapisan fraud mereka mencocokkan sinyal yang ditangkap dengan verifikasi ini.
Apa yang ditunjukkan pemeriksaan gagalsuccess bernilai false dengan alasan incorrect_code, expired, atau attempts_exhausted, dan attempts_remaining di sampingnya.Status failure mencakup kode salah dan percobaan habis, dengan expired_or_not_found sebagai nilai terpisah. Kedua jenis kegagalan tidak dibedakan.
Channel tempat kode sandi bisa diterimaEmail, SMS, WhatsApp, dan Telegram. Voice diberi label Sedang diluncurkan, bukan sudah tersedia.Campuran channel yang dipublikasikan meliputi SMS, voice, RCS, WhatsApp, Telegram, Viber, Zalo, dan autentikasi jaringan senyap, di 230+ negara, dengan fallback otomatis di antaranya.
Event pengirimanWebhook workspace yang berlangganan tipe event verify yang Anda tentukan, seperti verify.verification.verified dan verify.attempt.delivered, ditandatangani sesuai Standard Webhooks.callback_url yang diatur per verifikasi pada request create, sehingga tujuan ikut serta di setiap panggilan.
Kontrol fallbackRencana channel negara menentukan urutan dan dijalankan secara otomatis, dengan timer pengiriman per-percobaan yang melanjutkannya saat tidak ada status pengiriman yang masuk. Panggilan next-channel juga bisa memajukan satu verifikasi sesuai permintaan.max_auto_fallbacks dan force_challenge mengatur eskalasi pada request create itu sendiri.
Server MCP ter-hostTiga alat verifikasi di server ter-host di mcp.bird.com: memulai verifikasi, memeriksa kode, dan melanjutkan ke channel berikutnya. Konfigurasi tidak termasuk di dalamnya.Prelude menerbitkan SDK backend untuk Node.js, Python, Go, Kotlin/Java, Ruby, PHP, dan C#, serta SDK frontend untuk Web, Android, iOS, React Native, dan Flutter, sehingga cerita agennya adalah pustaka yang dipanggil oleh runtime Anda sendiri.
Panjang kodeoptions.code_length pada create, atau default workspace.options.code_size pada create.

Verifikasi yang sama

Memulai satu verifikasi.

Strukturnya cukup mirip sehingga ini sebagian besar hanya penggantian nama: target menjadi to dan code_size menjadi code_length. Yang tidak memiliki padanan di Bird adalah objek signals, dispatch_id di antara hal-hal yang mengisinya, dan tidak ada verdict pada respons untuk dijadikan percabangan. Yang hanya ada di sisi Bird adalah header Idempotency-Key.

Prelude

verify.ts
const signupId = crypto.randomUUID();

const response = await fetch("https://api.prelude.dev/v2/verification", {
  method:  "POST",
  headers: {
    Authorization:  `Bearer ${process.env.PRELUDE_API_TOKEN}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    target:      { type: "phone_number", value: "+15551234567" },
    dispatch_id: signupId,
    options:     { code_size: 6 },
  }),
});

const verification = await response.json();
console.log(verification.id, verification.status);

Bird

verify.ts
import { BirdClient } from "@messagebird/sdk";

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

const signupId = crypto.randomUUID();

const { data, error } = await bird.verify.verifications
  .create(
    {
      to:      { phone_number: "+15551234567" },
      options: { code_length: 6 },
    },
    { idempotencyKey: signupId },
  )
  .safe();

if (error) console.error(error.message);
else console.log(data.id, data.status);

Biaya peralihan

Rendah, kecuali Anda menggunakan lapisan risiko.

Kedua API menggunakan penerima sebagai kunci, bukan ID verifikasi, sehingga panggilan dapat dipindahkan hampir apa adanya: target.value menjadi to.phone_number atau to.email, code_size menjadi code_length, dan callback_url per verifikasi menjadi webhook workspace yang berlangganan tipe event verify yang Anda tentukan. dispatch_id tidak memiliki tempat tujuan, karena ia milik lapisan risiko di bawah, bukan mekanika panggilan create, dan create Bird menggunakan header Idempotency-Key yang tidak didokumentasikan oleh Prelude.

Lapisan risiko adalah bagian yang sama sekali bukan sekadar pemindahan. Jika Anda bercabang berdasarkan verdict Prelude, mengirim signals dengan create, atau mengandalkan shadow block, tidak ada sisi Bird yang bisa menampung logika itu dan keputusan harus dibuat sebelum panggilan. Ukur celah itu terlebih dahulu, karena semua hal lain di sini bisa diselesaikan dalam satu sore.

Pertanyaan yang benar-benar ditanyakan orang

Apakah Bird alternatif Prelude yang bagus?
Jika Anda menggunakan Prelude sebagai API verifikasi, ya: panggilannya berstruktur serupa, pemindahannya hampir sekadar penggantian nama, dan Bird memberi tahu Anda lebih banyak tentang pemeriksaan yang gagal dibanding Prelude. Jika Anda menggunakan Prelude sebagai produk anti-penipuan, tidak. Signals, routing verdict, dan shadow block tidak memiliki padanan di Bird, dan itulah pertanyaan yang harus diselesaikan sebelum hal lainnya.
Apa yang terjadi pada signals dan verdict Prelude?
Tidak ada yang terbawa. Create Bird tidak menerima objek signals dan merespons dengan verifikasi, bukan keputusan, jadi integrasi yang menentukan pendaftaran berdasarkan verdict Prelude harus membuat keputusan itu sendiri sebelum memanggil Bird. Yang ditawarkan Bird di area tersebut lebih terbatas dan sebagian besar berupa konfigurasi: pengaktifan per negara agar Anda dapat menonaktifkan tujuan yang tidak pernah Anda layani, serta batas pengiriman dan pemeriksaan platform.
Apakah saya kehilangan percobaan ulang yang aman dengan berpindah?
Anda justru mendapatkannya. Referensi create Prelude tidak mendokumentasikan kunci idempotensi maupun header-nya sendiri, dan dispatch_id bukan itu: ia adalah pengidentifikasi dispatch yang berasal dari SDK front-end mereka, yang digunakan lapisan anti-penipuan mereka untuk mencocokkan sinyal yang ditangkap dengan verifikasi. Create Bird menerima header Idempotency-Key, dan permintaan yang diulang dikembalikan dengan tanda sebagai permintaan ulang, sehingga percobaan ulang setelah timeout mengembalikan verifikasi yang sudah berjalan alih-alih mengirim kode kedua ke perangkat.
Kanal mana yang hilang?
Panggilan suara, RCS, Viber, Zalo, dan autentikasi jaringan diam. SMS, WhatsApp, dan Telegram ada di keduanya, dan Bird menambahkan email, jadi celahnya lebih sempit dari yang disarankan jumlah kanal. Nomor yang dijangkau Prelude melalui Viber atau Zalo akan fallback ke SMS di Bird, jadi ukur tingkat pengiriman untuk pasar tersebut dalam uji coba, bukan langsung pada volume penuh.

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