Użyj GenderAPI v2, aby wywnioskować płeć na podstawie sygnału imienia i nazwiska. Zawiera przykłady żądań i odpowiedzi, walidację, nieznane wyniki i opcje AI.
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: email. API szuka w adresie użytecznego sygnału nazwy. Udostępnione skrzynki odbiorcze i nieprzezroczyste części lokalne mogą dawać nieznany wynik. Tutaj również forceToGenderize jest opcjonalny; umożliwia AI wnioskowanie na podstawie aliasu nawet bez prawdziwego imienia.
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\":\"email\",\"value\":\"alice.smith@example.com\",\"country\":\"US\"}")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\":\"email\",\"value\":\"alice.smith@example.com\",\"country\":\"US\"}", 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.
value musi być poprawnym składniowo adresem e-mail. Nieprawidłowa składnia zwraca HTTP 422 przed rozliczeniem. Sprawdzanie składni nie pozwala ustalić, czy skrzynka pocztowa istnieje lub czy należy do konkretnej osoby.
Rozpoznawalna nazwa osobista w adresie może pasować do zbioru danych. Współdzielone skrzynki pocztowe, adresy ról i nieprzezroczyste części lokalne mogą zwracać płeć: null. Domyślnie nierozwiązane pojedyncze wyszukiwanie wykorzystuje zwykłą awarię AI w celu uzyskania łącznie 1 kredytu, w tym pomyślnego nieznanego wyniku.
Użyj forceToGenderize: true, jeśli chcesz wnioskować o sztucznej inteligencji uwzględniającej pseudonimy, gdy zbiór danych jest nierozwiązany. Kosztuje to 1 kredyt za rozstrzygnięty wynik zbioru danych lub łącznie 2 kredyty, jeśli używana jest sztuczna inteligencja. API może nadal zwracać null. Domena e-mail nie jest dowodem lokalizacji danej osoby; dostarczać danemu krajowi tylko wówczas, gdy znany jest odpowiedni kontekst.