Escolha na GenderAPI.io V2 entre o modo só com conjunto de dados, fallback ou always com IA. Entenda a inferência por apelidos, os padrões por item em lotes e os custos exatos em créditos.
Modos de IA e forceToGenderize
Em corpos POST, defina options: {"ai_mode": "off"} (ou fallback / always). Em URLs GET, use ai_mode=off. Itens de lote usam off por padrão; ative fallback separadamente em cada item que precisar.
Quando forceToGenderize for true, omita ai_mode ou use fallback. Combiná-lo com off ou always retorna 422. A inferência de IA comum exige um nome real utilizável; a inferência forçada pode usar um alias. Nenhum dos modos garante um gênero diferente de null.
Um erro do conjunto de dados ou do provedor é uma requisição com falha, não uma ausência de resultado no conjunto de dados. Previsões com falha são reembolsadas; verifique billing_status antes de fazer uma nova tentativa quando o resultado da cobrança não puder ser confirmado.
Modo
Comportamento
Total de créditos por item bem-sucedido
Modooff
ComportamentoSomente o conjunto de dados; sem chamada à IA.
Total de créditos por item bem-sucedido1, inclusive para um resultado desconhecido
Modofallback
ComportamentoPrimeiro o conjunto de dados; depois a IA, se o gênero não for determinado. Padrão em requisições individuais.
Total de créditos por item bem-sucedido1, incluindo o fallback de IA
Modoalways
ComportamentoIgnora o conjunto de dados e consulta a IA diretamente.
Total de créditos por item bem-sucedido2
ModoforceToGenderize: true
ComportamentoPrimeiro o conjunto de dados; depois a IA com interpretação de apelidos, se não houver resultado. Funciona com name, email e username.
Total de créditos por item bem-sucedido1 para um resultado encontrado no conjunto de dados; 2 no total se a IA for usada
Ativar a inferência por apelidos
O mesmo campo opcional forceToGenderize funciona com type name, email e username. Este exemplo usa um apelido como valor de nome. Use sua chave de API existente no cabeçalho Bearer. Resultados desconhecidos continuam sendo resultados válidos.
Escolha uma linguagem de programação.Configure sua chave de API, depois execute o exemplo no seu servidor.
Cada requisição de previsão é uma nova operação cobrada, inclusive as novas tentativas. Estes exemplos não fazem novas tentativas automaticamente. Verifique o status da cobrança antes de enviar outra requisição.
Antes de executar: acesso e tratamento de erros
Execute estes exemplos no seu servidor. Defina GENDERAPI_API_KEY no ambiente do processo com a sua chave de API existente. Confirme que meta.access.mode é api_key: uma chave não reconhecida pode levar ao teste por IP.
Respostas JSON com HTTP 4xx e 5xx preservam o corpo do erro e retornam um código de saída diferente de zero. Verifique code, action e meta.usage.billing_status antes de fazer uma nova tentativa.
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.}