Nomes, e-mails e nomes de usuário em lote
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
items | array<object> | Sim | — | Entre 1 e 50 itens de previsão; no máximo 10 no teste por IP. Os resultados preservam a ordem de entrada. |
items[].type | string | Sim | — | Categoria de entrada: name, email ou username. |
items[].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. |
items[].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. |
items[].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. |
items[].options | object | Não | — | Objeto com as opções de IA de cada entrada. |
items[].options.ai_mode | string | Não | off | Valores permitidos: off, fallback, always. Com forceToGenderize: true, omita este campo ou use fallback. |
items[].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. |
POST /gender/batch aceita um array items com 1 a 50 itens no acesso com chave de API, ou no máximo 10 com o teste por IP. Você pode enviar apenas nomes, apenas e-mails, apenas nomes de usuário ou misturar os três. Cada item tem seus próprios country, forceToGenderize e options. Os IDs são opcionais e precisam ser únicos.
Os resultados preservam a ordem de entrada e incluem index, o seu id opcional, charged_credits e exatamente um entre data e error. Um HTTP 200 pode conter falhas em itens, por isso verifique cada item. meta.summary informa total, succeeded, identified, unknown e failed. Uma previsão desconhecida é um item bem-sucedido e cobrado.
Uma falha de validação ou de planejamento da requisição rejeita o lote antes do débito. Se todos os itens executados falharem, a API retorna uma resposta Problem diferente de 2xx com um array data e o alias legado results. Itens com falha custam zero após um reembolso confirmado. Se a cobrança não estiver confirmada, não presuma que os valores cobrados por item são definitivos.
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. Em respostas de lote com HTTP 200, verifique também data ou error de cada item.
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
Interpretar uma resposta de lote
Este exemplo combina dois resultados reais obtidos em 1º de outubro de 2026, uma correspondência no conjunto de dados e um resultado desconhecido, com uma falha ilustrativa do provedor. Ele mostra uma resposta HTTP 200 com sucesso parcial, não a saída esperada da requisição em lote acima. Os dois itens bem-sucedidos custam 1 crédito cada; o item com falha tem cobrança zero confirmada.
{
"data": [
{
"index": 0,
"id": "known",
"charged_credits": 1,
"data": {
"input": {
"type": "name",
"value": "Beatriz",
"country": "BR"
},
"name": "beatriz",
"gender": "female",
"country": "BR",
"confidence": 0.9921450737005431,
"confidence_kind": "observed_frequency",
"sample_count": 10312,
"source": "dataset",
"result_status": "identified",
"reason": null,
"country_source": "dataset",
"match": {
"name": "beatriz",
"method": "normalized",
"scope": "country",
"country": "BR"
}
}
},
{
"index": 1,
"id": "missing",
"charged_credits": 1,
"data": {
"input": {
"type": "name",
"value": "zzzxxyy",
"country": null
},
"name": null,
"gender": null,
"country": null,
"confidence": null,
"confidence_kind": null,
"sample_count": null,
"source": "none",
"result_status": "unknown",
"reason": "not_found",
"country_source": null,
"match": {
"name": null,
"method": null,
"scope": null,
"country": null
}
}
},
{
"index": 2,
"id": "failed",
"charged_credits": 0,
"error": {
"type": "urn:genderapi:problem:ai_upstream_error",
"title": "ai upstream error",
"status": 502,
"detail": "The AI provider could not complete the request.",
"instance": "urn:uuid:11111111-1111-4111-8111-111111111111",
"code": "ai_upstream_error",
"request_id": "11111111-1111-4111-8111-111111111111",
"documentation": "https://api.genderapi.io/api/v2/errors",
"action": "inspect_billing_before_retry"
}
}
],
"meta": {
"request_id": "11111111-1111-4111-8111-111111111111",
"duration_ms": 12,
"access": {
"mode": "ip_trial",
"reason": "api_key_missing"
},
"usage": {
"charged_credits": 2,
"remaining_credits": 6,
"billing_status": "confirmed",
"resets_at": "2026-09-26T12:00:00.000Z",
"limit": 10,
"period_seconds": 86400
},
"summary": {
"total": 3,
"succeeded": 2,
"identified": 1,
"unknown": 1,
"failed": 1
}
}
}Campos dos resultados do lote
| Campo | Tipo | Pode ser null | Exemplo | Descrição |
|---|---|---|---|---|
data | array<object> | Não | […] | Resultados ordenados. Cada item contém uma previsão ou um erro; verifique todos os itens. |
data[].index | integer | Não | 0 | Posição no array items enviado, começando em zero. |
data[].id | string | Não | "contact-1" | Seu identificador de entrada, presente apenas quando fornecido. |
data[].charged_credits | integer | Não | 1 | Cobrança líquida do item após reembolsos confirmados. Não a considere definitiva se a cobrança geral não estiver confirmada. |
data[].data | object | Não | {…} | Presente em itens bem-sucedidos, inclusive resultados desconhecidos. Usa os campos de previsão documentados no guia de respostas. |
data[].error | object | Não | {…} | Presente em itens com falha, no lugar de data. Usa os campos de Problem Details documentados no guia de erros. |
Campos do resumo do lote
| Campo | Tipo | Pode ser null | Exemplo | Descrição |
|---|---|---|---|---|
meta.summary.total | integer | Não | 3 | Número total de itens no lote. |
meta.summary.succeeded | integer | Não | 2 | Itens bem-sucedidos, inclusive previsões desconhecidas. |
meta.summary.identified | integer | Não | 1 | Itens bem-sucedidos com gênero diferente de null. |
meta.summary.unknown | integer | Não | 1 | Itens bem-sucedidos com gênero null; esses resultados são cobrados. |
meta.summary.failed | integer | Não | 1 | Itens com falha. total = succeeded + failed; succeeded = identified + unknown. |
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. |
Planejar créditos e novas tentativas em lote
Autentique-se com sua chave de API existente no cabeçalho Bearer e envie Content-Type: application/json. Cada lote enviado é uma nova operação. Ao fazer uma nova tentativa após uma falha parcial, envie apenas os itens com falha depois de verificar a cobrança; reenviar itens bem-sucedidos gera uma nova cobrança.
Por padrão, itens de lote usam a IA desativada (off) e custam 1 crédito por item bem-sucedido. fallback explícito também custa 1 no total, incluindo a IA. always custa 2. forceToGenderize custa 1 para um resultado encontrado no conjunto de dados ou 2 se a IA for usada. Resultados desconhecidos bem-sucedidos são cobrados. Um saldo inicial positivo, mesmo de 1 crédito, basta para iniciar o lote; a cobrança final pode deixar o saldo negativo.
Processar uma lista de contatos sem perder nenhuma linha
O endpoint de lote aceita listas só de nomes, listas só de endereços de e-mail e entradas mistas. Com uma chave de API, divida o trabalho em lotes de no máximo 50 itens; o teste por IP permite no máximo 10 por requisição. Acompanhe a sua posição no trabalho e atribua a cada item um id único dentro do lote. O index retornado começa em zero dentro do lote enviado, não da lista de contatos inteira.
| Passo | O que salvar ou verificar | Por que isso importa |
|---|---|---|
| 1. Prepare cada lote | Guarde a linha de origem e o id do item; defina country e as opções de IA para cada item. | Não presuma que um nome é único entre todos os contatos. |
| 2. Leia a resposta inteira | Salve meta.request_id e associe cada item de data[] pelo id ou pelo index. | Uma resposta HTTP 200 pode conter tanto previsões bem-sucedidas quanto erros em itens individuais. |
| 3. Salve os resultados bem-sucedidos | Guarde as previsões identificadas e desconhecidas, incluindo valores JSON null e os campos de evidência. | Um resultado desconhecido foi concluído e cobrado; não é uma linha com falha para reenviar automaticamente. |
| 4. Reconcilie erros e créditos | Verifique cada error e meta.usage.billing_status antes de decidir enviar uma nova requisição. | Depois que a cobrança for confirmada, faça uma nova tentativa apenas com os itens com falha cujo erro justifique isso. Itens bem-sucedidos seriam cobrados novamente. |
| 5. Adie novas tentativas incertas | Salve o ID da requisição se a cobrança não estiver confirmada ou se um erro de rede deixar o resultado desconhecido. | Não reenvie o lote inteiro às cegas; siga primeiro as orientações sobre erros e cobrança. |
Escolher um modo de previsão para cada contato
Esta requisição executável usa três regras diferentes: apenas o conjunto de dados para um nome completo, o fallback de IA comum para um endereço de e-mail e o fallback de IA com interpretação de apelidos para um nome de usuário. São entradas de exemplo, não a promessa de que os três contatos receberão um gênero. Escolha uma linguagem de programação acima do código e defina GENDERAPI_API_KEY antes de executar o exemplo.
Sem forceToGenderize, a IA fica em off por padrão nos itens de lote, ao contrário das consultas individuais. Informe fallback explicitamente se quiser usar o fallback de IA comum. Tanto off quanto o fallback comum custam 1 crédito por item bem-sucedido; always ignora o conjunto de dados e custa 2. forceToGenderize custa 1 para um resultado encontrado no conjunto de dados ou 2 no total se a IA for usada. Resultados desconhecidos bem-sucedidos também são cobrados. Não combine forceToGenderize com off ou always.
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. Em respostas de lote com HTTP 200, verifique também data ou error de cada item.
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