GenderAPI.io V2 : authentification et essai gratuit
Utilisez votre clé GenderAPI.io existante avec l'authentification Bearer. Comprenez le solde partagé entre V1 et V2, l'essai par IP et la vérification de l'accès.
Authentification et essai gratuit
Paramètre
Type
Obligatoire
Valeur par défaut
Description
ParamètreAuthorization
Typestring
ObligatoireNon
Valeur par défaut—
DescriptionEnvoyez Bearer YOUR_API_KEY pour utiliser votre compte. Une clé absente ou inconnue utilise l'essai partagé par IP.
ParamètreContent-Type
Typestring
ObligatoirePOST uniquement
Valeur par défaut—
DescriptionEnvoyez application/json pour les requêtes POST.
Envoyez Authorization: Bearer YOUR_API_KEY depuis votre serveur. Remplacez YOUR_API_KEY par votre clé GenderAPI.io existante. Les deux versions partagent votre solde ; aucune clé ni aucun abonnement V2 distinct n'est nécessaire.
Toutes les requêtes POST exigent Content-Type: application/json. Utilisez votre clé API existante avec l'en-tête Bearer. Chaque requête est traitée indépendamment ; les requêtes répétées sont facturées normalement.
Seul GET /gender accepte également le paramètre de requête key. Pour les intégrations, privilégiez l'en-tête Authorization, car les URL peuvent être conservées dans l'historique du navigateur et dans les journaux. N'incluez jamais de clé privée dans le code frontend.
Une clé absente, mal formée ou non reconnue bascule vers l'essai par IP partagé avec la V1. Ce n'est pas le cas d'une clé reconnue mais désactivée, expirée ou restreinte. Vérifiez meta.access.mode : api_key, ip_trial ou unauthenticated. Les motifs de l'essai sont api_key_missing, api_key_invalid ou api_key_not_found. Une clé non valide peut donc produire une réponse d'essai réussie ; vérifiez le mode d'accès en production.
Les crédits d'essai sont réinitialisés à l'issue d'une période de 24 heures, pas nécessairement à minuit. Lisez resets_at avec /usage. Les personnes qui partagent la même adresse IP publique partagent aussi cette allocation.
Copiez votre clé API depuis votre compte GenderAPI. Remplacez YOUR_API_KEY ci-dessous par cette clé, puis exécutez l'exemple choisi dans la même session de terminal. Ces commandes définissent une variable d'environnement pour cette session uniquement ; la valeur d'exemple publiée n'est pas une clé valide.
Pour une application ou un déploiement, configurez GENDERAPI_API_KEY comme secret côté serveur. Les exemples ne chargent pas automatiquement de fichier .env. Gardez la clé hors des bundles côté navigateur, du contrôle de version et des URL publiques.
Terminal macOS/Linux
export GENDERAPI_API_KEY='YOUR_API_KEY'
Windows PowerShell
$env:GENDERAPI_API_KEY = 'YOUR_API_KEY'
Vérifier l'accès sans consommer de crédits
Appelez GET /usage avec l'en-tête Bearer. Une clé de compte valide renvoie meta.access.mode: api_key. Si le résultat indique ip_trial, vérifiez la clé copiée avant de lancer des prédictions. Cette requête est gratuite, même pour un compte qui n'a plus de crédits.
Choisissez un langage de programmation.Configurez votre clé API, puis exécutez l'exemple sur votre serveur.
Cette consultation du solde ne consomme aucun crédit, mais elle est prise en compte dans les limites de débit des requêtes.
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")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.}