Referência dos campos type, value, country, forceToGenderize e ai_mode do GenderAPI V2, com as diferenças entre parâmetros GET e corpos JSON de solicitações POST.
Parâmetros de previsão únicos
Os campos opcionais devem ser omitidos quando não utilizados; não envie null ou strings vazias no lugar de country ou options. Os booleanos JSON devem ser true ou false, não strings. O texto UTF-8 é suportado; os nomes não precisam ser transliterados para ASCII.
GET usa type, value, country, forceToGenderize e ai_mode diretamente na string de consulta, além de key opcional. Codifique valores com o codificador de parâmetro de URL do seu cliente HTTP; por exemplo @ torna-se %40. Para booleanos GET, envie true ou false. Campos desconhecidos e valores inválidos são rejeitados.
Campo JSON
Tipo
Regra
type
string
Obrigatório para POST: name, email ou username. O padrão GET é name.
value
string
Obrigatório. 1–254 caracteres; não em branco, sem caracteres de controle. Os valores de email devem ter uma sintaxe de email válida.
country
string
Código ISO 3166-1 alpha-2 maiúsculo opcional, por exemplo TR ou US. A pesquisa específica do país pode recorrer ao conjunto de dados global.
forceToGenderize
boolean
Opcional; o padrão é false. Primeiro, pesquise o conjunto de dados. Se nenhum gênero puder ser determinado, use IA para interpretar o apelido. Compatível com todos os três tipos de entrada.
options.ai_mode
string
off, fallback ou always. O padrão é fallback para solicitações únicas e off para itens em lote.
id
string
Identificador opcional com 1 a 64 caracteres no corpo POST JSON. Deve ser exclusivo dentro de um lote e é retornado com o resultado do lote. As solicitações únicas aceitam esse identificador, mas não o incluem na resposta. Consultas GET não suportam isso.
Antes de enviar a solicitação
Envie JSON para POST https://api.genderapi.io/api/v2/gender. Use sua chave API existente em Authorization: Bearer YOUR_API_KEY e Content-Type: application/json. Cada solicitação é processada de forma independente.
Escolha seu idioma no exemplo de código. Configure GENDERAPI_API_KEY no ambiente do processo antes de executá-lo. Chaves ausentes ou não reconhecidas podem usar a avaliação IP compartilhada, portanto, confirme que meta.access.mode é api_key ao integrar uma conta.
Este exemplo usa os campos de solicitação compartilhados para uma pesquisa de nome. Altere type e value para um e-mail ou nome de usuário ou defina options.ai_mode e forceToGenderize conforme descrito acima.
Escolha uma linguagem de programação.Configure sua chave API, e execute o exemplo em seu servidor.
Cada solicitação de previsão é uma nova operação faturável, incluindo novas tentativas. Esses exemplos não repetem automaticamente. Verifique o status do faturamento antes de enviar outra solicitação.
Antes de executar: acesso e tratamento de erros
Execute estes exemplos em seu servidor. Configure GENDERAPI_API_KEY no ambiente de processo para sua chave API existente. Confirme que meta.access.mode é api_key: uma chave não reconhecida pode retornar à avaliação IP.
As respostas HTTP 4xx e 5xx JSON preservam o corpo do erro e retornam um status de saída diferente de zero. Verifique code, action e meta.usage.billing_status antes de tentar novamente.
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\":\"Onur\",\"country\":\"TR\"}")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.
import java.net.URI;import java.net.http.HttpClient;import java.net.http.HttpRequest;import java.net.http.HttpResponse;import java.nio.charset.StandardCharsets;import java.time.Duration;public class GenderApiExample { private static String requiredEnv(String name) { String value = System.getenv(name); if (value == null || value.isBlank()) throw new IllegalStateException("Set " + name); return value; } public static void main(String[] args) throws Exception { String apiKey = requiredEnv("GENDERAPI_API_KEY"); String body = "{\"type\":\"name\",\"value\":\"Onur\",\"country\":\"TR\"}"; HttpClient client = HttpClient.newBuilder() .connectTimeout(Duration.ofSeconds(10)) .followRedirects(HttpClient.Redirect.NEVER) .build(); HttpRequest request = HttpRequest.newBuilder(URI.create("https://api.genderapi.io/api/v2/gender")) .timeout(Duration.ofSeconds(30)) .header("Authorization", "Bearer " + apiKey) .header("Content-Type", "application/json") .POST(HttpRequest.BodyPublishers.ofString(body, StandardCharsets.UTF_8)) .build(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString(StandardCharsets.UTF_8)); if (!response.headers().firstValue("content-type").orElse("").contains("json")) { throw new IllegalStateException("HTTP " + response.statusCode() + ": expected JSON"); } // JSON text; parse with your application's JSON library when integrating. if (response.statusCode() < 200 || response.statusCode() >= 300) { System.err.println(response.body()); // Includes Problem Details. System.exit(1); } System.out.println(response.body()); // For batches, inspect each item's data or error, including on HTTP 200. }}
Java 17+; cliente HTTP padrão. Salve como GenderApiExample.java e execute java GenderApiExample.java. Documentação de tempo de execução
C# / .NET
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\":\"Onur\",\"country\":\"TR\"}", 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.}