Bird Verify

API verifikasi tanpa perlu menyimpan apa pun.

Siap digunakan dalam:
Cursor

Send a one-time code over email, SMS, or WhatsApp, then check it by recipient, with no verification id to keep between the two calls. The channel order, sender, and code rules already resolve per country automatically. Same auth and idempotency as every other Bird channel, because the same team built them all. Voice is rolling out next.

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;

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.

    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

    Per-country channel order, already resolved.

    Channel order, sender, and which channels are on differ by country. Bird's per-country base decides this, so a create call already resolves to the right plan everywhere.

  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–10 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 already knows the country.

Channel order, senders, and which channels are on differ by country: WhatsApp-first in one market, SMS-only in another. Bird's per-country base decides this, so a create call already resolves to the right plan. See channel orchestration.

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

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.

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