अपने पहले ग्राहक को सत्यापित करें
Bird Verify पुष्टि करता है कि कोई व्यक्ति किसी ईमेल पते या फ़ोन नंबर को नियंत्रित करता है। आप Bird से एक बार का सत्यापन कोड भेजने के लिए कहते हैं। व्यक्ति उसे आपके ऐप में दर्ज करता है, और आप Bird से पूछते हैं कि वह मेल खाया या नहीं। Bird कोड जनरेट और डिलीवर करता है, और समाप्ति एवं प्रयास सीमाएँ लागू करता है। आपका ऐप जनरेट किए गए कोड को कभी प्राप्त या स्टोर नहीं करता।
यह quickstart आपके अपने ईमेल पते को सत्यापित करता है, जिसके लिए कोई सेटअप ज़रूरी नहीं। Bird अपने साझा Bird Verify sender के ज़रिए ईमेल कोड भेजता है, इसलिए आपको किसी डोमेन या बैलेंस की ज़रूरत नहीं। SMS में फ़ंड जोड़ने के बाद, फ़ोन नंबर सत्यापित करना भी उन्हीं दो कॉल का उपयोग करता है।
1. एक API key बनाएँ
डैशबोर्ड में, Developers > API keys पर जाएँ और एक key बनाएँ। Keys एक region के दायरे में होती हैं और bk_us1_... या bk_eu1_... जैसी दिखती हैं; prefix में region बताता है कि कौन-सा API host कॉल करना है: https://us1.platform.bird.com या https://eu1.platform.bird.com।

पूरी key केवल एक बार, बनाते समय दिखाई जाती है। इसे किसी सुरक्षित जगह कॉपी करें, फिर इसे भेजने के उदाहरणों के लिए export करें:
कोड उदाहरण
export BIRD_API_KEY="bk_us1_..."2. एक कोड भेजें
जिस पते की पुष्टि करनी है उसके लिए एक verification बनाएँ। एकमात्र आवश्यक फ़ील्ड to है। अपना खुद का ईमेल पता इस्तेमाल करें ताकि आप कोड पढ़ सकें। अपनी भाषा के लिए Bird SDK इसके SDK quickstart का अनुसरण करके इंस्टॉल करें।
SDK tabs में, कोड चलाने से पहले उदाहरण API key और user@example.com बदलें। CLI आपके लॉगिन का उपयोग करता है, और cURL tab 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" }
}'अगर आपकी key bk_eu1_ से शुरू होती है, तो इसके बजाय https://eu1.platform.bird.com कॉल करें।
Bird अनुरोध स्वीकार करता है और कोड भेजना शुरू करता है:
कोड उदाहरण
{
"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"
}कोई verification ID स्टोर करने की ज़रूरत नहीं: step 3 में जाँच उसी recipient पर आधारित है। ईमेल Bird Verify <otp@verify.bird.com> से आता है, जिसका विषय "Your verification code" होता है और उसमें छह अंकों का कोड होता है; संदेश में लिखा होता है कि यह कब समाप्त होगा। कोड की लंबाई, जीवनकाल, प्रयास सीमा, और दोबारा भेजने का कूलडाउन वर्कस्पेस सेटिंग्स हैं, और सत्यापन सेटिंग्स डिफ़ॉल्ट और रेंज सूचीबद्ध करती हैं।
3. कोड जाँचें
अपने इनबॉक्स से कोड लें और उसी recipient के आधार पर सबमिट करें:
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"
}'सही कोड success: true के साथ वापस आता है, और एम्बेडेड verification 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"
}
}इस फ़्लो को साइनअप में जोड़ने से पहले, इन परिणामों को ध्यान में रखें:
- असफल जाँच HTTP 200 लौटाती है। प्रतिक्रिया में success: false, एक reason (incorrect_code, expired, या attempts_exhausted), और शेष प्रयास होने तक एक attempts_remaining काउंटर होता है। अपने ऐप्लिकेशन में इस परिणाम पर ब्रांच करें। verification अपने सभी जाँच प्रयास समाप्त होने पर स्थायी रूप से विफल हो जाता है।
- एक verification केवल एक बार हल होता है। verified पर पहुँचने (या विफल या समाप्त होने) के बाद, इसे दोबारा जाँचने पर 404 मिलता है। पहले निर्णायक उत्तर को अंतिम उत्तर मानें। अगर उपयोगकर्ता को नया कोड चाहिए, तो उसी recipient के साथ create endpoint फिर से कॉल करें: चल रहा verification पुन: उपयोग किया जाता है, और दोबारा भेजने का कूलडाउन बीतने पर एक नया कोड भेजा जाता है।
आपके द्वारा बनाया गया हर verification Verifications पेज पर उसकी स्थिति, recipient, चैनल और समय के साथ दिखाई देता है। जनरेट किया गया कोड नहीं दिखता।

इसके बजाय फ़ोन नंबर सत्यापित करें
SMS पर सत्यापित करने के लिए, ईमेल पते के बजाय to में E.164 फ़ॉर्मेट में एक फ़ोन नंबर डालें:
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"
}
}'जाँच समान है: email को उसी phone_number से बदलें। फ़ोन डिलीवरी आपके वर्कस्पेस के SMS बैलेंस से होती है, और गंतव्य देश रूट निर्धारित करता है। Bird अधिकांश देशों में पहले WhatsApp और कुछ में पहले SMS आज़माता है। देश कॉन्फ़िगरेशन प्रत्येक गंतव्य के लिए उपलब्ध चैनल और उनका क्रम दिखाता और कॉन्फ़िगर करता है। Senders और ब्रांडिंग दिखाता है कि प्रत्येक चैनल पर क्या पहुँचता है।
दोनों चैनलों पर उपयोगकर्ता तक पहुँचें
आपको एक ही चैनल चुनने की ज़रूरत नहीं। to में email और phone_number दोनों शामिल करें, और Bird आपके देश कॉन्फ़िगरेशन से एक डिलीवरी योजना तैयार करता है, जो प्रत्येक गंतव्य के लिए उपलब्ध चैनल और उनका क्रम दिखाता है। Bird उस योजना का पालन करता है जब तक कोई भेजना स्वीकार नहीं हो जाता। अगर डिलीवरी बाद में पूरी तरह विफल होती है, तो Bird अगले चैनल के ज़रिए एक नया कोड भेजता है। verification बनाने में उपयोग किए गए उसी to ऑब्जेक्ट से कोड जाँचें। उपयोगकर्ता जो भी कोड उन तक पहुँचा, वह दर्ज करता है।
अगले कदम
- सत्यापन भेजना: विकल्प, स्थितियाँ, दोबारा भेजना, सेटिंग्स और सीमाएँ विस्तार से।
- देश कॉन्फ़िगरेशन: देश सक्षम करें और प्रति-देश चैनल क्रम सेट करें।
- Senders और ब्रांडिंग: कोड संदेश कैसे दिखते हैं और अपने डोमेन से ईमेल कैसे भेजें।
- Verify API संदर्भ: पूर्ण request और response स्कीमा।
- साइनअप पर फ़ोन नंबर वेरिफ़ाई करें: एक वीडियो जो इसी फ़्लो को एक वेब शॉप में इंटीग्रेट करता है
संबंधित संसाधन
इस विषय के लिए डॉक्यूमेंटेशन, गाइड और उदाहरणों के साथ आगे बढ़ें। संसाधन अंग्रेज़ी में हैं।
कॉन्सेप्ट समझेंWhat does OTP mean? One-time passwords explainedक्षमता जानेंCustomer verificationलर्निंग पाथ फ़ॉलो करेंBuild your first integration
अभ्यास करें और इम्प्लीमेंटेशन ब्रीफ़ पाएँ