Przewiduj płeć na podstawie imienia lub pełnego imienia za pomocą GenderAPI v2. Zobacz siedem przykładów języków, odpowiedzi JSON, kontekst krajowy, rezerwę AI i koszty kredytu.
Przed wysłaniem zapytania
Wyślij JSON do POST https://api.genderapi.io/api/v2/gender. Użyj istniejącego klucza API w Authorization: Bearer YOUR_API_KEY i Content-Type: application/json. Każde żądanie jest przetwarzane niezależnie.
Wybierz język w przykładowym kodzie. Przed uruchomieniem ustaw GENDERAPI_API_KEY w środowisku procesowym. Brakujące lub nierozpoznane klucze mogą skorzystać z udostępnionej wersji próbnej IP, więc podczas integracji konta potwierdź, że meta.access.mode to api_key.
Użyj type: name, aby przesłać imię lub pełne imię i nazwisko. Pomyślna odpowiedź może zawierać gender: null. Pojedyncze żądania najpierw przeszukują zbiór danych. Jeśli nie można określić płci, domyślnie używają sztucznej inteligencji.
Wybierz język programowania.Skonfiguruj klucz API, następnie uruchom przykład na swoim serwerze.
Każde żądanie prognozy jest nową płatną operacją, włączając ponowne próby. W tych przykładach nie następuje automatycznie ponowna próba. Sprawdź status płatności przed wysłaniem kolejnej prośby.
Zanim uruchomisz: dostęp i obsługa błędów
Uruchom te przykłady na swoim serwerze. Ustaw GENDERAPI_API_KEY w środowisku procesowym na istniejący klucz API. Potwierdź, że meta.access.mode to api_key: nierozpoznany klucz może wrócić do wersji próbnej IP.
Odpowiedzi HTTP 4xx i 5xx JSON zachowują treść błędu i zwracają niezerowy status wyjścia. Przed ponowną próbą sprawdź code, action i meta.usage.billing_status.
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\":\"Onur\",\"country\":\"TR\"}")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.
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\":\"Onur\",\"country\":\"TR\"}", 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.}
Ta syntetyczna odpowiedź ilustruje kształt JSON, a nie zmierzoną dokładność lub gwarantowany wynik na żywo. Pokazuje dostęp próbny IP; uwierzytelniona operacja zgłasza meta.access.mode: api_key i null pola przydziałów tylko w wersji próbnej. Odczytaj dane w celu wnioskowania i meta.usage w celu uzyskania wyniku rozliczeń operacji.
Kraj dostawy tylko wtedy, gdy masz odpowiedni kontekst. API może wybrać wiersz zestawu danych specyficzny dla kraju lub powrócić do wiersza globalnego. data.match.scope pokazuje, co zostało wybrane; w państwie powracającym nie ustala się, gdzie dana osoba mieszka.
Domyślnie pojedyncze żądanie wykorzystuje sztuczną inteligencję, gdy zbiór danych nie może określić płci, co daje w sumie 1 kredyt. Aby skorzystać tylko z zestawu danych, wyślij options: {"ai_mode": "off"}. Wypełnione żądanie nadal kosztuje kredyty, jeśli zwróci gender: null. Wyszukiwanie pełnej nazwy może odpowiadać jednej części nazwy. data.match rejestruje wybraną metodę kandydata i dopasowania.
W przypadku pseudonimu podanego jako imię, forceToGenderize: true umożliwia wnioskowanie AI bez prawdziwego imienia. Płeć zidentyfikowana w zbiorze danych kosztuje 1 kredyt. Jeśli potrzebna jest sztuczna inteligencja, całkowity koszt wynosi 2 kredyty. Wystarczy dowolne dodatnie saldo początkowe; saldo końcowe może być ujemne.