Bird Verify

Dalam preview

API verifikasi tanpa perlu menyimpan apa pun.

Siap digunakan dalam:
Cursor

Kirim kode sekali pakai melalui email, SMS, atau WhatsApp, lalu periksa berdasarkan penerima, tanpa verification id yang perlu disimpan di antara dua panggilan. Urutan channel, pengirim, dan aturan kode adalah konfigurasi per negara, bukan rebuild. Auth dan idempotency yang sama seperti setiap channel Bird lainnya, karena tim yang sama membangun semuanya. Voice akan segera diluncurkan.

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

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

// Send the code, then check it by recipient.
await bird.verify.verifications.create({
  to: { phone_number: "+15551234567" },
}).safe();

const { data } = await bird.verify.verifications.check({
  to:   { phone_number: "+15551234567" },
  code: userInput,
}).safe();

Dua panggilan dari instalasi hingga pengguna terverifikasi

Kirim kode, lalu periksa, dalam bahasa yang sudah Anda gunakan.

Create-or-retry mengirim kode; check mengonfirmasi berdasarkan penerima. Dua panggilan, dan tidak ada verification id yang perlu dihubungkan di antaranya.

1
2
3
4
5
6
7
8
9
10
11
12
import { BirdClient } from "@messagebird/sdk";

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

await bird.verify.verifications.create({
  to: { phone_number: "+15551234567" },
}).safe();

const { data } = await bird.verify.verifications.check({
  to:   { phone_number: "+15551234567" },
  code: "482917",
}).safe();

Sepuluh hal yang tidak perlu Anda bangun ketika verifikasi adalah API-nya.

Primitif konkret, bernama dan dapat dikonfigurasi. Tanpa basa-basi.

  1. 01

    Create atau retry dalam satu panggilan.

    Kirim ulang penerima yang sama dan kami melanjutkan sesi aktif serta mengirim ulang setelah cooldown berlalu. Tidak ada endpoint resend terpisah, tidak ada verifikasi duplikat.

  2. 02

    Periksa berdasarkan target. Tidak perlu menyimpan apa pun.

    Kirim penerima dan kode; kami menyelesaikan sesi dari pasangan konfigurasi-dan-penerima. Tidak ada verification id yang perlu disimpan antara pengiriman dan pemeriksaan.

  3. 03

    Email, SMS, dan WhatsApp saat peluncuran.

    Penerima yang Anda kirimkan menentukan channel: alamat email diverifikasi melalui email, nomor telepon melalui SMS atau WhatsApp. Beralih channel cukup mengubah satu field, bukan integrasi baru. Voice akan segera hadir, dan fallback otomatis antar-channel sedang dalam pengembangan.

  4. 04

    Urutan channel per negara, sebagai konfigurasi.

    Atur urutan channel, pengirim, dan channel mana yang aktif, per negara, sebagai sumber daya konfigurasi kelas satu, bukan tiket dukungan.

  5. 05

    Kode yang tidak pernah Anda lihat.

    Dihasilkan dengan sumber acak kriptografis, disimpan hanya sebagai HMAC, dibandingkan dalam waktu konstan. Kode plaintext tidak pernah menyentuh stack Anda maupun log kami.

  6. 06

    Kode, TTL, dan percobaan yang dapat dikonfigurasi.

    Default enam digit, dapat dikonfigurasi 4–10; jendela waktu 10 menit; 5 percobaan; cooldown pengiriman ulang 60 detik, diatur per konfigurasi. Panjang kode juga dapat di-override per permintaan.

  7. 07

    Setiap kode tetap valid hingga sesi berakhir.

    Pesan yang tertunda dan kode yang baru dikirim ulang keduanya dapat diverifikasi, karena kami tidak membatalkan kode sebelumnya saat kode baru dikirim.

  8. 08

    Kode yang salah menghasilkan 200, bukan exception.

    Periksa jawaban dengan hasil boolean — apakah kode ini terverifikasi, ya atau tidak — dan alasan yang menjelaskan ketika gagal: tidak valid, kedaluwarsa, sudah diverifikasi, atau percobaan habis. Anda melakukan branching berdasarkan field, bukan berdasarkan error yang dilempar.

  9. 09

    Rate limit dan kuota sudah built-in.

    Batas pengiriman per penerima, batas tebakan per verifikasi, dan kuota harian per workspace, masing-masing menghasilkan 429 dengan Retry-After, sehingga brute force kehabisan kesempatan sebelum Anda.

  10. 10

    Kontrak yang sama dengan Bird lainnya.

    Bearer auth, idempotency key, ID bertipe vrf_, satu error envelope. Handler yang Anda tulis untuk email sudah cocok untuk verifikasi.

Tidak menyimpan apa pun antara kirim dan periksa.

Sebagian besar API verifikasi memberikan Anda sebuah id untuk disimpan, dicari, dan digunakan untuk mencocokkan kode. Bird menyelesaikan sesi dari penerima, sehingga tidak ada state per verifikasi di sisi Anda.

Sebagian besar API verifikasi

Create mengembalikan id yang Anda simpan, lalu Anda mencari verifikasi tersebut untuk mencocokkan kode.

id-keyed.ts
const { id } = await api.verifications.create({
  to: "+15551234567",
});
// persist id somewhere, then later…
await api.verifications.check({ id, code });

Bird Verify

Periksa berdasarkan penerima. Tidak ada yang perlu dihubungkan antara dua panggilan tersebut.

by-target.ts
await bird.verify.verifications.create({
  to: { phone_number: "+15551234567" },
}).safe();
// no id to store; check by the same recipient
await bird.verify.verifications.check({
  to: { phone_number: "+15551234567" }, code,
}).safe();

Routing per negara adalah konfigurasi.

Atur urutan channel, pengirim, dan channel mana yang aktif per negara — WhatsApp-first di satu pasar, SMS-only di pasar lain. Ini adalah resource konfigurasi kelas satu, yang diterapkan ke dalam rencana setiap verifikasi. Lihat orkestrasi channel.

per-country.ts
200
await bird.verify.verifications.configurations.countries.upsert(
  "vfc_login",
  "BR",
  { channels: [
    { channel: "whatsapp", state: "enabled" },
    { channel: "sms", state: "enabled" },
  ] },
).safe();

Verifikasi juga merupakan keputusan produk: API yang sama mendukung autentikasi dua faktor dan login tanpa kata sandi. Ingin memvalidasi nomor terlebih dahulu? Pasangkan dengan Lookup. Autentikasi jaringan senyap dan aplikasi autentikator TOTP ada di roadmap.

Mengapa kami membangun Verify

Karena kode yang mengizinkan pengguna masuk seharusnya tidak memerlukan tabel database sendiri.

OTP adalah channel di mana kode yang tidak terkirim berarti pendaftaran yang tidak terjadi. Bird sudah menjalankan email dan SMS dalam skala besar, jadi Verify adalah pengiriman tersebut ditambah pembuatan kode, sesi, rencana channel per negara, dan rate limit, di balik dua endpoint yang tidak menyimpan apa pun di sisi Anda dan merespons dengan bentuk yang sama seperti setiap channel Bird lainnya.

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

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

// Send the code, then check it by recipient.
await bird.verify.verifications.create({
  to: { phone_number: "+15551234567" },
}).safe();

const { data } = await bird.verify.verifications.check({
  to:   { phone_number: "+15551234567" },
  code: userInput,
}).safe();

Jika Anda sudah mengintegrasikan SMS, Anda sudah mengintegrasikan Verify.

Model auth yang sama, kontrak idempotency yang sama, error envelope yang sama. Perbedaannya adalah Verify yang menghasilkan kode, memilih channel, dan menjalankan rate limit — sehingga Anda tidak perlu.

Verify

Satu panggilan mengirim kode; satu panggilan memverifikasinya berdasarkan penerima. Kami yang mengelola kode, sesi, dan batasannya.

verify.ts
await bird.verify.verifications.create({
  to: { phone_number: "+15551234567" },
});

SMS

Pengiriman mentah, untuk saat Anda ingin mengelola sendiri pembuatan kode dan kebijakan percobaan ulang.

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

FAQ Verify API

Bagaimana cara menambahkan verifikasi ke aplikasi saya?+
Dua panggilan: buat verifikasi untuk penerima, lalu periksa kode yang mereka masukkan. Pemeriksaan berdasarkan penerima, jadi tidak ada verification id yang perlu disimpan di antara keduanya — configuration id (sebuah konstanta) dan alamat adalah semua yang Anda butuhkan.
Channel apa saja yang bisa saya gunakan untuk verifikasi?+
Email, SMS, dan WhatsApp tersedia saat ini. Voice sedang diluncurkan sebagai channel tambahan, dan urutan channel, pengirim, serta channel mana yang aktif dapat dikonfigurasi per negara — tanpa perubahan kode.
Apakah saya harus menyimpan verification id?+
Tidak. Pengiriman ulang adalah panggilan create yang sama (create-or-retry), dan pemeriksaan berdasarkan alamat penerima, sehingga verifikasi tidak memerlukan state per-request di sisi Anda. Sebuah id dikembalikan jika Anda ingin membaca status nanti, tetapi itu opsional.
Apa yang terjadi ketika seseorang memasukkan kode yang salah?+
Pemeriksaan mengembalikan 200 dengan hasil — invalid selama percobaan masih tersisa, lalu failed setelah habis, atau expired setelah jendela waktu berlalu. Kode yang salah adalah hasil normal yang Anda tangani dengan percabangan, bukan HTTP error.
Bagaimana kode dibuat dan disimpan?+
Kode dibuat dengan sumber acak kriptografis dan disimpan hanya sebagai hash HMAC-SHA256, dibandingkan dalam waktu konstan. Kode plaintext tidak pernah dikembalikan dan tidak pernah ditulis ke stack Anda atau log kami. Panjang (4–10 digit), TTL, dan batas percobaan dapat dikonfigurasi.
Berapa biayanya?+
Verify sedang dalam preview dan belum ada di daftar harga publik. Hubungi kami dan kami akan memandu Anda mengenai harga untuk channel dan volume Anda.
Dari siapa pengguna saya melihat kode tersebut?+
Authifly, brand verifikasi Bird. Ini adalah identitas pada setiap kode yang diterima pengguna Anda: email dikirim dari otp@verify.authifly.com atau domain terverifikasi Anda sendiri, dan SMS serta WhatsApp menggunakan brand Authifly. authifly.com adalah halaman publik yang meyakinkan penerima bahwa Authifly mengirim kode sekali pakai yang sah atas nama bisnis. Bird adalah platform tempat Anda membangun; Authifly adalah yang dilihat penerima.

Pengirim yang dilihat pengguna Anda: Authifly

Pengguna akhir Anda menerima kode mereka dari Authifly, merek verifikasi Bird. Pada pengirim bersama, email OTP dikirim dari otp@verify.authifly.com dan SMS mencantumkan nama Authifly dalam pesan, sehingga kode tiba dengan satu identitas konsisten yang tidak perlu Anda kelola. Jika penerima mendapat kode yang tidak diharapkan, authifly.com meyakinkan mereka bahwa Authifly mengirim kode sekali pakai yang sah atas nama suatu bisnis. Authifly dioperasikan oleh Bird B.V.

Kunjungi authifly.com

Verifikasi di platform yang sama dengan seluruh pengiriman pesan Anda.

Verify sedang dalam tahap pratinjau. Mulai membangun hari ini, atau hubungi kami tentang kanal, volume, dan harga yang Anda butuhkan.

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