x-api-key, या अगर कोई API कुंजी नहीं भेजी गई हो तो आपका क्लाइंट IP। हर स्कोप का अपना स्वतंत्र काउंटर होता है और उसकी विंडो 60 सेकंड की स्लाइडिंग विंडो होती है।
पहचानकर्ता और छूट
मिडलवेयर रेट-लिमिट पहचानकर्ता इस क्रम में चुनता है:x-api-keyहेडर → कुंजी-स्कोप्ड काउंटर।X-Forwarded-Forका पहला हॉप → IP-स्कोप्ड काउंटर।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 निर्णय पाथ पर लागू होती है।429 रिस्पॉन्स का स्वरूप
जब आप किसी भी स्कोप की सीमा पार करते हैं, तो आपको इस बॉडी और हेडर्स के साथ HTTP429 मिलता है:
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 पर ईमेल करें। ओवरराइड हर एप्लिकेशन के लिए अलग से कॉन्फ़िगर किए जाते हैं।