इंटीग्रेशन को Node.js सर्वर पर रखें
यह गाइड Bearer हेडर में API कुंजी के साथ GenderAPI.io V2 एंडपॉइंट https://api.genderapi.io/api/v2/gender को कॉल करती है। Node.js 22 या उससे नया संस्करण इस्तेमाल करें और genderapi-v2.mjs अपने प्रोजेक्ट में डाउनलोड करें। यह ES मॉड्यूल नेटिव fetch और AbortSignal.timeout इस्तेमाल करता है; किसी npm पैकेज की ज़रूरत नहीं है। .mjs एक्सटेंशन की वजह से आप package.json बदले बिना इसे दूसरे ES मॉड्यूल से इंपोर्ट कर सकते हैं।
सर्वर के एनवायरनमेंट में GENDERAPI_API_KEY सेट करें। कुंजी को React, Vue या ब्राउज़र में चलने वाले किसी दूसरे JavaScript कोड में न रखें। अपने सर्वर से ऐप्लिकेशन के उपयोगकर्ताओं का प्रमाणीकरण कराएँ और GenderAPI.io को कॉल भी सर्वर से ही करें। नीचे के उदाहरणों में YOUR_API_KEY कोई मान्य कुंजी नहीं है; मॉड्यूल इंपोर्ट करने या साफ़ तौर पर दिए गए चलाने के विकल्पों के बिना उसे चलाने पर कोई अनुरोध नहीं भेजा जाता।
node --version
export GENDERAPI_API_KEY="YOUR_API_KEY"JSON और साफ़ तौर पर तय AI नीति के साथ POST अनुरोध भेजें
कोड को डाउनलोड किए गए मॉड्यूल के पास single.mjs के रूप में सेव करें और node single.mjs चलाएँ। यह अनुरोध V2 के type और value फ़ील्ड और options.ai_mode: off भेजता है। अनुमान response.data में होता है और अनुरोध और बिलिंग की जानकारी response.meta में।
पूरी हुई खोज पर 1 क्रेडिट लगता है, भले ही gender null हो; उदाहरण वाला नाम किसी खास परिणाम की गारंटी नहीं देता।
हेल्पर मॉड्यूल साफ़ तौर पर तय AI मोड और 24 अक्षरों वाली हेक्साडेसिमल कुंजी माँगता है और फिर जाँचता है कि meta.access.mode का मान api_key है। IP ट्रायल का सफल रिस्पॉन्स चुपचाप आगे बढ़ने के बजाय अनपेक्षित एक्सेस मोड की त्रुटि देता है। मॉड्यूल को यह अंतर पता चलने से पहले सर्वर एक IP ट्रायल क्रेडिट इस्तेमाल कर चुका हो सकता है।
import { predict, GenderAPIError } from "./genderapi-v2.mjs";
try {
const response = await predict({
type: "name", value: "Alice", options: { ai_mode: "off" },
});
const result = response.data;
console.log(result.result_status, result.gender);
console.log(result.confidence, result.confidence_kind);
console.log(response.meta.usage);
} catch (error) {
if (!(error instanceof GenderAPIError)) throw error;
// Do not log error.body: it can include the submitted value.
console.error("Request failed:", error.code, error.requestId);
process.exitCode = 1;
}परिणाम और उसके साक्ष्य को साथ रखें
अनुमानित संबंध किसी व्यक्ति का खुद बताया गया लिंग नहीं है। मूल इनपुट, लौटाए गए साक्ष्य और व्यक्ति की दी हुई जानकारी को अलग-अलग रखें। अज्ञात परिणाम एक मान्य परिणाम है; इसे आपके ऐप्लिकेशन में अंदाज़े से चुनी गई श्रेणी नहीं बनना चाहिए।
| फ़ील्ड | इसे कैसे इस्तेमाल करें |
|---|---|
data.gender / data.result_status | male या female सिर्फ़ identified होने पर इस्तेमाल करें। परिणाम अज्ञात हो, तो JSON का असली null मान वैसे ही रखें। |
data.name / data.match | लौटाया गया नाम और चुना गया कैंडिडेट जाँचें। सबस्ट्रिंग मिलान से यह साबित नहीं होता कि इनपुट उसी पहले नाम वाले व्यक्ति का है। |
data.confidence / data.confidence_kind | कॉन्फिडेंस स्कोर 0–1 के पैमाने पर या null होता है। observed_frequency संग्रहीत गिनतियों से आता है; model_reported AI का स्कोर है। हर प्रकार के लिए सीमा का अलग आकलन करें। |
data.source / data.sample_count | dataset, ai और none में अंतर करें। AI परिणामों में संग्रहीत सैंपल गिनती नहीं होती। सैंपल गिनती मापी गई सटीकता नहीं है। |
meta.access.mode | अकाउंट वाले इंटीग्रेशन में पक्का करें कि मान api_key है। कुंजी न होने या पहचानी न जाने पर साझा IP ट्रायल इस्तेमाल हो सकता है। |
meta.usage | charged_credits और billing_status पढ़ें। सफल अज्ञात परिणाम पर शुल्क लगता है। रिस्पॉन्स खो जाने से यह साबित नहीं होता कि अनुरोध मुफ़्त था। |
मिले-जुले बैच प्रोसेस करें और हर पंक्ति की id सुरक्षित रखें
GenderAPI.io V2 मिले-जुले बैच POST https://api.genderapi.io/api/v2/gender/batch से प्रोसेस करता है: अकाउंट की कुंजी के साथ ज़्यादा से ज़्यादा 50 आइटम और IP ट्रायल में ज़्यादा से ज़्यादा 10। इन उदाहरणों के लिए अकाउंट की कुंजी ज़रूरी है। हर आइटम को एक स्थिर और यूनिक id और साफ़ तौर पर तय AI मोड दें। एक बैच में नाम, ईमेल पते और यूज़रनेम मिलाए जा सकते हैं और हर आइटम में वैकल्पिक country संदर्भ हो सकता है।
data में आइटम एक-एक करके पढ़ें और meta.summary में कुल योग देखें। HTTP 200 रिस्पॉन्स में किसी एक आइटम की त्रुटियाँ हो सकती हैं; जिस बैच के सभी आइटम विफल हों, वह परिणामों के साथ शीर्ष-स्तर का Problem रिस्पॉन्स लौटा सकता है। सफल अज्ञात परिणाम succeeded में गिने जाते हैं। index और id की मदद से हर परिणाम को सही मूल पंक्ति से जोड़ा जा सकता है।
बड़े काम को ज़्यादा से ज़्यादा 50 आइटम वाले समूहों में बाँटें और शुरुआत में एक बार में एक ही समूह भेजें। अगला समूह प्रोसेस करने से पहले हर रिस्पॉन्स और उससे जुड़ा उपयोग सेव करें। ट्रांसपोर्ट की त्रुटि, अकाउंट एक्सेस की त्रुटि या बिलिंग की पुष्टि न होने पर रुकें और पहले मौजूदा समूह की स्थिति समझें। अकाउंट की सीमाएँ जाँचने के बाद ही समूह एक साथ भेजें। बैच में आइटम की अधिकतम संख्या किसी खास प्रोसेसिंग क्षमता की गारंटी नहीं है।
import { predictBatch, GenderAPIError } from "./genderapi-v2.mjs";
const items = [
{ id: "row-1", type: "name", value: "Alice", options: { ai_mode: "off" } },
{ id: "row-2", type: "email", value: "alex@example.com", options: { ai_mode: "off" } },
{ id: "row-3", type: "username", value: "sample_handle", options: { ai_mode: "off" } },
];
try {
const response = await predictBatch(items);
for (const item of response.data) {
if (item.error) {
console.log(item.id, "failed", item.error.code);
} else {
console.log(item.id, item.data.result_status, item.data.gender);
}
}
console.log(response.meta.summary, response.meta.usage);
if (response.meta.summary.failed > 0) process.exitCode = 2;
} catch (error) {
if (!(error instanceof GenderAPIError)) throw error;
// error.body can retain an all-failed batch and billing details.
console.error("Batch needs review:", error.code, error.requestId);
process.exitCode = 1;
}तय करें कि AI कब इस्तेमाल करना है
नामों, ईमेल पतों और यूज़रनेम के लिए forceToGenderize वैकल्पिक है। इसे चालू करने पर ai_mode छोड़ दें या fallback इस्तेमाल करें; off और always का इससे टकराव होता है और 422 लौटता है। अनुरोध शुरू करने के लिए पॉज़िटिव शुरुआती बैलेंस काफ़ी है, भले ही अंतिम शुल्क के बाद बैलेंस शून्य से नीचे चला जाए।
निकनेम मोड name: null के साथ लिंग लौटा सकता है। यह अज्ञात परिणाम भी लौटा सकता है। न सामान्य AI फ़ॉलबैक और न ही निकनेम का अनुमान सही या non-null जवाब की गारंटी देता है।
JavaScript हेल्पर मॉड्यूल में options.ai_mode देना हमेशा ज़रूरी है। निकनेम के अनुमान के लिए forceToGenderize: true और options: { ai_mode: 'fallback' } दोनों भेजें।
| अनुरोध का विकल्प | व्यवहार | हर सफल अनुरोध पर क्रेडिट |
|---|---|---|
| options.ai_mode: off | सिर्फ़ डेटासेट इस्तेमाल करें। | 1, अज्ञात परिणाम पर भी |
| options.ai_mode: fallback | पहले डेटासेट, फिर लिंग न मिलने पर सामान्य AI। एकल अनुरोध का डिफ़ॉल्ट यही है। | कुल 1, AI फ़ॉलबैक सहित |
| options.ai_mode: always | सीधे AI से पूछें। | 2 |
| forceToGenderize: true | पहले डेटासेट, फिर AI को निजी निकनेम या छद्मनाम समझने की अनुमति, असली पहले नाम के बिना भी। | डेटासेट से परिणाम मिलने पर 1; AI इस्तेमाल होने पर कुल 2 |
तय करें कि त्रुटि के बाद क्या करना है
उदाहरणों में हर ऑपरेशन सिर्फ़ एक बार भेजा जाता है। वे कभी अपने-आप दोबारा प्रयास नहीं करते: दोबारा भेजना एक नया ऑपरेशन है और उस पर शुल्क लग सकता है। टाइमआउट या कनेक्शन की त्रुटि का मतलब है कि क्लाइंट को पूरा रिस्पॉन्स नहीं मिला। इससे यह साबित नहीं होता कि सर्वर ने प्रोसेसिंग रोक दी या क्रेडिट नहीं कटे।
लौटाया गया request_id और बिलिंग की स्थिति अपने काम के रिकॉर्ड के साथ सेव करें। त्रुटि ऑब्जेक्ट नियंत्रित विश्लेषण के लिए रिस्पॉन्स सुरक्षित रखता है, लेकिन उसमें मूल इनपुट हो सकता है: पूरे ऑब्जेक्ट, रिस्पॉन्स और API कुंजी को सामान्य लॉग फ़ाइलों में न लिखें।
| स्थिति | ऐप्लिकेशन में फ़ैसला |
|---|---|
| सफल अज्ञात परिणाम | null, reason और usage सुरक्षित रखें। यह पूरा हुआ और शुल्क वाला परिणाम है, अपने-आप दोबारा प्रयास करने लायक विफल पंक्ति नहीं। |
| 422 सत्यापन त्रुटि | Problem Details फ़ील्ड में बताई गई समस्या के अनुसार पहले इनपुट ठीक करें, फिर नया अनुरोध भेजें। |
| 401 / 403 | अकाउंट का एक्सेस या उपलब्ध बैलेंस जाँचें। वही अनुरोध दोबारा भेजने से समस्या हल नहीं होगी। |
| 429 | Retry-After हेडर हो, तो उसका पालन करें। त्रुटि और बिलिंग की स्थिति जाँचें, फिर अगले प्रयास की योजना सोच-समझकर बनाएँ। |
| नेटवर्क त्रुटि, टाइमआउट या न पढ़ा जा सकने वाला रिस्पॉन्स | दर्ज करें कि परिणाम और बिलिंग दोनों की पुष्टि नहीं हुई है। दोबारा भेजने से पहले स्थिति की जाँच करें। सर्वर जो प्रोसेसिंग पूरी कर चुका है, उसे क्लाइंट वापस नहीं ले सकता। |
| billing_status: unconfirmed | charged_credits और remaining_credits null हो सकते हैं। दोबारा प्रयास से पहले request_id के साथ सपोर्ट टीम से संपर्क करें। null को शून्य क्रेडिट से न बदलें। |
| बैच के कुछ आइटम में त्रुटि | पहले पूरे हुए आइटम सेव करें। विफल आइटम और उनकी बिलिंग जाँचें और पूरे बैच के बजाय सिर्फ़ दोबारा प्रयास के लायक त्रुटि वाले आइटम दोबारा भेजें। |
fetch का टाइमआउट और रिस्पॉन्स की जाँच समझें
डिफ़ॉल्ट टाइमआउट 10,000 मिलीसेकंड है, जो AbortSignal.timeout से लागू होता है और इसमें रिस्पॉन्स बॉडी पढ़ने का समय भी शामिल है। क्लाइंट का अनुरोध रद्द करना यह साबित नहीं करता कि सर्वर पर प्रोसेसिंग या बिलिंग रुक गई। मॉड्यूल रीडायरेक्ट बंद करता है, HTTP त्रुटियों और न पढ़े जा सकने वाले रिस्पॉन्स में अंतर करता है और कभी अपने-आप दोबारा प्रयास नहीं करता।
नकली ट्रांसपोर्ट वाले टेस्ट सफल रिस्पॉन्स, अज्ञात परिणाम, आंशिक रूप से सफल बैच, क्रेडेंशियल फ़ॉलबैक और त्रुटियाँ कवर करते हैं। वे असली अनुमान नहीं लेते, क्रेडिट खर्च करने वाले ऑपरेशन नहीं चलाते और प्रोडक्शन में उपलब्धता या सटीकता नहीं मापते। नीचे दिया गया हर साफ़ तौर पर चलाया गया डेमो कमांड अपना अनुरोध भेजता है और उस पर शुल्क लगता है।
node genderapi-v2.mjs --run-single
# Run separately to submit another billable sample batch:
node genderapi-v2.mjs --run-batchअक्सर पूछे जाने वाले सवाल
क्या यह कोड ब्राउज़र में चलने वाले JavaScript में इस्तेमाल किया जा सकता है?
कोड अपने सर्वर पर ही रखें। ब्राउज़र में चलने वाला ऐप्लिकेशन कोड उपयोगकर्ताओं को API कुंजी दिखा देता है। ब्राउज़र से अपने प्रमाणीकरण वाले बैकएंड को कॉल करें और बैकएंड से GenderAPI.io को अनुरोध भेजें।
क्या अज्ञात परिणाम पर क्रेडिट लगता है?
हाँ। सफल सामान्य खोज पर 1 क्रेडिट लगता है, भले ही gender null हो। सामान्य स्वचालित AI फ़ॉलबैक इसी क्रेडिट में शामिल है। always मोड में 2 क्रेडिट लगते हैं; forceToGenderize के साथ डेटासेट से परिणाम मिलने पर 1 क्रेडिट और AI इस्तेमाल होने पर 2 क्रेडिट लगते हैं।
क्या उदाहरण विफल अनुरोधों का दोबारा प्रयास करते हैं?
नहीं। हर नया अनुरोध एक अलग ऑपरेशन है। दोबारा भेजने का फ़ैसला करने से पहले त्रुटि, हर आइटम का परिणाम और बिलिंग की स्थिति जाँचें। रिस्पॉन्स न मिलने से यह साबित नहीं होता कि पिछला प्रयास मुफ़्त था।
क्या कोई पैकेज इंस्टॉल करना होगा?
नहीं। उदाहरण सीधे इसी GenderAPI.io गाइड से डाउनलोड करें। चलते समय यह किसी बाहरी पैकेज पर निर्भर नहीं है और अलग से प्रकाशित SDK नहीं है। अगर आप मेंटेन किया जाने वाला पैकेज पसंद करते हैं, तो GenderAPI.io के आधिकारिक SDK उसी V2 API को कॉल करते हैं: Python के लिए pip install genderapi या JavaScript के लिए npm install genderapi। उदाहरण के कोड की समीक्षा करें और उसे अपने ऐप्लिकेशन के अनुसार बदलें। API के नियम GenderAPI.io V2 दस्तावेज़ीकरण में तय होते हैं।
स्रोत
API दस्तावेज़ीकरण अनुरोध और रिस्पॉन्स तय करता है। रनटाइम दस्तावेज़ीकरण इस्तेमाल किए गए HTTP टूल के बारे में बताता है।