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 nome
| 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: name para um primeiro nome ou um nome completo. Uma resposta bem-sucedida ainda pode conter gender: null. Requisições individuais consultam primeiro o conjunto de dados e, por padrão, recorrem à IA quando não é possível determinar um gênero.
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": "name",
"value": "João",
"country": "BR"
},
"name": "joão",
"gender": "male",
"country": "BR",
"confidence": 0.995472640699399,
"confidence_kind": "observed_frequency",
"sample_count": 25622,
"source": "dataset",
"result_status": "identified",
"reason": null,
"country_source": "dataset",
"match": {
"name": "joão",
"method": "normalized",
"scope": "country",
"country": "BR"
}
},
"meta": {
"request_id": "ddd9cbc6-6728-4ecb-b6ec-4d4c706daf83",
"duration_ms": 21,
"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. |
Contexto de país e nomes desconhecidos
Informe o país somente quando tiver um contexto relevante. A API pode selecionar uma linha do conjunto de dados específica do país ou recorrer a uma linha global. data.match.scope mostra qual foi selecionada; o país retornado não indica onde a pessoa mora.
Por padrão, requisições individuais usam o fallback de IA por 1 crédito no total. Para usar apenas o conjunto de dados, envie options: {"ai_mode": "off"}. Entradas sem resultado podem retornar gender: null e continuam sendo cobradas quando a operação é bem-sucedida. Um nome completo pode corresponder a uma de suas partes; data.match registra o candidato selecionado e o método de correspondência.
Para valores de nome que parecem apelidos, forceToGenderize: true permite uma inferência sem um nome real: um resultado encontrado no conjunto de dados custa 1 crédito; caso contrário, a IA com interpretação de apelidos custa 2 créditos no total. Um saldo inicial positivo é suficiente, e o saldo resultante pode ficar negativo.
Consultar um nome completo sem presumir que a primeira palavra é a que conta
Envie o nome original em Unicode. A correspondência com o conjunto de dados usa normalização NFKC, letras minúsculas e extração das partes do nome; você não precisa converter o nome para ASCII. Entre os candidatos disponíveis, a API escolhe a entrada do conjunto de dados com a maior contagem total armazenada. O candidato pode ser uma parte posterior do nome, então não presuma que a primeira palavra ou o primeiro nome foi escolhido.
Esta requisição usa apenas o conjunto de dados, o que facilita verificar as evidências selecionadas. Leia data.input.value para o nome completo enviado, data.match.name para o candidato consultado e data.match.method para o método de correspondência. O exemplo não promete um gênero específico nem uma determinada parte do nome selecionada. Os candidatos do conjunto de dados precisam ter mais de dois caracteres, e entradas curtas podem ficar sem resultado. Use o fallback de IA comum quando a previsão adicional for adequada à sua aplicação.
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
Verificar qual contexto de país realmente contribuiu
Use um código de país ISO somente quando tiver um contexto relevante; não o deduza do resultado previsto. Para cada candidato, uma linha de país existente tem prioridade sobre a linha global do mesmo candidato. Se não houver linha de país, o candidato pode usar uma linha global. Uma linha de país empatada não é substituída pela sua linha global: se a linha selecionada estiver empatada, o resultado do conjunto de dados é unknown e um fallback de IA ativado pode entrar em ação.
| Evidência na resposta | Interpretação | Ação na aplicação |
|---|---|---|
| match.scope: country; match.country: TR | O candidato selecionado no conjunto de dados vem da linha do país informado na requisição. | Salve o candidato selecionado e o escopo de país junto com a previsão. |
| match.scope: global; match.country: null | O candidato selecionado vem de uma linha global, mesmo que a requisição tenha informado um país. | Não marque o resultado como correspondência específica do país. |
| country_source: dataset ou ai_association | Explica a origem de data.country, não o escopo da consulta ao conjunto de dados nem a nacionalidade da pessoa. | Leia esse campo separadamente de match.country; nenhum dos dois confirma residência ou nacionalidade. |
| source: ai; match.scope: null | A resposta final vem da IA, portanto não contém uma linha selecionada do conjunto de dados. | Siga as orientações sobre confiança para resultados da IA e preserve os resultados desconhecidos. |