Bird Verify

API verifikasi tanpa perlu menyimpan apa pun.

Kirim kode sekali pakai melalui email, SMS, atau WhatsApp, lalu verifikasi berdasarkan penerima, tanpa perlu menyimpan verification id di antara kedua panggilan. Urutan channel, pengirim, dan aturan kode sudah diselesaikan per negara secara otomatis. Autentikasi dan idempotensi yang sama seperti setiap channel Bird lainnya, karena tim yang sama membangun semuanya. Voice akan segera hadir.

Cursor
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, error } = await bird.verify.verifications.check({
  to:   { phone_number: "+15551234567" },
  code: userInput,
}).safe();
if (error) throw error;
Verification flow

Your account

Confirm it’s you.

Enter the code sent to

+1 ••• ••• 4567

Example verification code

482691
Code verified
Send a code. Confirm the recipient.

Dipercaya setiap hari oleh tim yang membangun perangkat lunak kelas dunia

Baca lebih banyak kisah pelanggan

Dua panggilan dari npm install ke 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
const verification = await bird.verify.verifications.create({
  to: { phone_number: "+15551234567" },
});
console.log(verification.id, verification.status);

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.

    The recipient you pass picks the channel: an email address verifies by email, a phone number by SMS or WhatsApp. Switching channels is a one-field change, not a new integration. Delivery failure can advance the verification to the next available channel. Voice is rolling out next.

  4. 04

    Urutan channel per negara, sudah diselesaikan.

    Urutan channel, pengirim, dan channel mana yang aktif berbeda di setiap negara. Basis per negara Bird yang menentukan ini, sehingga panggilan create sudah mengarah ke rencana yang tepat di mana saja.

  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.

    Six-digit default, 4–8 configurable per request; a 10-minute window; 5 attempts; a 60-second resend cooldown.

  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 sudah built-in.

    Batas pengiriman per penerima dan batas tebakan per verifikasi, 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 sudah mengetahui negaranya.

Urutan channel, pengirim, dan channel mana yang aktif berbeda di setiap negara: WhatsApp-first di satu pasar, hanya SMS di pasar lain. Basis per negara Bird yang menentukan ini, sehingga panggilan create sudah mengarah ke rencana yang tepat. Lihat orkestrasi channel.

per-country.ts
200
// Brazil already resolves WhatsApp, then SMS.
const { data, error } = await bird.verify.verifications.create({
  to: { phone_number: "+5511998765432" },
}).safe();
if (error) throw error;

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, error } = await bird.verify.verifications.check({
  to:   { phone_number: "+15551234567" },
  code: userInput,
}).safe();
if (error) throw error;

Jika Anda sudah mengintegrasikan SMS, Anda sudah mengintegrasikan Verify.

Model auth yang sama, kontrak idempotency yang sama, envelope error yang sama. Bedanya, Verify yang menghasilkan kode, memilih kanal, dan menjalankan rate limit, jadi Anda tidak perlu melakukannya.

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

Pilih pengirim yang dilihat pengguna Anda

Kode dikirim atas nama Bird Verify secara default, dan tidak ada pendaftaran atau pengaturan template yang menghalangi. Alihkan saluran ke Authifly dan pengguna Anda akan melihat identitas verifikasi netral alih-alih vendor platform: email OTP dikirim dari otp@verify.authifly.com, dan SMS menampilkan pengirim Authifly di mana pun negara tujuan mengizinkan pengirim bermerek. Bird mengoperasikan kedua identitas tersebut, jadi pilihan ini tidak menambah biaya operasional, dan Anda dapat mengaturnya per saluran dan per negara. Pada email, Anda bisa melangkah lebih jauh dengan mengirim dari domain yang telah Anda verifikasi sendiri. Jika penerima mendapat kode yang tidak terduga, authifly.com meyakinkan mereka bahwa Authifly mengirimkan kode sekali pakai yang sah atas nama sebuah bisnis. Authifly dioperasikan oleh Bird B.V.

Kunjungi authifly.com

Kirim permintaan pertama Anda sebelum menulis kode apa pun.

Seluruh API publik tersedia sebagai koleksi Postman, dikonversi dari spesifikasi OpenAPI yang sama dengan yang digunakan untuk menghasilkan SDK, lengkap dengan contoh permintaan dan respons di setiap endpoint. Fork ke workspace Anda sendiri, atur kunci API, dan kirim permintaan langsung.

Verifikasi di platform yang sama dengan seluruh pengiriman pesan Anda.

Mulai membangun hari ini, atau hubungi kami tentang saluran, volume, dan harga yang Anda butuhkan.

Data Anda

Semua kolom kontak wajib diisi.

Agar tim kami dapat menghubungi Anda terkait demo.

Produk yang diminati

Opsional

Kami akan menghubungi Anda untuk menjadwalkan demo.
Kebijakan privasi

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