मुख्य सामग्री पर जाएं
Didi­t कई स्तरों पर रेट लिमिटिंग लागू करता है, ताकि API स्थिर रहे और साथ ही ट्रैफ़िक के सामान्य उछाल की अनुमति भी मिले। लिमिट हर पहचानकर्ता के लिए अलग से लागू होती हैं: आपकी x-api-key, या अगर कोई API कुंजी नहीं भेजी गई हो तो आपका क्लाइंट IP। हर स्कोप का अपना स्वतंत्र काउंटर होता है और उसकी विंडो 60 सेकंड की स्लाइडिंग विंडो होती है।

पहचानकर्ता और छूट

मिडलवेयर रेट-लिमिट पहचानकर्ता इस क्रम में चुनता है:
  1. x-api-key हेडर → कुंजी-स्कोप्ड काउंटर।
  2. X-Forwarded-For का पहला हॉप → IP-स्कोप्ड काउंटर।
  3. REMOTE_ADDR → IP-स्कोप्ड काउंटर।
निम्नलिखित कॉल्स पर रेट लिमिटिंग पूरी तरह बायपास होती है:
  • आंतरिक DIDIT_WEBAPP_API_KEY (केवल Didit कंसोल द्वारा उपयोग की जाती है)।
  • IsValidSession अनुमति से सुरक्षित endpoint (एम्बेडेड/SDK सत्र ट्रैफ़िक)।
  • GET /system/healthcheck (यह इस स्टैक से पहले HealthMiddleware द्वारा दिया जाता है)।
  • प्रोवाइडर webhook: Stripe, AML स्क्रीनिंग, चेहरा सत्यापन कॉलबैक, KYC सूची में बदलाव।

वैश्विक लिमिट

हर प्रमाणित अनुरोध HTTP मेथड के आधार पर एक सामान्य स्कोप में भी गिना जाता है, ताकि कोई नया रूट एक उचित डिफ़ॉल्ट पा सके: लेन-देन बनाना और इवेंट इनजेस्शन generic-write के बजाय ingest-write में गिने जाते हैं: उच्च मात्रा वाला इनजेस्शन इंटीग्रेशन हर API कुंजी के लिए प्रति मिनट 600 अनुरोध पाता है, और उसके अन्य राइट अनुरोधों का बजट खर्च नहीं होता। endpoint-विशिष्ट लिमिट (अगला सेक्शन) वैश्विक लिमिट के अतिरिक्त लागू होती हैं। जो स्कोप सबसे पहले अपना काउंटर पार करता है, वही 429 लौटाता है।

endpoint-विशिष्ट लिमिट

मिडलवेयर सबसे अधिक प्रभाव वाले रूट्स के लिए सख़्त स्कोप परिभाषित करता है:
GET /v3/session/<id>/decision/ को SessionV3RetrieveView सर्व करता है और यह session-decision स्कोप में शामिल नहीं है। इस पर केवल generic-get की 600/मिनट की ऊपरी सीमा लागू होती है। 100/मिनट वाली निर्णय थ्रॉटल v1 और v2 निर्णय पाथ पर लागू होती है।
कोडबेस में FREE_SESSION_RATE_LIMIT = 10 और PAID_SESSION_RATE_LIMIT = 600 भी परिभाषित हैं। ये कॉन्स्टेंट्स फ़िलहाल POST /v3/session/ पर लागू नहीं हैं। यह endpoint हर एप्लिकेशन के लिए एकल session-v2-create लिमिट, यानी 600/मिनट, का उपयोग करता है। जब तक प्रति वर्कफ़्लो निःशुल्क स्तर थ्रॉटल को लाइव के रूप में दस्तावेज़ित न किया जाए, उसके आधार पर क्षमता योजना न बनाएँ।

429 रिस्पॉन्स का स्वरूप

जब आप किसी भी स्कोप की सीमा पार करते हैं, तो आपको इस बॉडी और हेडर्स के साथ HTTP 429 मिलता है:
X-RateLimit-* हेडर्स केवल 429 रिस्पॉन्स पर भेजे जाते हैं। वर्तमान में सफल रिस्पॉन्स में ये शामिल नहीं होते। अगले प्रयास से पहले की देरी के रूप में Retry-After का मान (या X-RateLimit-Reset - now) उपयोग करें।

क्लाइंट मार्गदर्शन

  • Retry-After का सम्मान करें और इसे अपने बैकऑफ़ की न्यूनतम सीमा मानें। इसके ऊपर जिटर वाला एक्सपोनेंशियल बैकऑफ़ जोड़ें (5s → 10s → 20s → 40s ± random), ताकि एक ही समय पर 429 पाने वाले दो क्लाइंट एक-दूसरे के साथ सिंक्रोनाइज़ न हों।
  • एक सीमित संख्या के बाद पुनः प्रयास बंद करें (जैसे 5 प्रयास)। त्रुटि को अपने कॉलर तक पहुँचाएँ और अपनी टीम को अलर्ट करें। लगातार 429 आम तौर पर बेकाबू लूप का संकेत होता है, क्षणिक उछाल का नहीं।
  • हर वर्कलोड के लिए एक पहचानकर्ता इस्तेमाल करें। कई बैकएंड के बीच एक x-api-key साझा करने से वे एक ही काउंटर में गिने जाते हैं, जिससे एक भारी उपयोग करने वाला क्लाइंट बाकी सबके हिस्से की क्षमता खा सकता है। हर एनवायरनमेंट, ब्रांड या ग्राहक के लिए अलग एप्लिकेशन (और इसलिए अलग api_key) बनाएँ। देखें प्रोग्रामेटिक पंजीकरण।
  • निर्णय पढ़ने के अनुरोधों को कैश करें। /decision/ endpoint तंग पोलिंग लूप के लिए डिज़ाइन नहीं किए गए हैं। रीयल-टाइम अपडेट चाहिए तो webhook का उपयोग करें, और GET /v3/session/<id>/decision/ को केवल बैकफ़िल या ऑडिट के लिए कॉल करें।
  • PDF ऑफ़लाइन बनाएँ। PDF रेंडरिंग CPU-बाउंड है (50/मिनट की सीमा)। इसे हर पेज व्यू पर नहीं, बल्कि सत्र की अंतिम स्थिति तक पहुँचने के बाद कतार से ट्रिगर करें।

429 के प्रति जागरूक नमूना क्लाइंट

और क्षमता चाहिए?

अगर 600 सत्र प्रति मिनट पर्याप्त नहीं हैं, जैसे किसी मार्केटिंग लॉन्च या बैकफ़िल के लिए, तो अपने application UUID और अपेक्षित लगातार तथा बर्स्ट दरों के साथ support@didit.me पर ईमेल करें। ओवरराइड हर एप्लिकेशन के लिए अलग से कॉन्फ़िगर किए जाते हैं।
अंतिम संशोधन 7 नवंबर 2026