Python SDK
messagebird-sdk (import name bird) Bird API के लिए आधिकारिक Python SDK है। इस पेज में इंस्टॉलेशन, कॉन्फ़िगरेशन, एरर, रीट्राई, पेजिनेशन, और वेबहुक शामिल हैं। SDK से ईमेल भेजने के लिए Python ईमेल क्विकस्टार्ट से शुरू करें।
इंस्टॉल करें
कोड उदाहरण
pip install messagebird-sdkकोड उदाहरण
# or
uv add messagebird-sdk
poetry add messagebird-sdkयह पैकेज messagebird/bird-sdk-python से PyPI पर messagebird-sdk के रूप में प्रकाशित है।
Python 3.10+ आवश्यक है। SDK पूरी तरह टाइप्ड है (py.typed), Pydantic v2 रिस्पॉन्स मॉडल के साथ।
क्लाइंट बनाएँ
दो क्लाइंट में से चुनें: Bird (sync) और AsyncBird (async)। दोनों एक ही मेथड देते हैं। AsyncBird के साथ, हर कॉल के लिए await और लिस्ट पर async for का उपयोग करें। कॉन्फ़िगरेशन keyword arguments से किया जाता है:
कोड उदाहरण
msg = client.email.send(
from_={"email": "onboarding@messagebird.dev", "name": "Bird"},
to=["delivered@messagebird.dev"],
subject="Hello from Bird",
html="<p>My first Bird email.</p>",
)
print(msg.id, msg.status)from_ वायर फ़ील्ड from की Python स्पेलिंग है (from एक reserved word है); एलियस अपने-आप हैंडल हो जाता है। रिस्पॉन्स Pydantic v2 मॉडल हैं जो अज्ञात फ़ील्ड सहन करते हैं, इसलिए कोई नया सर्वर फ़ील्ड मौजूदा क्लाइंट को नहीं तोड़ता।
api_key और base_url BIRD_API_KEY और BIRD_BASE_URL एनवायरनमेंट वेरिएबल पर फ़ॉलबैक करते हैं, इसलिए जब ये सेट हों तो बिना आर्ग्युमेंट के Bird() काम करता है। अंतर्निहित कनेक्शन पूल बंद करने के लिए क्लाइंट को कॉन्टेक्स्ट मैनेजर (with Bird() as client: / async with AsyncBird() as client:) के रूप में उपयोग करें। एक क्लाइंट बनाएँ और उसे दोबारा उपयोग करें; दोनों क्लाइंट थ्रेड या टास्क में साझा करने के लिए सुरक्षित हैं।
कॉन्फ़िगरेशन
| विकल्प | विवरण |
|---|---|
| api_key | API कुंजी; BIRD_API_KEY पर फ़ॉलबैक करती है। |
| region / base_url | रीजन (या स्पष्ट base URL); कुंजी प्रीफ़िक्स / BIRD_BASE_URL पर फ़ॉलबैक करता है। |
| timeout, max_retries | रिक्वेस्ट टाइमआउट और रीट्राई बजट; प्रति कॉल ओवरराइड किया जा सकता है। |
| webhook_secret | client.webhooks.unwrap के लिए साइनिंग सीक्रेट। |
| email_defaults | क्लाइंट-वाइड send डिफ़ॉल्ट; प्रति-सेंड मान हमेशा प्राथमिक रहता है। |
| http_client | अपना खुद का httpx.Client / httpx.AsyncClient इंजेक्ट करें। |
हर मेथड प्रति-कॉल timeout / max_retries / idempotency_key / extra_headers के लिए एक ट्रेलिंग options भी लेता है, और client.with_options(...) एक नया क्लाइंट बनाता है जो पैरेंट के कनेक्शन पूल का पुन: उपयोग करता है:
कोड उदाहरण
client.email.send(
from_={"email": "onboarding@messagebird.dev", "name": "Bird"},
to=["delivered@messagebird.dev"],
subject="Hello from Bird",
text="My first Bird email.",
options={"timeout": 10, "max_retries": 0},
)यह कैसे बना है
वायर मॉडल Bird की OpenAPI स्पेसिफ़िकेशन से जेनरेट किए गए हैं। एक हाथ से लिखी गई परत क्यूरेटेड रिसोर्स सरफ़ेस (client.email, client.webhooks), स्पष्ट keyword arguments, और हर मेथड द्वारा साझा रिक्वेस्ट लाइफ़साइकल प्रदान करती है। क्रॉस-SDK मॉडल के लिए SDK concepts देखें।
एरर
विफलताएँ BirdError पर आधारित टाइप्ड एक्सेप्शन रेज़ करती हैं। APIError रिक्वेस्ट विफलताओं को कवर करता है, जिसमें टाइमआउट जैसी ट्रांसपोर्ट विफलताएँ भी शामिल हैं, इसलिए एक अकेला except APIError किसी भी विफल कॉल को हैंडल करता है। APIStatusError सर्वर-रिटर्न्ड सबसेट है, जिसमें status_code, request_id, code (स्थिर E##### कोड), और type (मोटी एरर कैटेगरी) होती है। इसके सबक्लास में RateLimitError (429, सेकंड में retry_after के साथ) और ValidationError (422, प्रति-फ़ील्ड details के साथ) शामिल हैं:
कोड उदाहरण
from bird import APIStatusError, RateLimitError, ValidationError
try:
client.email.send(
from_={"email": "onboarding@messagebird.dev", "name": "Bird"},
to=["delivered@messagebird.dev"],
subject="Hello from Bird",
text="My first Bird email.",
)
except RateLimitError as err:
print("rate limited; retry after", err.retry_after)
except ValidationError as err:
print(err.status_code, err.details)
except APIStatusError as err:
print(err.status_code, err.code, err.request_id)केवल-ट्रांसपोर्ट विफलताएँ APIConnectionError और APITimeoutError हैं। दोनों APIError के सबक्लास हैं, इसलिए एक व्यापक except APIError उन्हें पकड़ लेता है। गलत वेबहुक सिग्नेचर WebhookVerificationError रेज़ करता है।
सुरक्षित रीट्राई
क्षणिक विफलताएँ, जिनमें टाइमआउट, 429 रिस्पॉन्स, और 5xx रिस्पॉन्स शामिल हैं, Retry-After का सम्मान करते हुए जिटर्ड बैकऑफ़ के साथ स्वचालित रूप से फिर से प्रयास करती हैं। बजट को max_retries से ट्यून करें, या रीट्राई अक्षम करने के लिए शून्य दें। एक म्यूटेशन प्रति लॉजिकल कॉल एक आइडेम्पोटेंसी कुंजी जेनरेट करता है और हर प्रयास में उसे दोबारा उपयोग करता है। अपनी खुद की कुंजी सेट करने के लिए प्रति-कॉल options में idempotency_key पास करें।
पेजिनेशन
लिस्ट मेथड एक lazy पेज (SyncPage / AsyncPage) लौटाते हैं; इसे इटरेट करने पर कर्सर के ज़रिए ऑटो-पेजिनेशन होता है और पेज माँग पर फ़ेच होते हैं:
कोड उदाहरण
for message in client.email.list(status="delivered"):
print(message.id)कोड उदाहरण
from bird import AsyncBird
async with AsyncBird() as client:
async for message in client.email.list(status="delivered"):
print(message.id)इटरेशन रोकें और आगे के पेज फ़ेच नहीं होंगे।
वेबहुक
client.webhooks.unwrap रॉ रिक्वेस्ट बॉडी पर Standard Webhooks सिग्नेचर सत्यापित करता है और एक टाइप्ड, डिस्क्रिमिनेटेड इवेंट लौटाता है। साइनिंग सीक्रेट क्लाइंट पर कॉन्फ़िगर करें (webhook_secret=), और आपको प्राप्त हुए बाइट्स ठीक वैसे ही पास करें। उन्हें पार्स करके दोबारा सीरियलाइज़ करने से सिग्नेचर टूट जाता है:
कोड उदाहरण
# Pass the RAW request body (bytes) and the request headers.
event = client.webhooks.unwrap(request.body, request.headers)
if event.root.type == "email.delivered":
print(event.root.data.email_id)सत्यापन कोई नेटवर्क कॉल नहीं करता, इसलिए यह किसी भी वेब फ़्रेमवर्क में समान रूप से काम करता है।
एस्केप हैच
टाइप्ड सरफ़ेस पर अभी उपलब्ध न होने वाले एंडपॉइंट client.get / post / put / patch / delete के ज़रिए उपलब्ध हैं, उसी auth, रीट्राई, और आइडेम्पोटेंसी हैंडलिंग के साथ:
कोड उदाहरण
from bird import EmailMessage
message = client.get("/v1/email/messages/em_01krd...", cast_to=EmailMessage)
client.post("/v1/some/new/endpoint", body={"key": "value"})पाथ API रेफ़रेंस में देखें।
अगले कदम
- Python ईमेल क्विकस्टार्ट: अपना पहला मैसेज भेजें और send, get, और list का उपयोग करें।
- SDK concepts: एरर, आइडेम्पोटेंसी, पेजिनेशन, और वेबहुक के लिए क्रॉस-SDK मॉडल सीखें।
- API रेफ़रेंस: अंतर्निहित HTTP कॉन्ट्रैक्ट की समीक्षा करें।
संबंधित संसाधन
इस विषय के लिए डॉक्यूमेंटेशन, गाइड और उदाहरणों के साथ आगे बढ़ें। संसाधन अंग्रेज़ी में हैं।
कॉन्सेप्ट समझेंShould I use a Bird SDK or call the API directly?लर्निंग पाथ फ़ॉलो करेंBuild your first integrationइम्प्लीमेंटेशन गाइडSend your first email
इम्प्लीमेंटेशन ब्रीफ़ पाएँ