Choisissez entre le jeu de données seul, le repli ordinaire sur l'IA ou l'IA systématique dans GenderAPI.io V2. Comprenez l'inférence de surnoms, les valeurs par défaut des lots et le coût total en crédits.
Modes d'IA et forceToGenderize
Dans les corps POST, définissez options: {"ai_mode": "off"} (ou fallback / always). Dans les URL GET, utilisez ai_mode=off. Les éléments d'un lot utilisent off par défaut ; activez fallback séparément pour chaque élément qui en a besoin.
Lorsque forceToGenderize vaut true, omettez ai_mode ou utilisez fallback. Le combiner avec off ou always renvoie 422. L'inférence ordinaire par IA exige un véritable prénom exploitable ; l'inférence forcée peut s'appuyer sur un alias. Aucun des deux modes ne garantit un genre non null.
Une erreur du jeu de données ou du fournisseur est un échec de la requête, et non une absence de correspondance. Les prédictions échouées sont remboursées ; examinez billing_status avant de réessayer lorsque le résultat de facturation ne peut pas être confirmé.
Mode
Comportement
Crédits au total par élément réussi
Modeoff
ComportementJeu de données uniquement ; aucun appel à l'IA.
Crédits au total par élément réussi1, y compris pour un résultat inconnu
Modefallback
ComportementJeu de données d'abord, puis IA si le genre n'est pas résolu. Valeur par défaut des requêtes individuelles.
Crédits au total par élément réussi1, repli sur l'IA compris
Modealways
ComportementIgnore le jeu de données et interroge directement l'IA.
Crédits au total par élément réussi2
ModeforceToGenderize: true
ComportementJeu de données d'abord, puis IA adaptée aux surnoms si le résultat n'est pas résolu. Fonctionne pour les noms, les adresses e-mail et les noms d'utilisateur.
Crédits au total par élément réussi1 pour un résultat résolu par le jeu de données ; 2 au total si l'IA est utilisée
Activer l'inférence adaptée aux surnoms
Le même champ facultatif forceToGenderize fonctionne avec les types name, email et username. Cet exemple envoie un surnom comme valeur de nom. Utilisez votre clé API existante avec l'en-tête Bearer. Les résultats inconnus restent des résultats valides.
Choisissez un langage de programmation.Configurez votre clé API, puis exécutez l'exemple sur votre serveur.
Chaque requête de prédiction est une nouvelle opération facturable, y compris les nouvelles tentatives. Ces exemples ne réessaient pas automatiquement. Vérifiez le statut de facturation avant d'envoyer une autre requête.
Avant l'exécution : accès et gestion des erreurs
Exécutez ces exemples sur votre serveur. Définissez GENDERAPI_API_KEY dans l'environnement du processus avec votre clé API existante. Vérifiez que meta.access.mode vaut api_key : une clé non reconnue peut basculer vers l'essai par IP.
Pour les réponses JSON HTTP 4xx et 5xx, les exemples conservent le corps de l'erreur et renvoient un code de sortie non nul. Vérifiez code, action et meta.usage.billing_status avant de réessayer.
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\":\"prenses\",\"country\":\"TR\",\"forceToGenderize\":true}")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\":\"prenses\",\"country\":\"TR\",\"forceToGenderize\":true}", 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.}