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

पूरी कुंजी सिर्फ़ एक बार, बनाते समय दिखाई जाती है। इसे किसी सुरक्षित जगह कॉपी करें, फिर भेजने के उदाहरणों के लिए इसे एक्सपोर्ट करें:
export BIRD_API_KEY="bk_us1_..."2. कोड भेजें
जिस पते की पुष्टि करनी है, उसके लिए एक सत्यापन बनाएँ। एकमात्र ज़रूरी फ़ील्ड to है। अपना ईमेल पता इस्तेमाल करें, ताकि आप कोड पढ़ सकें। अपनी भाषा के लिए Bird SDK को उसके SDK क्विकस्टार्ट के अनुसार इंस्टॉल करें।
SDK टैब में कोड चलाने से पहले उदाहरण वाली API कुंजी और user@example.com को बदलें। CLI आपके लॉगिन का इस्तेमाल करता है, और cURL टैब 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" }
}'अगर आपकी कुंजी 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"
}आपको कोई सत्यापन ID सहेजनी नहीं पड़ती, क्योंकि चरण 3 की जाँच उसी प्राप्तकर्ता के आधार पर होती है। ईमेल Bird Verify <otp@verify.bird.com> से "Your verification code" विषय और छह अंकों के कोड के साथ आता है। कोड कब समाप्त होगा, यह संदेश में ही लिखा होता है। कोड की लंबाई, उसकी वैधता अवधि, प्रयासों की सीमा और दोबारा भेजने का प्रतीक्षा समय वर्कस्पेस सेटिंग हैं। इनके डिफ़ॉल्ट मान और सीमाएँ सत्यापन सेटिंग में दी गई हैं।
3. कोड जाँचें
अपने इनबॉक्स से कोड लें और उसे उसी प्राप्तकर्ता के साथ सबमिट करें:
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 आता है, और उसमें शामिल सत्यापन की स्थिति बदलकर 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गिनती भी होती है। अपने ऐप्लिकेशन में इसी परिणाम के आधार पर आगे का रास्ता तय करें। जाँच के सारे प्रयास खत्म होने पर सत्यापन स्थायी रूप से विफल हो जाता है। - हर सत्यापन का नतीजा केवल एक बार तय होता है। जब वह
verifiedतक पहुँच जाता है (या विफल या समाप्त हो जाता है), तो उसे दोबारा जाँचने पर404लौटता है। पहले निश्चित जवाब को ही अंतिम मानें। अगर उपयोगकर्ता को नया कोड चाहिए, तो उसी प्राप्तकर्ता के साथ create एंडपॉइंट को फिर से कॉल करें। चल रहे सत्यापन का ही दोबारा उपयोग होता है, और दोबारा भेजने का प्रतीक्षा समय बीतने के बाद नया कोड भेजा जाता है।
आपका बनाया हर सत्यापन Verifications पेज पर उसकी स्थिति, प्राप्तकर्ता, चैनल और समय के साथ दिखता है। जनरेट किया गया कोड वहाँ नहीं दिखता।

इसके बजाय फ़ोन नंबर सत्यापित करें
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। देश कॉन्फ़िगरेशन में हर गंतव्य के लिए उपलब्ध चैनल और उनका क्रम दिखता है और वहीं इन्हें कॉन्फ़िगर किया जाता है। सेंडर और ब्रांडिंग में दिखता है कि हर चैनल पर क्या पहुँचता है।
दोनों चैनलों पर उपयोगकर्ता तक पहुँचें
आपको एक ही चैनल चुनना ज़रूरी नहीं है। to में email और phone_number दोनों शामिल करें, और Bird आपके देश कॉन्फ़िगरेशन से डिलीवरी योजना तय करता है, जिसमें हर गंतव्य के लिए उपलब्ध चैनल और उनका क्रम दिखता है। Bird इस योजना का पालन तब तक करता है जब तक कोई भेजा गया संदेश स्वीकार न हो जाए। अगर बाद में डिलीवरी पूरी तरह विफल हो जाती है, तो Bird अगले चैनल से नया कोड भेजता है। सत्यापन बनाते समय इस्तेमाल किए गए उसी to ऑब्जेक्ट के साथ कोड जाँचें। उपयोगकर्ता उस कोड को दर्ज करता है जो उस तक पहुँचा हो।
अगले कदम
- सत्यापन भेजना: विकल्प, स्टेटस, दोबारा भेजना, सेटिंग्स और सीमाएँ विस्तार से।
- देश कॉन्फ़िगरेशन: देशों को सक्षम करें और हर देश के लिए चैनल का क्रम तय करें।
- सेंडर और ब्रांडिंग: कोड वाले संदेश कैसे दिखते हैं और अपने डोमेन से ईमेल कैसे भेजें।
- Verify API संदर्भ: पूरा अनुरोध और प्रतिक्रिया स्कीमा।
- साइनअप पर फ़ोन नंबर वेरिफ़ाई करें: एक वीडियो, जिसमें यही फ़्लो एक वेब शॉप में जोड़ा गया है
संबंधित संसाधन
इस विषय के लिए दस्तावेज़, गाइड और उदाहरणों के साथ आगे बढ़ें।