DOCUMENTATION API V2

GenderAPI.io V2 : erreurs, limites et nouvelles tentatives

Gérez les Problem Details, les limites de débit et l'incertitude de facturation de GenderAPI.io V2. Vérifiez chaque erreur avant de relancer une requête facturée indépendamment.

Erreurs et codes d'état HTTP

Les erreurs applicatives utilisent application/problem+json (RFC 9457). Basez votre traitement sur les champs stables code et action, et non sur le texte lisible de detail. Pour les erreurs de validation, errors contient les emplacements JSON Pointer des champs concernés. Indiquez request_id lorsque vous contactez l'assistance. Les défaillances de proxy ou de transport peuvent renvoyer un autre corps ; vérifiez Content-Type avant d'analyser le JSON.

L'exemple synthétique 422 ci-dessous montre une syntaxe d'adresse e-mail non valide détectée avant facturation. Le catalogue public des erreurs répertorie chaque code, statut, explication et action suggérée.

Statut HTTPSignification typiqueÉtape suivante
400 / 413 / 415JSON mal formé, corps trop volumineux ou type de média non pris en charge.Corrigez la requête.
401 / 403Accès refusé, restriction de compte ou crédits insuffisants.Consultez code ; corrigez l'accès, rechargez des crédits ou attendez la réinitialisation de l'essai.
422Entrée non valide ou options incompatibles.Corrigez les champs identifiés dans errors.
404 / 405Route inconnue ou méthode HTTP non prise en charge.Vérifiez le chemin du point de terminaison et l'en-tête de réponse Allow.
429Limite de débit ou de concurrence.Attendez le délai indiqué par Retry-After avant d'envoyer une autre requête.
500Défaillance inattendue du serveur.Contactez l'assistance avec request_id ; vérifiez la facturation avant de réessayer.
502 / 503 / 504Défaillance du fournisseur, d'une dépendance ou de la facturation, ou délai d'attente dépassé.Examinez code, action et billing_status avant de réessayer.
Réponse JSON illustrative
{
  "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
    }
  }
}

Champs de la réponse d'erreur

ChampTypePeut valoir nullExempleDescription
typestringNon"urn:genderapi:problem:validation_error"URI identifiant le type de problème.
titlestringNon"validation error"Titre court de l'erreur, lisible par une personne.
statusintegerNon422Code de statut HTTP.
detailstringNon"The request does not match the schema."Explication de cet échec précis.
instancestringNon"urn:uuid:550e8400-e29b-41d4-a716-446655440000"Identifiant de la requête échouée.
codestringNon"validation_error"Code d'erreur stable exploitable par un logiciel.
request_idstringNon"550e8400-e29b-41d4-a716-446655440000"Identifiant unique de cette tentative HTTP ; également envoyé dans X-Request-ID.
documentationstringNon"https://api.genderapi.io/api/v2/errors"Lien vers le catalogue d'erreurs, s'il est fourni.
actionstringNon"correct_request"Action de résolution suggérée, lorsqu'elle est définie dans le catalogue d'erreurs.
errorsarray<object>Non[{"pointer":"/value","message":"must NOT have fewer than 1 characters"}]Problèmes de validation, si disponibles. Chaque élément contient pointer et message.
errors[].pointerstringNon"/value"JSON Pointer identifiant l'entrée non valide.
errors[].messagestringNon"must NOT have fewer than 1 characters"Explication du problème de validation.

Accès, facturation et métadonnées de la requête

ChampTypePeut valoir nullExempleDescription
meta.request_idstringNon"550e8400-e29b-41d4-a716-446655440000"Identifiant unique de cette tentative HTTP ; également envoyé dans X-Request-ID.
meta.duration_msintegerNon42Durée de traitement de la requête en millisecondes.
meta.access.modestringNon"api_key"api_key, ip_trial ou unauthenticated. Vérifiez api_key lorsque vous utilisez un compte payant.
meta.access.reasonstringOuinullMotif du passage à l'essai : api_key_missing, api_key_invalid ou api_key_not_found ; null sinon.
meta.usage.charged_creditsintegerOui1Crédits nets débités. Zéro avant débit ou après remboursement intégral confirmé ; null si la facturation n'est pas confirmée.
meta.usage.remaining_creditsintegerOui99Solde à la fin de l'opération. Peut être négatif ; null si indisponible ou si la facturation n'est pas confirmée.
meta.usage.billing_statusstringNon"confirmed"not_charged, confirmed ou unconfirmed. Vérifiez ce champ avant de relancer une prédiction échouée.
meta.usage.resets_atstringOui"2026-09-27T12:00:00.000Z"Réinitialisation de l'essai par IP en UTC (ISO 8601) ; null pour les comptes avec clé API ou si inconnue.
meta.usage.limitintegerOui10Crédits de l'essai par IP ; null pour les comptes avec clé API.
meta.usage.period_secondsintegerOui86400Durée de l'essai par IP en secondes ; null pour les comptes avec clé API.

Nouvelles tentatives et facturation

Chaque requête de prédiction est une nouvelle opération, y compris une requête identique renvoyée. Les règles de crédit habituelles s'appliquent à chaque requête. Il n'existe aucune protection contre les requêtes en double ; évitez donc les nouvelles tentatives automatiques après une perte de connexion ou une issue incertaine.

Pour une réponse 429, attendez le délai indiqué par Retry-After avant d'envoyer une autre requête. En cas d'échec de prédiction, examinez d'abord code, action et meta.usage.billing_status. Pour billing_reconciliation_required ou une facturation unconfirmed, contactez l'assistance avec request_id avant de réessayer.

Un lot partiellement réussi peut renvoyer HTTP 200. Vérifiez chaque élément et ne soumettez de nouveau que les éléments échoués une fois la facturation confirmée ; les éléments réussis seraient facturés une seconde fois.

X-Request-ID et meta.request_id identifient la tentative HTTP en cours. Consultez /usage pour connaître le solde actuel. HEAD ne déclenche aucune prédiction facturable. Les réponses de prédiction et de compte ne peuvent pas être mises en cache.

Les clients doivent tolérer l'ajout de nouveaux champs de réponse et conserver les valeurs null lorsque l'information n'est pas disponible.

Limites de requêtes

Gérez HTTP 429 et Retry-After au lieu de supposer que les requêtes seront toujours acceptées jusqu'à ces plafonds. La capacité du service est partagée. Les valeurs indiquées sont les valeurs par défaut actuelles du service. Les réponses de limitation incluent X-RateLimit-Limit, X-RateLimit-Remaining et X-RateLimit-Reset (secondes Unix). Retry-After est un délai en secondes. Ces en-têtes décrivent les limites de requêtes, et non les crédits restants. Même la consultation gratuite de /usage est prise en compte dans les limites de débit.

LimiteValeur
Corps de la requête JSON64 KiB maximum
Valeur de prédiction1 à 254 caractères
Lot50 éléments avec une clé API ; 10 avec l'essai par IP
Débit par compte120 requêtes par minute
Débit par IP600 requêtes par minute
Opérations simultanées2 par compte ; 16 pour l'ensemble du service