Antes de enviar a requisição
Envie JSON para POST https://api.genderapi.io/api/v2/gender. Use sua chave de API existente em Authorization: Bearer YOUR_API_KEY e Content-Type: application/json. Cada requisição é processada de forma independente.
Escolha sua linguagem no exemplo de código. Defina GENDERAPI_API_KEY no ambiente do processo antes de executá-lo. Chaves ausentes ou não reconhecidas podem usar o teste por IP compartilhado; por isso, confirme que meta.access.mode é api_key ao integrar uma conta.
Gênero a partir de um endereço de e-mail
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
type | string | Sim | — | Categoria de entrada: name, email ou username. |
value | string | Sim | — | Obrigatório. 1–254 caracteres; não pode estar em branco nem conter caracteres de controle. Valores de e-mail precisam ter sintaxe de e-mail válida. |
country | string | Não | — | Código ISO 3166-1 alfa-2 opcional em maiúsculas, por exemplo TR ou US. A consulta específica do país pode recorrer ao conjunto de dados global. |
forceToGenderize | boolean | Não | false | Consulta primeiro o conjunto de dados e, se não houver resultado, usa a IA com interpretação de apelidos. Aceito em name, email e username. |
options | object | Não | — | Objeto com as opções de IA de cada entrada. |
options.ai_mode | string | Não | fallback | Valores permitidos: off, fallback, always. Com forceToGenderize: true, omita este campo ou use fallback. |
id | string | Não | — | Identificador opcional de 1 a 64 caracteres no JSON do POST. É retornado junto com cada resultado do lote e deve ser único dentro do lote. Em previsões individuais, é aceito, mas não é devolvido. Não é aceito em consultas GET. |
Use type: email. A API procura um sinal de nome utilizável no endereço. Caixas de e-mail compartilhadas e partes locais sem significado reconhecível podem gerar um resultado desconhecido. forceToGenderize também é opcional aqui; ele permite uma inferência de IA a partir de um alias, mesmo sem um nome real.
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.
Guia de erros e novas tentativas →cURL 7.76+ em um shell POSIX. Execute no seu terminal. Documentação do ambiente de execução
Node.js 22+; fetch nativo. Salve como example.mjs e execute node example.mjs. Documentação do ambiente de execução
Python 3.10+; biblioteca padrão. Salve como example.py e execute python3 example.py. Documentação do ambiente de execução
PHP 8+ com a extensão cURL. Salve como example.php e execute php example.php. Documentação do ambiente de execução
Java 17+; cliente HTTP padrão. Salve como GenderApiExample.java e execute java GenderApiExample.java. Documentação do ambiente de execução
Aplicação de console .NET 8+. Use como Program.cs em um projeto de console e depois execute dotnet run. Documentação do ambiente de execução
Go 1.22+; biblioteca padrão. Salve como main.go e execute go run main.go. Documentação do ambiente de execução
Exemplo de resposta
Esta é uma resposta real obtida em 1º de outubro de 2026 com uma chave de API; apenas o saldo da conta foi substituído. Ela não é uma medida de precisão, e uma requisição real pode retornar um resultado diferente. Requisições com chave de API informam meta.access.mode: api_key e retornam null nos campos de cota exclusivos do teste; requisições pelo teste por IP informam ip_trial. Leia data para a inferência e meta.usage para o resultado da cobrança da operação.
{
"data": {
"input": {
"type": "email",
"value": "alice.smith@example.com",
"country": "US"
},
"name": "alice",
"gender": "female",
"country": "US",
"confidence": 0.9932550587059705,
"confidence_kind": "observed_frequency",
"sample_count": 4003,
"source": "dataset",
"result_status": "identified",
"reason": null,
"country_source": "dataset",
"match": {
"name": "alice",
"method": "token",
"scope": "country",
"country": "US"
}
},
"meta": {
"request_id": "7c22993d-454f-4f61-8b4b-d1154d3b89ff",
"duration_ms": 13,
"access": {
"mode": "api_key",
"reason": null
},
"usage": {
"charged_credits": 1,
"remaining_credits": 49999,
"billing_status": "confirmed",
"resets_at": null,
"limit": null,
"period_seconds": null
}
}
}Campos da resposta de previsão
| Campo | Tipo | Pode ser null | Exemplo | Descrição |
|---|---|---|---|---|
data.input | object | Não | {"type":"name","value":"João","country":"BR"} | Tipo de entrada, valor e país. forceToGenderize é incluído quando for true. |
data.name | string | Sim | "joão" | Nome próprio correspondente ou extraído; null quando não houver nenhum. |
data.gender | string | Sim | "male" | male, female ou JSON null. É uma inferência, não uma identidade pessoal verificada. |
data.result_status | string | Não | "identified" | identified quando um gênero é retornado; caso contrário, unknown. |
data.reason | string | Sim | null | null para resultados identified. Motivos de resultado desconhecido: not_found, no_name_candidate, ambiguous ou insufficient_evidence. |
data.confidence | number | Sim | 0.95 | Valor de 0 a 1 ou null. Um gênero null tem confiança null. |
data.confidence_kind | string | Sim | "observed_frequency" | observed_frequency: contagem dominante no conjunto de dados / total. model_reported: valor da IA, não uma probabilidade calibrada. null quando indisponível. |
data.sample_count | integer | Sim | 1200 | Tamanho da amostra no conjunto de dados ou null. A IA não inventa uma contagem de amostras. |
data.source | string | Não | "dataset" | dataset, ai ou none. |
data.country | string | Sim | "BR" | Associação de país vinda do conjunto de dados (dataset) ou ai_association, ou null. Não indica nacionalidade, residência nem etnia. |
data.country_source | string | Sim | "dataset" | Origem da associação ao país: dataset, ai_association ou null. |
data.match | object | Não | {"name":"joão","method":"normalized","scope":"country","country":"BR"} | Nome correspondente no conjunto de dados, método (normalized, token, substring ou model_inference), escopo country/global e país da correspondência. Evidências indisponíveis são null. |
Metadados de acesso, cobrança e requisição
| Campo | Tipo | Pode ser null | Exemplo | Descrição |
|---|---|---|---|---|
meta.request_id | string | Não | "550e8400-e29b-41d4-a716-446655440000" | Identificador único desta tentativa HTTP; também enviado em X-Request-ID. |
meta.duration_ms | integer | Não | 42 | Tempo de processamento da requisição em milissegundos. |
meta.access.mode | string | Não | "api_key" | api_key, ip_trial ou unauthenticated. Verifique api_key ao usar uma conta paga. |
meta.access.reason | string | Sim | null | Motivo do uso do teste por IP: api_key_missing, api_key_invalid ou api_key_not_found; caso contrário, null. |
meta.usage.charged_credits | integer | Sim | 1 | Créditos líquidos cobrados. Zero antes da cobrança ou após reembolso integral confirmado; null se a cobrança não estiver confirmada. |
meta.usage.remaining_credits | integer | Sim | 99 | Saldo ao concluir a operação. Pode ser negativo; null se indisponível ou se a cobrança não estiver confirmada. |
meta.usage.billing_status | string | Não | "confirmed" | not_charged, confirmed ou unconfirmed. Verifique antes de repetir uma previsão com falha. |
meta.usage.resets_at | string | Sim | "2026-09-27T12:00:00.000Z" | Momento da renovação do teste por IP em UTC (ISO 8601); null para contas com chave de API ou quando desconhecido. |
meta.usage.limit | integer | Sim | 10 | Cota do teste por IP; null para contas com chave de API. |
meta.usage.period_seconds | integer | Sim | 86400 | Janela do teste por IP em segundos; null para contas com chave de API. |
Validação de e-mail e sinais de nome
O valor precisa ser um endereço de e-mail sintaticamente válido. Uma sintaxe inválida retorna HTTP 422 antes da cobrança. A validação de sintaxe não comprova que a caixa de e-mail existe nem que pertence a uma pessoa específica.
Um nome pessoal reconhecível no endereço pode corresponder ao conjunto de dados. Caixas compartilhadas, endereços de função e partes locais sem significado reconhecível podem retornar gender: null. Por padrão, uma consulta individual sem resultado usa o fallback de IA comum por 1 crédito no total, inclusive quando o resultado bem-sucedido é desconhecido.
Use forceToGenderize: true se quiser uma inferência de IA com interpretação de apelidos quando o conjunto de dados não tiver resultado. Isso custa 1 crédito para um resultado encontrado no conjunto de dados ou 2 no total se a IA for usada. A API ainda pode retornar null. O domínio do e-mail não comprova a localização da pessoa; informe um país somente quando houver um contexto relevante conhecido.