GenderAPI.io V2: uwierzytelnianie i bezpłatna próba
Uwierzytelniaj zapytania do GenderAPI.io V2 istniejącym kluczem API w nagłówku Bearer. Poznaj parametr key w zapytaniach GET, próbę dla adresu IP, saldo współdzielone z V1 i zapytania JSON.
Uwierzytelnianie i bezpłatna próba
Parametr
Typ
Wymagany
Wartość domyślna
Opis
ParametrAuthorization
Typstring
WymaganyNie
Wartość domyślna—
OpisWyślij Bearer YOUR_API_KEY, aby korzystać z konta. Brakujący lub nieznany klucz powoduje użycie współdzielonej próby dla adresu IP.
ParametrContent-Type
Typstring
WymaganyTylko POST
Wartość domyślna—
OpisWysyłaj application/json w zapytaniach POST.
Wysyłaj Authorization: Bearer YOUR_API_KEY ze swojego serwera. Zastąp YOUR_API_KEY swoim istniejącym kluczem GenderAPI.io. Obie wersje korzystają z tego samego salda; nie potrzebujesz osobnej subskrypcji ani osobnego klucza dla V2.
Wszystkie zapytania POST wymagają nagłówka Content-Type: application/json. Użyj istniejącego klucza API w nagłówku Bearer. Każde zapytanie jest przetwarzane niezależnie; powtórzone zapytania są rozliczane normalnie.
Tylko GET /gender akceptuje dodatkowo parametr zapytania key. W integracjach preferuj nagłówek Authorization, ponieważ adresy URL mogą trafiać do historii przeglądarki i logów. Nie umieszczaj kluczy prywatnych w kodzie frontendu.
Brakujący, błędnie sformatowany lub nierozpoznany klucz powoduje przejście na próbę dla adresu IP współdzieloną z V1. Nie dotyczy to klucza rozpoznanego, ale wyłączonego, wygasłego lub objętego ograniczeniami. Sprawdź meta.access.mode: api_key, ip_trial lub unauthenticated. Powodem użycia próby może być api_key_missing, api_key_invalid lub api_key_not_found. Nieprawidłowy klucz może więc dać pomyślną odpowiedź w ramach próby; w środowisku produkcyjnym weryfikuj tryb dostępu.
Kredyty próbne odnawiają się po upływie 24 godzin, niekoniecznie o północy. Odczytaj resets_at za pomocą /usage. Osoby korzystające z tego samego publicznego adresu IP dzielą ten limit.
Skopiuj klucz API ze swojego konta GenderAPI. Zastąp poniższy YOUR_API_KEY tym kluczem, a następnie uruchom wybrany przykład w tej samej sesji terminala. Te polecenia ustawiają zmienną środowiskową tylko dla bieżącej sesji; opublikowana wartość przykładowa nie jest działającym kluczem.
W aplikacji lub wdrożeniu skonfiguruj GENDERAPI_API_KEY jako sekret po stronie serwera. Przykłady nie wczytują automatycznie pliku .env. Nie umieszczaj klucza w pakietach kodu dla przeglądarki, w systemie kontroli wersji ani w publicznych adresach URL.
Terminal macOS/Linux
export GENDERAPI_API_KEY='YOUR_API_KEY'
Windows PowerShell
$env:GENDERAPI_API_KEY = 'YOUR_API_KEY'
Sprawdź dostęp bez zużywania kredytów
Wywołaj GET /usage z nagłówkiem Bearer. Prawidłowy klucz konta daje meta.access.mode: api_key. Jeśli wynik wskazuje ip_trial, sprawdź skopiowany klucz, zanim zaczniesz generować prognozy. To zapytanie jest bezpłatne, także dla konta, na którym nie zostały żadne kredyty.
Wybierz język programowania.Skonfiguruj klucz API, następnie uruchom przykład na swoim serwerze.
Odczyt salda nie zużywa kredytów, ale nadal wlicza się do limitów częstotliwości zapytań.
Zanim uruchomisz: dostęp i obsługa błędów
Uruchamiaj te przykłady na swoim serwerze. Ustaw w środowisku procesu zmienną GENDERAPI_API_KEY na swój istniejący klucz API. Upewnij się, że meta.access.mode ma wartość api_key: nierozpoznany klucz może spowodować przejście na próbę dla adresu IP.
W przypadku odpowiedzi JSON z kodem HTTP 4xx i 5xx przykłady zachowują treść błędu i zwracają niezerowy kod 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")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/usage", method="GET", headers={ "Authorization": "Bearer " + api_key, },)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.Get, "https://api.genderapi.io/api/v2/usage");request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", apiKey);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.}