Elige entre conjunto de datos, fallback estándar o IA directa en GenderAPI.io V2. Consulta el análisis de alias, los valores predeterminados de los lotes y el coste total en créditos.
Modos IA y forceToGenderize
En POST, configura options: {"ai_mode": "off"}, o selecciona fallback o always. En GET, utiliza ai_mode=off. Los registros de los lotes usan off por defecto; activa fallback por separado cuando sea necesario.
Cuando forceToGenderize es true, omite ai_mode o utiliza fallback. Combinarlo con off o always arroja 422. La inferencia de IA ordinaria requiere un nombre de pila real utilizable; La inferencia forzada puede utilizar un alias. Ninguno de los modos garantiza un género que no sea null.
Un fallo del conjunto de datos o del proveedor es un error de la operación, no una búsqueda sin coincidencias. Las predicciones fallidas se reembolsan; revisa billing_status antes de reintentar si el resultado del cobro no está confirmado.
Modo
Comportamiento
Créditos totales por elemento exitoso
Modooff
ComportamientoSolo conjunto de datos; sin llamada de IA.
Créditos totales por elemento exitoso1, incluido un resultado desconocido
Modofallback
ComportamientoPrimero el conjunto de datos, luego la IA si el género no está resuelto. Valor predeterminado para solicitudes individuales.
Créditos totales por elemento exitoso1, incluido el recurso a la IA
Modoalways
ComportamientoOmite el conjunto de datos y consulta directamente a la IA.
Créditos totales por elemento exitoso2
ModoforceToGenderize: true
ComportamientoPrimero el conjunto de datos, luego la IA con reconocimiento de apodos si no se resuelve. Funciona para nombre, correo electrónico y nombre de usuario.
Créditos totales por elemento exitoso1 para un resultado de conjunto de datos resuelto; 2 en total si se utiliza IA
Habilitar inferencia basada en apodos
La opción forceToGenderize funciona con los tres valores de type: name, email y username. Este ejemplo envía un alias como entrada de nombre. Utiliza tu clave actual con Bearer. Un resultado de género desconocido también es válido.
Elige un lenguaje de programación.Configura tu clave API, luego ejecuta el ejemplo en tu servidor.
Cada solicitud de predicción es una nueva operación facturable, incluidos los reintentos. Estos ejemplos no se reintentan automáticamente. Comprueba el estado de facturación antes de enviar otra solicitud.
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")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.}