DOCUMENTAZIONE API V2

GenderAPI.io V2: errori, limiti e nuovi tentativi

Gestisci Problem Details, limiti delle richieste e addebiti incerti in GenderAPI.io V2. Esamina ogni errore prima di ripetere una richiesta, che viene addebitata in modo indipendente.

Errori e codici di stato HTTP

Gli errori dell'applicazione usano application/problem+json (RFC 9457). Basa la logica sui campi stabili code e action, non sul testo leggibile di detail. Negli errori di convalida, errors contiene i JSON Pointer dei campi interessati. Indica request_id quando contatti l'assistenza. In caso di errori del proxy o di trasmissione il corpo della risposta può essere diverso: controlla Content-Type prima di analizzare il JSON.

Il seguente esempio sintetico 422 mostra una sintassi email non valida, rilevata prima dell'addebito. Il catalogo pubblico degli errori elenca tutti i codici, gli stati, le spiegazioni e le azioni consigliate.

Stato HTTPSignificato tipicoPassaggio successivo
400 / 413 / 415JSON non valido, corpo troppo grande o tipo di contenuto non supportato.Correggi la richiesta.
401 / 403Accesso rifiutato, restrizione dell'account o crediti insufficienti.Controlla code; correggi l'accesso oppure ricarica i crediti o attendi il ripristino della prova IP.
422Input non valido o opzioni incompatibili.Correggi i campi indicati in errors.
404 / 405Percorso sconosciuto o metodo HTTP non supportato.Controlla il percorso dell'endpoint e l'intestazione di risposta Allow.
429Limite di frequenza o di operazioni simultanee.Attendi il tempo indicato in Retry-After prima di inviare un'altra richiesta.
500Errore imprevisto del server.Contatta l'assistenza indicando request_id; controlla l'addebito prima di riprovare.
502 / 503 / 504Errore del provider, di una dipendenza o dell'addebito, oppure timeout.Controlla code, action e billing_status prima di riprovare.
Esempio di risposta JSON
{
  "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
    }
  }
}

Campi della risposta di errore

CampoTipoPuò essere nullEsempioDescrizione
typestringNo"urn:genderapi:problem:validation_error"URI che identifica il tipo di problema.
titlestringNo"validation error"Breve titolo dell'errore, leggibile da una persona.
statusintegerNo422Codice di stato HTTP.
detailstringNo"The request does not match the schema."Spiegazione di questo specifico errore.
instancestringNo"urn:uuid:550e8400-e29b-41d4-a716-446655440000"Identificatore della richiesta non riuscita.
codestringNo"validation_error"Codice di errore stabile e leggibile dalle macchine.
request_idstringNo"550e8400-e29b-41d4-a716-446655440000"Identificatore univoco di questo tentativo HTTP; inviato anche in X-Request-ID.
documentationstringNo"https://api.genderapi.io/api/v2/errors"Link al catalogo degli errori, se presente.
actionstringNo"correct_request"Azione di correzione consigliata, se definita nel catalogo degli errori.
errorsarray<object>No[{"pointer":"/value","message":"must NOT have fewer than 1 characters"}]Problemi di convalida, se disponibili. Ogni elemento contiene pointer e message.
errors[].pointerstringNo"/value"JSON Pointer che identifica l'input non valido.
errors[].messagestringNo"must NOT have fewer than 1 characters"Spiegazione del problema di convalida.

Metadati di accesso, addebito e richiesta

CampoTipoPuò essere nullEsempioDescrizione
meta.request_idstringNo"550e8400-e29b-41d4-a716-446655440000"Identificatore univoco di questo tentativo HTTP; inviato anche in X-Request-ID.
meta.duration_msintegerNo42Tempo di elaborazione della richiesta in millisecondi.
meta.access.modestringNo"api_key"api_key, ip_trial o unauthenticated. Con un account a pagamento verifica che venga riportato api_key.
meta.access.reasonstringSìnullMotivo del passaggio alla prova IP: api_key_missing, api_key_invalid o api_key_not_found; altrimenti null.
meta.usage.charged_creditsintegerSì1Crediti netti addebitati. Zero prima dell'addebito o dopo un rimborso completo confermato; null se l'addebito non è confermato.
meta.usage.remaining_creditsintegerSì99Saldo al termine dell'operazione. Può essere negativo; null se non disponibile o se l'addebito non è confermato.
meta.usage.billing_statusstringNo"confirmed"not_charged, confirmed o unconfirmed. Controllalo prima di ripetere una previsione non riuscita.
meta.usage.resets_atstringSì"2026-09-27T12:00:00.000Z"Momento del ripristino della prova IP in UTC (ISO 8601); null per gli account con chiave API o se sconosciuto.
meta.usage.limitintegerSì10Quota della prova IP; null per gli account con chiave API.
meta.usage.period_secondsintegerSì86400Durata del periodo della prova IP in secondi; null per gli account con chiave API.

Nuovi tentativi e addebiti

Ogni richiesta di previsione è una nuova operazione, anche quando si reinvia una richiesta identica. A ogni richiesta si applicano le normali regole sui crediti. Non esiste una protezione contro le richieste duplicate: evita quindi i nuovi tentativi automatici dopo un'interruzione della connessione o un esito sconosciuto.

In caso di risposta 429, attendi il tempo indicato in Retry-After prima di inviare un'altra richiesta. In caso di previsioni non riuscite, controlla prima code, action e meta.usage.billing_status. In caso di billing_reconciliation_required o di addebito non confermato, contatta l'assistenza indicando request_id prima di riprovare.

Un batch riuscito solo in parte può restituire HTTP 200. Controlla ogni elemento e, dopo la conferma dell'addebito, invia di nuovo solo gli elementi non riusciti; gli elementi riusciti verrebbero addebitati un'altra volta.

X-Request-ID e meta.request_id identificano il tentativo HTTP corrente. Leggi il saldo attuale tramite /usage. HEAD non avvia una previsione a pagamento. Le risposte di previsione e dell'account non sono memorizzabili nella cache.

I client devono tollerare nuovi campi aggiunti alla risposta e conservare i valori null quando un'informazione non è disponibile.

Limiti delle richieste

Gestisci HTTP 429 e Retry-After invece di presumere che le richieste vengano sempre accettate fino a questi valori massimi. La capacità del servizio è condivisa. I valori indicati sono le impostazioni predefinite attuali del servizio. Le risposte di limitazione includono X-RateLimit-Limit, X-RateLimit-Remaining e X-RateLimit-Reset (secondi Unix). Retry-After è un'attesa in secondi. Queste intestazioni descrivono i limiti delle richieste, non i crediti residui. Anche la lettura gratuita di /usage rientra nei limiti delle richieste.

LimiteValore
Corpo della richiesta JSON64 KiB al massimo
Valore per la previsione1–254 caratteri
Batch50 elementi con una chiave API; 10 con la prova IP
Frequenza per account120 richieste al minuto
Frequenza per indirizzo IP600 richieste al minuto
Operazioni simultanee2 per account; 16 in tutto il servizio