Predecir a partir de nombres de usuario y apodos con GenderAPI v2. Aprenda forceToGenderize, la búsqueda del conjunto de datos primero, los campos de respuesta de IA y la tarifa de 1 o 2 créditos.
Antes de enviar la solicitud
Enviar JSON a POST https://api.genderapi.io/api/v2/gender. Utilice su clave API existente en Authorization: Bearer YOUR_API_KEY y Content-Type: application/json. Cada solicitud se procesa de forma independiente.
Elija su idioma en el ejemplo de código. Configure GENDERAPI_API_KEY en el entorno del proceso antes de ejecutarlo. Las claves faltantes o no reconocidas pueden usar la versión de prueba compartida de IP, así que confirme que meta.access.mode es api_key al integrar una cuenta.
Utilice type: username como nombre de usuario o apodo. Establezca forceToGenderize en true para inferir el género a partir del significado de un alias como prenses, incluso cuando no se pueda extraer ningún nombre real. Primero se verifica el conjunto de datos. Una predicción de apodo puede devolver un género incluso cuando name: null.
Elija un lenguaje de programación.Configura tu clave API, luego ejecute el ejemplo en su servidor.
Cada solicitud de predicción es una nueva operación facturable, incluidos los reintentos. Estos ejemplos no se reintentan automáticamente. Verifique el estado de facturación antes de enviar otra solicitud.
Antes de ejecutar: acceso y manejo de errores
Ejecute estos ejemplos en su servidor. Configure GENDERAPI_API_KEY en el entorno de proceso con su clave API existente. Confirme 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. Verifique 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\":\"username\",\"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\":\"username\",\"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.}
Esta respuesta sintética ilustra la forma del JSON, sin precisión medida ni resultado en vivo garantizado. Muestra el acceso de prueba IP; una operación autenticada informa los campos de cuota de solo prueba meta.access.mode: api_key y null. Lea los datos para la inferencia y meta.usage para el resultado de facturación de la operación.
Este ejemplo utiliza forceToGenderize: true. Si el conjunto de datos identifica un género, el costo es 1 crédito. De lo contrario, la IA interpreta el alias y una solicitud completa cuesta 2 créditos en total, incluso si el género sigue siendo desconocido. Omita ai_mode o configúrelo en fallback. El uso de off o always junto con forceToGenderize devuelve HTTP 422.
En modo apodo, se permite una predicción de género con name: null. Significa que no se extrajo ningún nombre real, no que el análisis haya fallado. Si IA devuelve un género, se devuelven sample_count: null y confidence_kind: model_reported. La puntuación no es una probabilidad calibrada y no verifica la identidad personal.
Sin forceToGenderize, una búsqueda de nombre de usuario único todavía tiene como valor predeterminado IA fallback ordinario por 1 crédito en total, pero requiere un nombre de pila real utilizable. Utilice options.ai_mode: off para procesamiento solo de conjuntos de datos.