DOCUMENTAÇÃO DA API V2

Erros e novas tentativas na API V2

Trate Problem Details, erros de validação, limites de requisições e incertezas de cobrança da GenderAPI.io V2. Entenda a cobrança de novas tentativas e quando entrar em contato com o suporte.

Erros e códigos de status HTTP

Erros da aplicação usam application/problem+json (RFC 9457). Baseie a lógica nos campos estáveis code e action, não no texto legível de detail. Erros de validação incluem em errors a localização em JSON Pointer. Informe o request_id ao entrar em contato com o suporte. Falhas de proxy ou de transporte podem retornar um corpo diferente; por isso, verifique Content-Type antes de interpretar o JSON.

O exemplo sintético 422 a seguir mostra uma sintaxe de e-mail inválida antes da cobrança. O catálogo público de erros lista cada código, status, explicação e ação sugerida.

Status HTTPSignificado típicoPróximo passo
400 / 413 / 415JSON malformado, corpo grande demais ou tipo de mídia não suportado.Corrija a requisição.
401 / 403Acesso recusado, restrição da conta ou créditos insuficientes.Verifique code; corrija o acesso ou recarregue créditos / aguarde a renovação do teste por IP.
422Entrada inválida ou opções incompatíveis.Corrija os campos indicados em errors.
404 / 405Rota desconhecida ou método HTTP não suportado.Verifique o caminho do endpoint e o cabeçalho de resposta Allow.
429Limite de taxa ou de simultaneidade.Aguarde o tempo de Retry-After antes de enviar outra requisição.
500Falha inesperada no servidor.Entre em contato com o suporte informando o request_id; verifique a cobrança antes de fazer uma nova tentativa.
502 / 503 / 504Falha do provedor, de uma dependência, da cobrança ou por tempo limite esgotado.Verifique code, action e billing_status antes de fazer uma nova tentativa.
Resposta JSON ilustrativa
{
  "type": "urn:genderapi:problem:validation_error",
  "title": "validation error",
  "status": 422,
  "detail": "A valid email address is required.",
  "instance": "urn:uuid:11111111-1111-4111-8111-111111111111",
  "code": "validation_error",
  "request_id": "11111111-1111-4111-8111-111111111111",
  "documentation": "https://api.genderapi.io/api/v2/errors",
  "action": "correct_request",
  "errors": [
    {
      "pointer": "/value",
      "message": "Invalid email address."
    }
  ],
  "meta": {
    "request_id": "11111111-1111-4111-8111-111111111111",
    "duration_ms": 12,
    "access": {
      "mode": "ip_trial",
      "reason": "api_key_missing"
    },
    "usage": {
      "charged_credits": 0,
      "remaining_credits": null,
      "billing_status": "not_charged",
      "resets_at": "2026-09-26T12:00:00.000Z",
      "limit": 10,
      "period_seconds": 86400
    }
  }
}

Campos da resposta de erro

CampoTipoPode ser nullExemploDescrição
typestringNão"urn:genderapi:problem:validation_error"URI que identifica o tipo de problema.
titlestringNão"validation error"Título curto do erro, legível por pessoas.
statusintegerNão422Código de status HTTP.
detailstringNão"The request does not match the schema."Explicação desta falha específica.
instancestringNão"urn:uuid:550e8400-e29b-41d4-a716-446655440000"Identificador da requisição com falha.
codestringNão"validation_error"Código de erro estável, legível por máquina.
request_idstringNão"550e8400-e29b-41d4-a716-446655440000"Identificador único desta tentativa HTTP; também enviado em X-Request-ID.
documentationstringNão"https://api.genderapi.io/api/v2/errors"Link para o catálogo de erros, quando fornecido.
actionstringNão"correct_request"Ação de recuperação sugerida, quando definida no catálogo de erros.
errorsarray<object>Não[{"pointer":"/value","message":"must NOT have fewer than 1 characters"}]Problemas de validação, quando disponíveis. Cada item contém pointer e message.
errors[].pointerstringNão"/value"JSON Pointer que identifica a entrada inválida.
errors[].messagestringNão"must NOT have fewer than 1 characters"Explicação do problema de validação.

Metadados de acesso, cobrança e requisição

CampoTipoPode ser nullExemploDescrição
meta.request_idstringNão"550e8400-e29b-41d4-a716-446655440000"Identificador único desta tentativa HTTP; também enviado em X-Request-ID.
meta.duration_msintegerNão42Tempo de processamento da requisição em milissegundos.
meta.access.modestringNão"api_key"api_key, ip_trial ou unauthenticated. Verifique api_key ao usar uma conta paga.
meta.access.reasonstringSimnullMotivo do uso do teste por IP: api_key_missing, api_key_invalid ou api_key_not_found; caso contrário, null.
meta.usage.charged_creditsintegerSim1Cré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_creditsintegerSim99Saldo ao concluir a operação. Pode ser negativo; null se indisponível ou se a cobrança não estiver confirmada.
meta.usage.billing_statusstringNão"confirmed"not_charged, confirmed ou unconfirmed. Verifique antes de repetir uma previsão com falha.
meta.usage.resets_atstringSim"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.limitintegerSim10Cota do teste por IP; null para contas com chave de API.
meta.usage.period_secondsintegerSim86400Janela do teste por IP em segundos; null para contas com chave de API.

Novas tentativas e cobrança

Cada requisição de previsão é uma nova operação, inclusive uma requisição idêntica enviada novamente. As regras normais de créditos se aplicam a cada requisição. Não há proteção contra requisições duplicadas; por isso, evite novas tentativas automáticas após uma perda de conexão ou quando o resultado da operação for desconhecido.

Em uma resposta 429, aguarde o tempo de Retry-After antes de enviar outra requisição. Em falhas de previsão, verifique primeiro code, action e meta.usage.billing_status. Em caso de billing_reconciliation_required ou de cobrança não confirmada, entre em contato com o suporte informando o request_id antes de fazer uma nova tentativa.

Um lote parcialmente bem-sucedido pode retornar HTTP 200. Verifique cada item e reenvie apenas os itens com falha depois que a cobrança for confirmada; itens bem-sucedidos seriam cobrados novamente se fossem reenviados.

X-Request-ID e meta.request_id identificam a tentativa HTTP atual. Consulte /usage para ver o saldo atual. HEAD não inicia uma previsão cobrada. Respostas de previsão e de conta não podem ser armazenadas em cache.

Os clientes devem tolerar novos campos adicionados à resposta e preservar valores null quando a informação não estiver disponível.

Limites de requisições

Trate HTTP 429 e Retry-After em vez de presumir que as requisições sempre serão aceitas até esses limites. A capacidade do serviço é compartilhada. Os valores mostrados são os padrões atuais do serviço. Respostas de limite de taxa incluem X-RateLimit-Limit, X-RateLimit-Remaining e X-RateLimit-Reset (segundos Unix). Retry-After é um intervalo em segundos. Esses cabeçalhos descrevem limites de requisições, não créditos restantes. Até a consulta gratuita a /usage conta para os limites de taxa.

LimiteValor
Corpo JSON da requisiçãoNo máximo 64 KiB
Valor da previsão1–254 caracteres
Lote50 itens com chave de API; 10 com o teste por IP
Limite por conta120 requisições por minuto
Limite por IP600 requisições por minuto
Operações simultâneas2 por conta; 16 em todo o serviço