Utiliza tu clave actual de GenderAPI.io con autenticación Bearer. Consulta el saldo compartido V1/V2, la prueba por IP y cómo verificar el acceso.
Autenticación y prueba gratuita
Parámetro
Tipo
Obligatorio
Valor predeterminado
Descripción
ParámetroAuthorization
Tipostring
ObligatorioNo
Valor predeterminado—
DescripciónEnvía Bearer YOUR_API_KEY para usar tu cuenta. Las claves ausentes o desconocidas usan la prueba compartida por IP.
ParámetroContent-Type
Tipostring
ObligatorioSolo POST
Valor predeterminado—
DescripciónEnvía application/json en las solicitudes POST.
Envía Authorization: Bearer YOUR_API_KEY desde tu servidor. Sustituye YOUR_API_KEY por tu clave de GenderAPI.io. Ambas versiones comparten el saldo; no necesitas otra clave ni una suscripción independiente para V2.
Todas las solicitudes POST requieren Content-Type: application/json. Utiliza tu clave actual con Bearer. Cada solicitud se procesa de forma independiente y las solicitudes repetidas se cobran normalmente.
Solo GET /gender admite además el parámetro de consulta key. En integraciones, utiliza preferentemente la cabecera Authorization: las URLs pueden guardarse en el historial del navegador y en registros. No incluyas claves privadas en el código del navegador.
Si falta una clave API, tiene un formato no válido o no se reconoce, la solicitud utiliza la prueba de IP compartida con v1. Esto no se aplica a las claves reconocidas que están deshabilitadas, caducadas o restringidas. Comprueba el modo de acceso en meta.access.mode: api_key, ip_trial o unauthenticated. El motivo de la prueba es api_key_missing, api_key_invalid o api_key_not_found. Por lo tanto, una clave no válida aún puede recibir una respuesta de prueba exitosa. Verificar el modo de acceso en producción.
Los créditos de prueba se renuevan al finalizar un periodo de 24 horas, no necesariamente a medianoche. Consulta resets_at mediante /usage. Quienes comparten una IP pública utilizan el mismo saldo de prueba.
Copia la clave de API de tu cuenta de GenderAPI.io. Sustituye YOUR_API_KEY por ella y ejecuta el ejemplo en la misma sesión de terminal. Estos comandos establecen la variable de entorno solo para esa sesión; YOUR_API_KEY es un marcador de posición, no una clave válida.
Para una aplicación o despliegue, configura GENDERAPI_API_KEY como un secreto del servidor. Los ejemplos no cargan automáticamente archivos .env. Mantén la clave fuera del código del navegador, del control de versiones y de las URLs públicas.
Terminal macOS/Linux
export GENDERAPI_API_KEY='YOUR_API_KEY'
Windows PowerShell
$env:GENDERAPI_API_KEY = 'YOUR_API_KEY'
Verificar acceso sin gastar créditos
Envía GET /usage con la cabecera Bearer. Una clave de cuenta válida devuelve meta.access.mode: api_key. Si aparece ip_trial, comprueba la clave antes de ejecutar predicciones. Esta consulta es gratuita incluso si la cuenta no tiene créditos.
Elige un lenguaje de programación.Configura tu clave API, luego ejecuta el ejemplo en tu servidor.
Consultar el saldo no consume créditos, pero sí cuenta para los límites de frecuencia de solicitudes.
Antes de ejecutar: acceso y manejo de errores
Ejecuta estos ejemplos en tu servidor. Configura GENDERAPI_API_KEY en el entorno de proceso con tu clave API existente. Confirma que meta.access.mode es api_key: una clave no reconocida puede recurrir a la prueba IP.
Las respuestas HTTP 4xx y 5xx JSON conservan el cuerpo del error y devuelven un estado de salida distinto de cero. Comprueba code, action y meta.usage.billing_status antes de volver a intentarlo.
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.}