GenderAPI.io V2 से पहले नाम या पूरे नाम के आधार पर लिंग का अनुमान लगाएँ। सात प्रोग्रामिंग भाषाओं के उदाहरण, JSON रिस्पॉन्स, देश का संदर्भ, AI फ़ॉलबैक और क्रेडिट की लागत देखें।
अनुरोध भेजने से पहले
POST https://api.genderapi.io/api/v2/gender पर JSON भेजें। Authorization: Bearer YOUR_API_KEY में अपनी मौजूदा API कुंजी और Content-Type: application/json इस्तेमाल करें। हर अनुरोध अलग से प्रोसेस होता है।
कोड उदाहरण में अपनी प्रोग्रामिंग भाषा चुनें। चलाने से पहले प्रोसेस एनवायरनमेंट में GENDERAPI_API_KEY सेट करें। कुंजी न होने या पहचानी न जाने पर साझा IP ट्रायल इस्तेमाल हो सकता है, इसलिए अकाउंट इंटीग्रेट करते समय पक्का करें कि meta.access.mode का मान api_key है।
विवरणज़रूरी। 1–254 अक्षर; खाली नहीं और कंट्रोल कैरेक्टर के बिना। ईमेल मान मान्य ईमेल सिंटैक्स में होने चाहिए।
पैरामीटरcountry
प्रकारstring
ज़रूरीनहीं
डिफ़ॉल्ट—
विवरणवैकल्पिक, बड़े अक्षरों में ISO 3166-1 alpha-2 कोड, जैसे TR या US। देश के हिसाब से खोज में वैश्विक डेटासेट का भी इस्तेमाल हो सकता है।
पैरामीटरforceToGenderize
प्रकारboolean
ज़रूरीनहीं
डिफ़ॉल्टfalse
विवरणपहले डेटासेट आज़माएँ, फिर परिणाम न मिलने पर निकनेम समझने वाला AI। name, email और username के लिए समर्थित।
पैरामीटरoptions
प्रकारobject
ज़रूरीनहीं
डिफ़ॉल्ट—
विवरणहर इनपुट के AI विकल्पों का कंटेनर।
पैरामीटरoptions.ai_mode
प्रकारstring
ज़रूरीनहीं
डिफ़ॉल्टfallback
विवरणमान्य मान: off, fallback, always। forceToGenderize: true के साथ यह फ़ील्ड छोड़ दें या fallback इस्तेमाल करें।
पैरामीटरid
प्रकारstring
ज़रूरीनहीं
डिफ़ॉल्ट—
विवरणPOST JSON में वैकल्पिक, 1–64 अक्षरों का पहचानकर्ता। हर बैच परिणाम के साथ लौटाया जाता है; एक बैच में यूनिक होना चाहिए। एकल अनुमान में स्वीकार होता है, लेकिन लौटाया नहीं जाता। GET क्वेरी में समर्थित नहीं।
पहले नाम या पूरे नाम के लिए type: name इस्तेमाल करें। सफल रिस्पॉन्स में भी gender: null हो सकता है। एकल अनुरोध पहले डेटासेट जाँचते हैं और लिंग तय न हो पाने पर डिफ़ॉल्ट रूप से AI से पूछते हैं।
अनुमान का हर अनुरोध, दोबारा प्रयास सहित, शुल्क वाली नई प्रक्रिया है। ये उदाहरण अपने-आप दोबारा प्रयास नहीं करते। दूसरा अनुरोध भेजने से पहले बिलिंग स्टेटस देखें।
चलाने से पहले: एक्सेस और त्रुटियों को संभालना
ये उदाहरण अपने सर्वर पर चलाएँ। प्रोसेस एनवायरनमेंट में GENDERAPI_API_KEY को अपनी मौजूदा API कुंजी पर सेट करें। पक्का करें कि meta.access.mode का मान api_key है: पहचानी न गई कुंजी IP ट्रायल पर जा सकती है।
HTTP 4xx और 5xx वाले JSON रिस्पॉन्स में त्रुटि की बॉडी बनी रहती है और प्रोग्राम शून्य से अलग एग्ज़िट स्टेटस लौटाता है। दोबारा प्रयास से पहले code, action और meta.usage.billing_status देखें।
// Server-side Node.js. Save as example.mjs.const apiKey = process.env.GENDERAPI_API_KEY;if (!apiKey) throw new Error("Set GENDERAPI_API_KEY");const body = { "type": "name", "value": "Rahul", "country": "IN"};const response = await fetch("https://api.genderapi.io/api/v2/gender", { method: "POST", headers: { Authorization: `Bearer ${apiKey}`, "Content-Type": "application/json", }, body: JSON.stringify(body), signal: AbortSignal.timeout(30_000), redirect: "error",});const raw = await response.text();if (!(response.headers.get("content-type") ?? "").includes("json")) { throw new Error(`HTTP ${response.status}: expected JSON; request ID ${response.headers.get("x-request-id")}`);}const result = JSON.parse(raw); // Also accepts application/problem+json.if (!response.ok) { console.error(`HTTP ${response.status}`, result); process.exitCode = 1; // A retry is a new operation; inspect billing first.} else { console.log(JSON.stringify(result, null, 2)); // For batches, inspect every item: HTTP 200 may contain item errors.}
Node.js 22+; बिल्ट-इन fetch। example.mjs के रूप में सेव करें और node example.mjs चलाएँ। रनटाइम दस्तावेज़ीकरण
Python
import jsonimport osimport sysimport urllib.errorimport urllib.requestapi_key = os.environ.get("GENDERAPI_API_KEY")if not api_key: raise RuntimeError("Set GENDERAPI_API_KEY")body = json.loads("{\"type\":\"name\",\"value\":\"Rahul\",\"country\":\"IN\"}")class NoRedirect(urllib.request.HTTPRedirectHandler): def redirect_request(self, req, fp, code, msg, headers, newurl): return Nonerequest = urllib.request.Request( "https://api.genderapi.io/api/v2/gender", method="POST", data=json.dumps(body).encode("utf-8"), headers={ "Authorization": "Bearer " + api_key, "Content-Type": "application/json", },)opener = urllib.request.build_opener(NoRedirect())try: response = opener.open(request, timeout=30)except urllib.error.HTTPError as error: response = error # Keep the Problem Details body on non-2xx responses.with response: status = response.status raw = response.read().decode("utf-8") if "json" not in response.headers.get("Content-Type", ""): raise RuntimeError(f"HTTP {status}: expected a JSON response") result = json.loads(raw)print(json.dumps(result, indent=2), file=sys.stderr if status >= 300 else sys.stdout)if not 200 <= status < 300: sys.exit(1) # Inspect code, action and billing before retrying.# For batches, inspect every item even when HTTP status is 200.
Python 3.10+; स्टैंडर्ड लाइब्रेरी। example.py के रूप में सेव करें और python3 example.py चलाएँ। रनटाइम दस्तावेज़ीकरण
cURL एक्सटेंशन के साथ PHP 8+। example.php के रूप में सेव करें और php example.php चलाएँ। रनटाइम दस्तावेज़ीकरण
Java
import java.net.URI;import java.net.http.HttpClient;import java.net.http.HttpRequest;import java.net.http.HttpResponse;import java.nio.charset.StandardCharsets;import java.time.Duration;public class GenderApiExample { private static String requiredEnv(String name) { String value = System.getenv(name); if (value == null || value.isBlank()) throw new IllegalStateException("Set " + name); return value; } public static void main(String[] args) throws Exception { String apiKey = requiredEnv("GENDERAPI_API_KEY"); String body = "{\"type\":\"name\",\"value\":\"Rahul\",\"country\":\"IN\"}"; HttpClient client = HttpClient.newBuilder() .connectTimeout(Duration.ofSeconds(10)) .followRedirects(HttpClient.Redirect.NEVER) .build(); HttpRequest request = HttpRequest.newBuilder(URI.create("https://api.genderapi.io/api/v2/gender")) .timeout(Duration.ofSeconds(30)) .header("Authorization", "Bearer " + apiKey) .header("Content-Type", "application/json") .POST(HttpRequest.BodyPublishers.ofString(body, StandardCharsets.UTF_8)) .build(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString(StandardCharsets.UTF_8)); if (!response.headers().firstValue("content-type").orElse("").contains("json")) { throw new IllegalStateException("HTTP " + response.statusCode() + ": expected JSON"); } // JSON text; parse with your application's JSON library when integrating. if (response.statusCode() < 200 || response.statusCode() >= 300) { System.err.println(response.body()); // Includes Problem Details. System.exit(1); } System.out.println(response.body()); // For batches, inspect each item's data or error, including on HTTP 200. }}
Java 17+; स्टैंडर्ड HTTP क्लाइंट। GenderApiExample.java के रूप में सेव करें और java GenderApiExample.java चलाएँ। रनटाइम दस्तावेज़ीकरण
C# / .NET
using System;using System.Net.Http;using System.Net.Http.Headers;using System.Text;using System.Text.Json;string RequiredEnv(string name) => !string.IsNullOrWhiteSpace(Environment.GetEnvironmentVariable(name)) ? Environment.GetEnvironmentVariable(name)! : throw new InvalidOperationException($"Set {name}");var apiKey = RequiredEnv("GENDERAPI_API_KEY");using var handler = new HttpClientHandler { AllowAutoRedirect = false };using var client = new HttpClient(handler) { Timeout = TimeSpan.FromSeconds(30) };using var request = new HttpRequestMessage(HttpMethod.Post, "https://api.genderapi.io/api/v2/gender");request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", apiKey);request.Content = new StringContent("{\"type\":\"name\",\"value\":\"Rahul\",\"country\":\"IN\"}", Encoding.UTF8, "application/json");using var response = await client.SendAsync(request);var raw = await response.Content.ReadAsStringAsync();if (!(response.Content.Headers.ContentType?.MediaType?.Contains("json") ?? false)) throw new InvalidOperationException($"HTTP {(int)response.StatusCode}: expected JSON");using var result = JsonDocument.Parse(raw);if (!response.IsSuccessStatusCode){ Console.Error.WriteLine(result.RootElement); // Preserve Problem Details. Environment.ExitCode = 1;}else{ Console.WriteLine(result.RootElement); // For batches, inspect every item even on HTTP 200.}
.NET 8+ कंसोल ऐप्लिकेशन। कंसोल प्रोजेक्ट में Program.cs के रूप में इस्तेमाल करें, फिर dotnet run चलाएँ। रनटाइम दस्तावेज़ीकरण
Go
package mainimport ( "encoding/json" "fmt" "io" "net/http" "os" "strings" "time")func requiredEnv(name string) string { value := os.Getenv(name) if value == "" { panic("Set " + name) } return value}func run() error { apiKey := requiredEnv("GENDERAPI_API_KEY") body := "{\"type\":\"name\",\"value\":\"Rahul\",\"country\":\"IN\"}" request, err := http.NewRequest("POST", "https://api.genderapi.io/api/v2/gender", strings.NewReader(body)) if err != nil { return err } request.Header.Set("Authorization", "Bearer " + apiKey) request.Header.Set("Content-Type", "application/json") client := &http.Client{ Timeout: 30 * time.Second, CheckRedirect: func(req *http.Request, via []*http.Request) error { return http.ErrUseLastResponse }, } response, err := client.Do(request) if err != nil { return err } defer response.Body.Close() raw, err := io.ReadAll(response.Body) if err != nil { return err } if !strings.Contains(response.Header.Get("Content-Type"), "json") || !json.Valid(raw) { return fmt.Errorf("HTTP %d: expected a JSON response", response.StatusCode) } if response.StatusCode < 200 || response.StatusCode >= 300 { return fmt.Errorf("HTTP %d: %s", response.StatusCode, raw) } fmt.Println(string(raw)) // For batches, inspect every item even on HTTP 200. return nil}func main() { if err := run(); err != nil { fmt.Fprintln(os.Stderr, err) // Keep Problem Details for error handling. os.Exit(1) }}
Go 1.22+; स्टैंडर्ड लाइब्रेरी। main.go के रूप में सेव करें और go run main.go चलाएँ। रनटाइम दस्तावेज़ीकरण
रिस्पॉन्स का उदाहरण
यह 1 अक्टूबर 2026 को API कुंजी से प्राप्त किया गया वास्तविक रिस्पॉन्स है; इसमें सिर्फ़ खाते का बैलेंस बदला गया है। यह सटीकता का माप नहीं है, और लाइव अनुरोध पर अलग परिणाम मिल सकता है। API कुंजी वाले अनुरोधों में meta.access.mode: api_key होता है और सिर्फ़ ट्रायल वाले कोटा फ़ील्ड null होते हैं; IP ट्रायल वाले अनुरोधों में ip_trial होता है। अनुमान के लिए data और प्रक्रिया की बिलिंग के परिणाम के लिए meta.usage पढ़ें।
विवरणडेटासेट में मिला नाम, method (normalized, token, substring या model_inference), देश/वैश्विक दायरा और मिलान वाला देश। उपलब्ध न होने वाले साक्ष्य null होते हैं।
एक्सेस, बिलिंग और अनुरोध का मेटाडेटा
फ़ील्ड
प्रकार
Nullable
उदाहरण
विवरण
फ़ील्डmeta.request_id
प्रकारstring
Nullableनहीं
उदाहरण"550e8400-e29b-41d4-a716-446655440000"
विवरणइस HTTP प्रयास का यूनिक पहचानकर्ता; X-Request-ID में भी भेजा जाता है।
फ़ील्डmeta.duration_ms
प्रकारinteger
Nullableनहीं
उदाहरण42
विवरणमिलीसेकंड में अनुरोध प्रोसेस होने का समय।
फ़ील्डmeta.access.mode
प्रकारstring
Nullableनहीं
उदाहरण"api_key"
विवरणapi_key, ip_trial या unauthenticated। पेड अकाउंट इस्तेमाल करते समय api_key की पुष्टि करें।
फ़ील्डmeta.access.reason
प्रकारstring
Nullableहाँ
उदाहरणnull
विवरणIP ट्रायल पर जाने का कारण: api_key_missing, api_key_invalid या api_key_not_found; बाकी मामलों में null।
फ़ील्डmeta.usage.charged_credits
प्रकारinteger
Nullableहाँ
उदाहरण1
विवरणकुल कटे हुए क्रेडिट। शुल्क लगने से पहले या पूरे रिफ़ंड की पुष्टि के बाद शून्य; बिलिंग की पुष्टि न होने पर null।
फ़ील्डmeta.usage.remaining_credits
प्रकारinteger
Nullableहाँ
उदाहरण99
विवरणप्रक्रिया पूरी होने के समय का बैलेंस। नेगेटिव हो सकता है; उपलब्ध न होने या बिलिंग की पुष्टि न होने पर null।
फ़ील्डmeta.usage.billing_status
प्रकारstring
Nullableनहीं
उदाहरण"confirmed"
विवरणnot_charged, confirmed या unconfirmed। विफल अनुमान का दोबारा प्रयास करने से पहले इसे जाँचें।
फ़ील्डmeta.usage.resets_at
प्रकारstring
Nullableहाँ
उदाहरण"2026-09-27T12:00:00.000Z"
विवरणUTC में IP ट्रायल रीसेट होने का समय (ISO 8601); API कुंजी वाले अकाउंट के लिए या पता न होने पर null।
फ़ील्डmeta.usage.limit
प्रकारinteger
Nullableहाँ
उदाहरण10
विवरणIP ट्रायल की सीमा; API कुंजी वाले अकाउंट के लिए null।
फ़ील्डmeta.usage.period_seconds
प्रकारinteger
Nullableहाँ
उदाहरण86400
विवरणसेकंड में IP ट्रायल की अवधि; API कुंजी वाले अकाउंट के लिए null।
देश का संदर्भ और अज्ञात नाम
country सिर्फ़ तभी दें जब आपके पास प्रासंगिक संदर्भ हो। API किसी देश की डेटासेट पंक्ति चुन सकता है या वैश्विक पंक्ति का इस्तेमाल कर सकता है। data.match.scope बताता है कि कौन-सी चुनी गई; लौटाया गया देश यह तय नहीं करता कि व्यक्ति कहाँ रहता है।
एकल अनुरोधों में डिफ़ॉल्ट रूप से AI फ़ॉलबैक होता है, कुल 1 क्रेडिट में। सिर्फ़ डेटासेट इस्तेमाल करने के लिए options: {"ai_mode": "off"} भेजें। तय न हो पाए इनपुट पर gender: null मिल सकता है और प्रक्रिया सफल होने पर उस पर भी शुल्क लगता है। पूरे नाम का मिलान उसके किसी एक हिस्से से हो सकता है; data.match चुने गए कैंडिडेट और मिलान का तरीका दर्ज करता है।
निकनेम जैसे name मानों के लिए forceToGenderize: true असली पहले नाम के बिना भी अनुमान की अनुमति देता है: डेटासेट से परिणाम मिलने पर 1 क्रेडिट लगता है; नहीं तो निकनेम समझने वाले AI पर कुल 2 क्रेडिट। शुरुआती बैलेंस पॉज़िटिव होना काफ़ी है और बाद का बैलेंस नेगेटिव हो सकता है।
पूरे नाम की जाँच करें, यह माने बिना कि पहला शब्द ही चुना जाएगा
मूल Unicode नाम भेजें। डेटासेट मिलान में NFKC नॉर्मलाइज़ेशन, छोटे अक्षरों में बदलाव और टोकन निकालने की प्रक्रिया लागू होती है; नाम को ASCII में बदलने की ज़रूरत नहीं है। उपलब्ध कैंडिडेट रिकॉर्ड में से API वह रिकॉर्ड चुनता है जिसकी संग्रहीत कुल गिनती सबसे ज़्यादा है। यह कैंडिडेट नाम का बाद वाला हिस्सा भी हो सकता है, इसलिए यह न मानें कि पहला शब्द या पहला नाम ही चुना गया।
सिर्फ़ डेटासेट वाले इस अनुरोध से चुने गए साक्ष्य को जाँचना आसान होता है। भेजे गए पूरे नाम के लिए data.input.value, खोज में इस्तेमाल हुए कैंडिडेट के लिए data.match.name और मिलान के तरीके के लिए data.match.method पढ़ें। यह उदाहरण किसी खास लिंग या किसी खास टोकन के चुने जाने का वादा नहीं करता। डेटासेट कैंडिडेट दो अक्षरों से लंबे होने चाहिए; छोटे इनपुट का परिणाम तय न हो पाना संभव है। अगर आपके ऐप्लिकेशन के लिए यह अतिरिक्त अनुमान उचित हो, तो सामान्य AI फ़ॉलबैक इस्तेमाल करें।
अनुमान का हर अनुरोध, दोबारा प्रयास सहित, शुल्क वाली नई प्रक्रिया है। ये उदाहरण अपने-आप दोबारा प्रयास नहीं करते। दूसरा अनुरोध भेजने से पहले बिलिंग स्टेटस देखें।
चलाने से पहले: एक्सेस और त्रुटियों को संभालना
ये उदाहरण अपने सर्वर पर चलाएँ। प्रोसेस एनवायरनमेंट में GENDERAPI_API_KEY को अपनी मौजूदा API कुंजी पर सेट करें। पक्का करें कि meta.access.mode का मान api_key है: पहचानी न गई कुंजी IP ट्रायल पर जा सकती है।
HTTP 4xx और 5xx वाले JSON रिस्पॉन्स में त्रुटि की बॉडी बनी रहती है और प्रोग्राम शून्य से अलग एग्ज़िट स्टेटस लौटाता है। दोबारा प्रयास से पहले code, action और meta.usage.billing_status देखें।
// Server-side Node.js. Save as example.mjs.const apiKey = process.env.GENDERAPI_API_KEY;if (!apiKey) throw new Error("Set GENDERAPI_API_KEY");const body = { "type": "name", "value": "Ayşe Yılmaz", "country": "TR", "options": { "ai_mode": "off" }};const response = await fetch("https://api.genderapi.io/api/v2/gender", { method: "POST", headers: { Authorization: `Bearer ${apiKey}`, "Content-Type": "application/json", }, body: JSON.stringify(body), signal: AbortSignal.timeout(30_000), redirect: "error",});const raw = await response.text();if (!(response.headers.get("content-type") ?? "").includes("json")) { throw new Error(`HTTP ${response.status}: expected JSON; request ID ${response.headers.get("x-request-id")}`);}const result = JSON.parse(raw); // Also accepts application/problem+json.if (!response.ok) { console.error(`HTTP ${response.status}`, result); process.exitCode = 1; // A retry is a new operation; inspect billing first.} else { console.log(JSON.stringify(result, null, 2)); // For batches, inspect every item: HTTP 200 may contain item errors.}
Node.js 22+; बिल्ट-इन fetch। example.mjs के रूप में सेव करें और node example.mjs चलाएँ। रनटाइम दस्तावेज़ीकरण
Python
import jsonimport osimport sysimport urllib.errorimport urllib.requestapi_key = os.environ.get("GENDERAPI_API_KEY")if not api_key: raise RuntimeError("Set GENDERAPI_API_KEY")body = json.loads("{\"type\":\"name\",\"value\":\"Ayşe Yılmaz\",\"country\":\"TR\",\"options\":{\"ai_mode\":\"off\"}}")class NoRedirect(urllib.request.HTTPRedirectHandler): def redirect_request(self, req, fp, code, msg, headers, newurl): return Nonerequest = urllib.request.Request( "https://api.genderapi.io/api/v2/gender", method="POST", data=json.dumps(body).encode("utf-8"), headers={ "Authorization": "Bearer " + api_key, "Content-Type": "application/json", },)opener = urllib.request.build_opener(NoRedirect())try: response = opener.open(request, timeout=30)except urllib.error.HTTPError as error: response = error # Keep the Problem Details body on non-2xx responses.with response: status = response.status raw = response.read().decode("utf-8") if "json" not in response.headers.get("Content-Type", ""): raise RuntimeError(f"HTTP {status}: expected a JSON response") result = json.loads(raw)print(json.dumps(result, indent=2), file=sys.stderr if status >= 300 else sys.stdout)if not 200 <= status < 300: sys.exit(1) # Inspect code, action and billing before retrying.# For batches, inspect every item even when HTTP status is 200.
Python 3.10+; स्टैंडर्ड लाइब्रेरी। example.py के रूप में सेव करें और python3 example.py चलाएँ। रनटाइम दस्तावेज़ीकरण
cURL एक्सटेंशन के साथ PHP 8+। example.php के रूप में सेव करें और php example.php चलाएँ। रनटाइम दस्तावेज़ीकरण
Java
import java.net.URI;import java.net.http.HttpClient;import java.net.http.HttpRequest;import java.net.http.HttpResponse;import java.nio.charset.StandardCharsets;import java.time.Duration;public class GenderApiExample { private static String requiredEnv(String name) { String value = System.getenv(name); if (value == null || value.isBlank()) throw new IllegalStateException("Set " + name); return value; } public static void main(String[] args) throws Exception { String apiKey = requiredEnv("GENDERAPI_API_KEY"); String body = "{\"type\":\"name\",\"value\":\"Ayşe Yılmaz\",\"country\":\"TR\",\"options\":{\"ai_mode\":\"off\"}}"; HttpClient client = HttpClient.newBuilder() .connectTimeout(Duration.ofSeconds(10)) .followRedirects(HttpClient.Redirect.NEVER) .build(); HttpRequest request = HttpRequest.newBuilder(URI.create("https://api.genderapi.io/api/v2/gender")) .timeout(Duration.ofSeconds(30)) .header("Authorization", "Bearer " + apiKey) .header("Content-Type", "application/json") .POST(HttpRequest.BodyPublishers.ofString(body, StandardCharsets.UTF_8)) .build(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString(StandardCharsets.UTF_8)); if (!response.headers().firstValue("content-type").orElse("").contains("json")) { throw new IllegalStateException("HTTP " + response.statusCode() + ": expected JSON"); } // JSON text; parse with your application's JSON library when integrating. if (response.statusCode() < 200 || response.statusCode() >= 300) { System.err.println(response.body()); // Includes Problem Details. System.exit(1); } System.out.println(response.body()); // For batches, inspect each item's data or error, including on HTTP 200. }}
Java 17+; स्टैंडर्ड HTTP क्लाइंट। GenderApiExample.java के रूप में सेव करें और java GenderApiExample.java चलाएँ। रनटाइम दस्तावेज़ीकरण
C# / .NET
using System;using System.Net.Http;using System.Net.Http.Headers;using System.Text;using System.Text.Json;string RequiredEnv(string name) => !string.IsNullOrWhiteSpace(Environment.GetEnvironmentVariable(name)) ? Environment.GetEnvironmentVariable(name)! : throw new InvalidOperationException($"Set {name}");var apiKey = RequiredEnv("GENDERAPI_API_KEY");using var handler = new HttpClientHandler { AllowAutoRedirect = false };using var client = new HttpClient(handler) { Timeout = TimeSpan.FromSeconds(30) };using var request = new HttpRequestMessage(HttpMethod.Post, "https://api.genderapi.io/api/v2/gender");request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", apiKey);request.Content = new StringContent("{\"type\":\"name\",\"value\":\"Ayşe Yılmaz\",\"country\":\"TR\",\"options\":{\"ai_mode\":\"off\"}}", Encoding.UTF8, "application/json");using var response = await client.SendAsync(request);var raw = await response.Content.ReadAsStringAsync();if (!(response.Content.Headers.ContentType?.MediaType?.Contains("json") ?? false)) throw new InvalidOperationException($"HTTP {(int)response.StatusCode}: expected JSON");using var result = JsonDocument.Parse(raw);if (!response.IsSuccessStatusCode){ Console.Error.WriteLine(result.RootElement); // Preserve Problem Details. Environment.ExitCode = 1;}else{ Console.WriteLine(result.RootElement); // For batches, inspect every item even on HTTP 200.}
.NET 8+ कंसोल ऐप्लिकेशन। कंसोल प्रोजेक्ट में Program.cs के रूप में इस्तेमाल करें, फिर dotnet run चलाएँ। रनटाइम दस्तावेज़ीकरण
Go
package mainimport ( "encoding/json" "fmt" "io" "net/http" "os" "strings" "time")func requiredEnv(name string) string { value := os.Getenv(name) if value == "" { panic("Set " + name) } return value}func run() error { apiKey := requiredEnv("GENDERAPI_API_KEY") body := "{\"type\":\"name\",\"value\":\"Ayşe Yılmaz\",\"country\":\"TR\",\"options\":{\"ai_mode\":\"off\"}}" request, err := http.NewRequest("POST", "https://api.genderapi.io/api/v2/gender", strings.NewReader(body)) if err != nil { return err } request.Header.Set("Authorization", "Bearer " + apiKey) request.Header.Set("Content-Type", "application/json") client := &http.Client{ Timeout: 30 * time.Second, CheckRedirect: func(req *http.Request, via []*http.Request) error { return http.ErrUseLastResponse }, } response, err := client.Do(request) if err != nil { return err } defer response.Body.Close() raw, err := io.ReadAll(response.Body) if err != nil { return err } if !strings.Contains(response.Header.Get("Content-Type"), "json") || !json.Valid(raw) { return fmt.Errorf("HTTP %d: expected a JSON response", response.StatusCode) } if response.StatusCode < 200 || response.StatusCode >= 300 { return fmt.Errorf("HTTP %d: %s", response.StatusCode, raw) } fmt.Println(string(raw)) // For batches, inspect every item even on HTTP 200. return nil}func main() { if err := run(); err != nil { fmt.Fprintln(os.Stderr, err) // Keep Problem Details for error handling. os.Exit(1) }}
Go 1.22+; स्टैंडर्ड लाइब्रेरी। main.go के रूप में सेव करें और go run main.go चलाएँ। रनटाइम दस्तावेज़ीकरण
ISO देश कोड सिर्फ़ तभी इस्तेमाल करें जब आपके पास प्रासंगिक संदर्भ हो; अनुमानित परिणाम से कोई देश न गढ़ें। हर कैंडिडेट के लिए, उपलब्ध देश वाली पंक्ति को उसकी वैश्विक पंक्ति पर प्राथमिकता मिलती है। देश वाली पंक्ति न हो, तो कैंडिडेट वैश्विक पंक्ति इस्तेमाल कर सकता है। बराबर गिनती वाली देश की पंक्ति की जगह उसकी वैश्विक पंक्ति नहीं ली जाती; अगर चुनी गई पंक्ति में गिनती बराबर है, तो डेटासेट का परिणाम unknown होता है और चालू AI फ़ॉलबैक चल सकता है।
रिस्पॉन्स में साक्ष्य
अर्थ
ऐप्लिकेशन में कार्रवाई
रिस्पॉन्स में साक्ष्यmatch.scope: country; match.country: TR
अर्थचुने गए डेटासेट कैंडिडेट ने अनुरोध में दिए गए देश की पंक्ति इस्तेमाल की।
ऐप्लिकेशन में कार्रवाईचुने गए कैंडिडेट और देश के दायरे को अनुमान के साथ सुरक्षित रखें।
रिस्पॉन्स में साक्ष्यmatch.scope: global; match.country: null
अर्थचुने गए कैंडिडेट ने वैश्विक पंक्ति इस्तेमाल की, भले ही अनुरोध में देश दिया गया हो।
ऐप्लिकेशन में कार्रवाईपरिणाम को किसी देश के लिए खास मिलान के रूप में लेबल न करें।
रिस्पॉन्स में साक्ष्यcountry_source: dataset या ai_association
अर्थdata.country का स्रोत बताता है, डेटासेट खोज का दायरा या व्यक्ति की राष्ट्रीयता नहीं।
ऐप्लिकेशन में कार्रवाईइसे match.country से अलग पढ़ें; इनमें से कोई भी फ़ील्ड निवास या राष्ट्रीयता की पुष्टि नहीं करता।
रिस्पॉन्स में साक्ष्यsource: ai; match.scope: null
अर्थअंतिम रिस्पॉन्स AI ने दिया, इसलिए उस रिस्पॉन्स में कोई चुनी गई डेटासेट पंक्ति नहीं है।
ऐप्लिकेशन में कार्रवाईAI के कॉन्फिडेंस स्कोर से जुड़े निर्देश अपनाएँ और अज्ञात परिणाम सुरक्षित रखें।