Verifikasi pelanggan pertama Anda
Bird Verify mengonfirmasi bahwa seseorang menguasai alamat email atau nomor telepon. Anda meminta Bird mengirim kode verifikasi sekali pakai. Orang tersebut memasukkannya di aplikasi Anda, dan Anda meminta Bird memeriksa apakah kode cocok. Bird membuat dan mengirim kode, serta menerapkan kedaluwarsa dan batas percobaan. Aplikasi Anda tidak pernah menerima atau menyimpan kode yang dibuat.
Quickstart ini memverifikasi alamat email Anda sendiri, tanpa perlu penyiapan apa pun. Bird mengirim kode email melalui pengirim Bird Verify bersama, jadi Anda tidak memerlukan domain atau saldo. Setelah mengisi saldo SMS, memverifikasi nomor telepon menggunakan dua panggilan yang sama.
1. Buat kunci API
Di dashboard, buka Developers > Kunci API dan buat kunci. Kunci dicakupkan ke suatu region dan berbentuk seperti bk_us1_... atau bk_eu1_...; region pada prefiks menunjukkan host API mana yang harus dipanggil: https://us1.platform.bird.com atau https://eu1.platform.bird.com.

Kunci lengkap ditampilkan sekali, saat pembuatan. Salin ke tempat yang aman, lalu ekspor untuk contoh pengiriman:
export BIRD_API_KEY="bk_us1_..."2. Kirim kode
Buat verifikasi untuk alamat yang ingin Anda konfirmasi. Satu-satunya field wajib adalah to. Gunakan alamat email Anda sendiri agar Anda bisa membaca kode. Instal Bird SDK untuk bahasa Anda dengan mengikuti quickstart SDK.
Di tab SDK, ganti kunci API contoh dan user@example.com sebelum menjalankan kode. CLI menggunakan login Anda, dan tab cURL menggunakan BIRD_API_KEY.
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({ apiKey: "bk_XXXXXXXXXXXXXXXXXXXXXXXX" });
const verification = await bird.verify.verifications.create({
to: { email: "user@example.com" },
});
console.log(verification.id, verification.status);from bird import APIError, Bird
with Bird(api_key="bk_XXXXXXXXXXXXXXXXXXXXXXXX") as client:
try:
verification = client.verify.verifications.create(
to={"email": "user@example.com"},
)
print(verification.id, verification.status)
except APIError as err:
print("could not start the verification:", err)package main
import (
"context"
"fmt"
"log"
bird "github.com/messagebird/bird-sdk-go"
"github.com/messagebird/bird-sdk-go/option"
)
func main() {
client, err := bird.NewClient(option.WithAPIKey("bk_XXXXXXXXXXXXXXXXXXXXXXXX"))
if err != nil {
log.Fatal(err)
}
verification, err := client.Verify.Verifications.Create(context.Background(), bird.VerifyVerificationsCreateParams{
To: bird.VerificationTo{Email: bird.Email("user@example.com")},
})
if err != nil {
log.Fatal(err)
}
fmt.Println(verification.Id, *verification.Status)
}<?php
declare(strict_types=1);
require __DIR__ . '/../vendor/autoload.php';
use MessageBird\Bird;
use MessageBird\Wire\Model\VerificationCreateRequest;
use MessageBird\Wire\Model\VerificationTo;
$bird = new Bird('bk_XXXXXXXXXXXXXXXXXXXXXXXX');
$verification = $bird->verify->verifications->create(
(new VerificationCreateRequest())
->setTo((new VerificationTo())->setEmail('user@example.com')),
);
echo $verification->getId(), ' ', $verification->getStatus(), "\n";bird verify verifications create --email user@example.comcurl -X POST https://us1.platform.bird.com/v1/verify/verifications \
-H "Authorization: Bearer $BIRD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"to": { "email": "user@example.com" }
}'Jika kunci Anda diawali dengan bk_eu1_, panggil https://eu1.platform.bird.com sebagai gantinya.
Bird menerima permintaan dan mulai mengirim kode:
{
"id": "vrf_01ky7q1fdze3695yvyz7z9nm3a",
"status": "pending",
"reason": null,
"to": { "email": "user@example.com" },
"channels": [{ "channel": "email" }],
"last_channel": "email",
"expires_at": "2026-07-23T14:55:58Z",
"verified_at": null,
"created_at": "2026-07-23T14:45:58Z",
"updated_at": "2026-07-23T14:45:58Z"
}Tidak perlu menyimpan ID verifikasi: pemeriksaan di langkah 3 menggunakan penerima yang sama sebagai kunci. Email datang dari Bird Verify <otp@verify.bird.com> dengan subjek "Your verification code" dan kode enam digit; pesan itu sendiri menyebutkan kapan kode kedaluwarsa. Panjang kode, masa berlaku, batas percobaan, dan jeda kirim ulang adalah pengaturan workspace, dan pengaturan verifikasi mencantumkan nilai default dan rentangnya.
3. Periksa kode
Ambil kode dari kotak masuk Anda dan kirimkan, menggunakan penerima yang sama sebagai kunci:
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({ apiKey: "bk_XXXXXXXXXXXXXXXXXXXXXXXX" });
const result = await bird.verify.verifications.check({
to: { email: "user@example.com" },
code: "123456",
});
console.log(result.success);from bird import APIError, Bird
with Bird(api_key="bk_XXXXXXXXXXXXXXXXXXXXXXXX") as client:
try:
result = client.verify.verifications.check(
to={"email": "user@example.com"},
code="123456",
)
print(result.success)
except APIError as err:
print("could not check the passcode:", err)package main
import (
"context"
"fmt"
"log"
bird "github.com/messagebird/bird-sdk-go"
"github.com/messagebird/bird-sdk-go/option"
)
func main() {
client, err := bird.NewClient(option.WithAPIKey("bk_XXXXXXXXXXXXXXXXXXXXXXXX"))
if err != nil {
log.Fatal(err)
}
result, err := client.Verify.Verifications.Check(context.Background(), bird.VerifyVerificationsCheckParams{
To: bird.VerificationTo{Email: bird.Email("user@example.com")},
Code: "123456",
})
if err != nil {
log.Fatal(err)
}
fmt.Println(*result.Success)
}<?php
declare(strict_types=1);
require __DIR__ . '/../vendor/autoload.php';
use MessageBird\Bird;
use MessageBird\Wire\Model\VerificationCheckRequest;
use MessageBird\Wire\Model\VerificationTo;
$bird = new Bird('bk_XXXXXXXXXXXXXXXXXXXXXXXX');
$result = $bird->verify->verifications->check(
(new VerificationCheckRequest())
->setTo((new VerificationTo())->setEmail('user@example.com'))
->setCode('123456'),
);
echo $result->getSuccess() ? 'verified' : 'not verified', "\n";bird verify verifications check 123456 --email user@example.comcurl -X POST https://us1.platform.bird.com/v1/verify/verifications/check \
-H "Authorization: Bearer $BIRD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"to": { "email": "user@example.com" },
"code": "123456"
}'Kode yang benar mengembalikan success: true, dan verifikasi yang disematkan berubah menjadi verified:
{
"success": true,
"reason": null,
"attempts_remaining": null,
"verification": {
"id": "vrf_01ky7q1fdze3695yvyz7z9nm3a",
"status": "verified",
"reason": null,
"to": { "email": "user@example.com" },
"channels": [{ "channel": "email" }],
"last_channel": "email",
"expires_at": "2026-07-23T14:55:58Z",
"verified_at": "2026-07-23T14:46:47Z",
"created_at": "2026-07-23T14:45:58Z",
"updated_at": "2026-07-23T14:46:47Z"
}
}Sebelum menambahkan alur ini ke proses pendaftaran, perhitungkan hasil berikut:
- Pemeriksaan yang gagal mengembalikan HTTP
200. Respons berisisuccess: false, sebuahreason(incorrect_code,expired, atauattempts_exhausted), dan jumlahattempts_remainingselama percobaan masih tersisa. Buat percabangan berdasarkan hasil ini di aplikasi Anda. Verifikasi gagal permanen setelah semua percobaan pemeriksaan habis. - Verifikasi diselesaikan sekali. Setelah mencapai
verified(atau gagal atau kedaluwarsa), memeriksanya lagi mengembalikan404. Perlakukan jawaban definitif pertama sebagai jawaban final. Jika pengguna membutuhkan kode baru, panggil endpoint create lagi dengan penerima yang sama: verifikasi yang sedang berjalan digunakan kembali, dan kode baru dikirim setelah jeda kirim ulang berlalu.
Setiap verifikasi yang Anda buat muncul di halaman Verifications beserta status, penerima, channel, dan waktunya. Kode yang dibuat tidak ditampilkan.

Verifikasi nomor telepon sebagai alternatif
Untuk memverifikasi melalui SMS, masukkan nomor telepon di to dalam format E.164 alih-alih alamat email:
const verification = await bird.verify.verifications.create({
to: { phone_number: "+15551234567" },
});
console.log(verification.id, verification.status);verification = client.verify.verifications.create(to={"phone_number": "+15551234567"})
print(verification.id, verification.status)verification, err := client.Verify.Verifications.Create(context.Background(), bird.VerifyVerificationsCreateParams{
To: bird.VerificationTo{PhoneNumber: bird.String("+15551234567")},
})
if err != nil {
log.Fatal(err)
}
fmt.Println(verification.Id, *verification.Status)$verification = $bird->verify->verifications->create(
(new VerificationCreateRequest())->setTo((new VerificationTo())->setPhoneNumber('+15551234567')),
);
echo $verification->getId(), ' ', $verification->getStatus();bird verify verifications create --body-file - <<'JSON'
{
"to": {
"phone_number": "+15551234567"
},
"metadata": {
"correlation_id": "signup-7f3a"
}
}
JSONcurl -X POST "https://{region}.platform.bird.com/v1/verify/verifications" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"to": {
"phone_number": "+15551234567"
},
"metadata": {
"correlation_id": "signup-7f3a"
}
}'Pemeriksaannya identik: ganti email dengan phone_number yang sama. Pengiriman ke telepon menggunakan saldo SMS workspace Anda, dan negara tujuan menentukan rute. Bird mencoba WhatsApp terlebih dahulu di sebagian besar negara dan SMS terlebih dahulu di beberapa negara lainnya. Konfigurasi negara menampilkan dan mengonfigurasi channel yang tersedia serta urutannya untuk setiap tujuan. Pengirim dan branding menampilkan apa yang diterima di setiap channel.
Jangkau pengguna di kedua channel
Anda tidak harus memilih satu channel. Sertakan email dan phone_number di to, dan Bird menentukan rencana pengiriman dari konfigurasi negara Anda, yang menampilkan channel yang tersedia dan urutannya untuk setiap tujuan. Bird mengikuti rencana tersebut hingga pengiriman diterima. Jika pengiriman kemudian gagal total, Bird mengirim kode baru melalui channel berikutnya. Periksa kode dengan objek to yang sama yang digunakan untuk membuat verifikasi. Pengguna memasukkan kode mana pun yang sampai ke mereka.
Langkah selanjutnya
- Mengirim verifikasi: opsi, status, kirim ulang, pengaturan, dan batas secara mendalam.
- Konfigurasi negara: aktifkan negara dan atur urutan channel per negara.
- Pengirim & branding: tampilan pesan kode dan cara mengirim email dari domain Anda sendiri.
- Referensi API Verify: skema request dan response lengkap.
- Verifikasi nomor telepon saat pendaftaran: video yang mengintegrasikan alur yang sama ke toko web
Sumber daya terkait
Lanjutkan dengan dokumentasi, panduan, dan contoh untuk topik ini.