Lots de noms, d'adresses e-mail et de noms d'utilisateur
| Paramètre | Type | Obligatoire | Valeur par défaut | Description |
|---|---|---|---|---|
items | array<object> | Oui | — | Entre 1 et 50 éléments ; 10 maximum pour l'essai par IP. L'ordre d'entrée est conservé. |
items[].type | string | Oui | — | Catégorie d'entrée : name, email ou username. |
items[].value | string | Oui | — | Obligatoire. 1 à 254 caractères ; non vide et sans caractères de contrôle. Une valeur de type email doit respecter la syntaxe d'une adresse e-mail valide. |
items[].country | string | Non | — | Code ISO 3166-1 alpha-2 facultatif, en majuscules, par exemple TR ou US. La recherche propre à un pays peut se rabattre sur le jeu de données global. |
items[].forceToGenderize | boolean | Non | false | Consulte d'abord le jeu de données, puis l'IA adaptée aux surnoms si aucun résultat n'est trouvé. Compatible avec name, email et username. |
items[].options | object | Non | — | Objet contenant les options d'IA propres à chaque entrée. |
items[].options.ai_mode | string | Non | off | Valeurs autorisées : off, fallback, always. Avec forceToGenderize: true, omettez ce champ ou utilisez fallback. |
items[].id | string | Non | — | Identifiant facultatif de 1 à 64 caractères dans le corps JSON POST. Renvoyé avec chaque résultat de lot et unique au sein d'un lot. Accepté mais non renvoyé pour les prédictions individuelles. Non pris en charge dans les requêtes GET. |
GenderAPI.io V2 accepte des éléments de type nom, e-mail et nom d'utilisateur dans un même lot sur POST https://api.genderapi.io/api/v2/gender/batch. Envoyez un tableau items de 1 à 50 éléments avec une clé API, ou de 10 éléments au maximum avec l'essai par IP. Chaque élément utilise type et value et peut avoir ses propres country, forceToGenderize et options. Les id sont facultatifs et doivent être uniques au sein du lot.
Les résultats conservent l'ordre d'entrée et comprennent index, votre id facultatif, charged_credits et exactement un champ parmi data ou error. Une réponse HTTP 200 peut contenir des échecs par élément : examinez donc chaque élément. meta.summary indique total, succeeded, identified, unknown et failed. Une prédiction inconnue est un élément réussi et facturable.
Un échec de validation ou de planification de la requête rejette le lot avant tout débit. Si tous les éléments exécutés échouent, l'API renvoie une réponse Problem hors 2xx avec un tableau data et l'alias hérité results. Les éléments échoués ne coûtent rien après un remboursement confirmé. Si la facturation n'est pas confirmée, ne considérez pas les montants par élément comme définitifs.
Choisissez un langage de programmation. Configurez votre clé API, puis exécutez l'exemple sur votre serveur.
Chaque requête de prédiction est une nouvelle opération facturable, y compris les nouvelles tentatives. Ces exemples ne réessaient pas automatiquement. Vérifiez le statut de facturation avant d'envoyer une autre requête.
Avant l'exécution : accès et gestion des erreurs
Exécutez ces exemples sur votre serveur. Définissez GENDERAPI_API_KEY dans l'environnement du processus avec votre clé API existante. Vérifiez que meta.access.mode vaut api_key : une clé non reconnue peut basculer vers l'essai par IP.
Pour les réponses JSON HTTP 4xx et 5xx, les exemples conservent le corps de l'erreur et renvoient un code de sortie non nul. Vérifiez code, action et meta.usage.billing_status avant de réessayer. Pour une réponse de lot HTTP 200, examinez aussi data ou error dans chaque élément.
Guide des erreurs et des nouvelles tentatives →cURL 7.76+ dans un shell POSIX. À exécuter dans votre terminal. Documentation de l'environnement d'exécution
Node.js 22+ ; fetch intégré. Enregistrez sous example.mjs et exécutez node example.mjs. Documentation de l'environnement d'exécution
Python 3.10+ ; bibliothèque standard. Enregistrez sous example.py et exécutez python3 example.py. Documentation de l'environnement d'exécution
PHP 8+ avec l'extension cURL. Enregistrez sous example.php et exécutez php example.php. Documentation de l'environnement d'exécution
Java 17+ ; client HTTP standard. Enregistrez sous GenderApiExample.java et exécutez java GenderApiExample.java. Documentation de l'environnement d'exécution
Application console .NET 8+. Utilisez-le comme Program.cs dans un projet console, puis exécutez dotnet run. Documentation de l'environnement d'exécution
Go 1.22+ ; bibliothèque standard. Enregistrez sous main.go et exécutez go run main.go. Documentation de l'environnement d'exécution
Lire une réponse de lot
Cet exemple combine deux résultats réels obtenus le 1er octobre 2026, une correspondance dans le jeu de données et un résultat inconnu, avec un échec du fournisseur donné à titre d'illustration. Il montre une réponse HTTP 200 en réussite partielle, et non le résultat attendu de la requête de lot ci-dessus. Les deux éléments réussis coûtent chacun 1 crédit ; l'élément échoué a un débit nul confirmé.
{
"data": [
{
"index": 0,
"id": "known",
"charged_credits": 1,
"data": {
"input": {
"type": "name",
"value": "Juliette",
"country": "FR"
},
"name": "juliette",
"gender": "female",
"country": "FR",
"confidence": 0.987987987987988,
"confidence_kind": "observed_frequency",
"sample_count": 333,
"source": "dataset",
"result_status": "identified",
"reason": null,
"country_source": "dataset",
"match": {
"name": "juliette",
"method": "normalized",
"scope": "country",
"country": "FR"
}
}
},
{
"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
}
}
}Champs des résultats par lot
| Champ | Type | Peut valoir null | Exemple | Description |
|---|---|---|---|---|
data | array<object> | Non | […] | Résultats ordonnés. Chaque élément contient une prédiction ou une erreur ; vérifiez chaque élément. |
data[].index | integer | Non | 0 | Position dans le tableau items envoyé, à partir de zéro. |
data[].id | string | Non | "contact-1" | Votre identifiant d'entrée, présent uniquement s'il a été fourni. |
data[].charged_credits | integer | Non | 1 | Débit net de l'élément après remboursements confirmés. Ne le considérez pas comme définitif si la facturation globale n'est pas confirmée. |
data[].data | object | Non | {…} | Présent pour un élément réussi, y compris un résultat inconnu. Utilise les champs de prédiction du guide des réponses. |
data[].error | object | Non | {…} | Présent pour un élément échoué à la place de data. Utilise les champs Problem Details du guide des erreurs. |
Champs du résumé du lot
| Champ | Type | Peut valoir null | Exemple | Description |
|---|---|---|---|---|
meta.summary.total | integer | Non | 3 | Nombre total d'éléments du lot. |
meta.summary.succeeded | integer | Non | 2 | Éléments réussis, y compris les prédictions inconnues. |
meta.summary.identified | integer | Non | 1 | Éléments réussis dont le genre n'est pas null. |
meta.summary.unknown | integer | Non | 1 | Éléments réussis dont le genre est null ; ces résultats sont facturés. |
meta.summary.failed | integer | Non | 1 | Éléments échoués. total = succeeded + failed; succeeded = identified + unknown. |
Accès, facturation et métadonnées de la requête
| Champ | Type | Peut valoir null | Exemple | Description |
|---|---|---|---|---|
meta.request_id | string | Non | "550e8400-e29b-41d4-a716-446655440000" | Identifiant unique de cette tentative HTTP ; également envoyé dans X-Request-ID. |
meta.duration_ms | integer | Non | 42 | Durée de traitement de la requête en millisecondes. |
meta.access.mode | string | Non | "api_key" | api_key, ip_trial ou unauthenticated. Vérifiez api_key lorsque vous utilisez un compte payant. |
meta.access.reason | string | Oui | null | Motif du passage à l'essai : api_key_missing, api_key_invalid ou api_key_not_found ; null sinon. |
meta.usage.charged_credits | integer | Oui | 1 | Cré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_credits | integer | Oui | 99 | Solde à 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_status | string | Non | "confirmed" | not_charged, confirmed ou unconfirmed. Vérifiez ce champ avant de relancer une prédiction échouée. |
meta.usage.resets_at | string | Oui | "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.limit | integer | Oui | 10 | Crédits de l'essai par IP ; null pour les comptes avec clé API. |
meta.usage.period_seconds | integer | Oui | 86400 | Durée de l'essai par IP en secondes ; null pour les comptes avec clé API. |
Planifier les crédits et les nouvelles tentatives d'un lot
Authentifiez-vous avec votre clé API existante via l'en-tête Bearer et envoyez Content-Type: application/json. Chaque lot soumis est une nouvelle opération. Pour relancer un lot partiellement échoué, vérifiez la facturation puis ne soumettez que les éléments échoués ; renvoyer des éléments réussis les facture de nouveau.
Par défaut, les éléments d'un lot utilisent off et coûtent 1 crédit par élément réussi. Un fallback explicite coûte également 1 crédit au total, IA comprise. always coûte 2 crédits. forceToGenderize coûte 1 crédit pour un résultat résolu par le jeu de données, ou 2 si l'IA est utilisée. Les résultats inconnus réussis sont facturés. Un seul crédit positif au départ suffit pour lancer le lot ; le débit final peut rendre le solde négatif.
Traiter une liste de contacts sans perdre la trace d'aucune ligne
Le point de terminaison de lots accepte des listes de noms, des listes d'adresses e-mail ou des entrées mixtes. Découpez un traitement avec clé API en lots de 50 éléments au maximum ; l'essai par IP autorise au plus 10 éléments par requête. Conservez votre propre position dans la liste et attribuez à chaque élément un id unique au sein de son lot. L'index renvoyé commence à zéro et correspond au lot envoyé, et non à la liste complète.
| Étape | À enregistrer ou à vérifier | Pourquoi c'est important |
|---|---|---|
| 1. Préparer chaque lot | Conservez la ligne d'origine et l'id de l'élément ; définissez country et les options d'IA pour chaque élément. | Un même nom peut correspondre à plusieurs contacts. |
| 2. Lire toute la réponse | Enregistrez meta.request_id et rapprochez chaque entrée de data[] grâce à id ou index. | Une réponse HTTP 200 peut contenir à la fois des prédictions réussies et des erreurs par élément. |
| 3. Enregistrer les résultats réussis | Conservez les prédictions identified et unknown, y compris les valeurs JSON null et les champs d'indices. | unknown est un résultat terminé et facturé ; ce n'est pas une ligne échouée à relancer automatiquement. |
| 4. Rapprocher erreurs et crédits | Examinez chaque error et meta.usage.billing_status avant de décider d'envoyer une autre requête. | Lorsque la facturation est confirmée, ne relancez que les éléments échoués dont l'erreur justifie une nouvelle tentative. Les éléments réussis seraient facturés de nouveau. |
| 5. Suspendre les relances incertaines | Conservez l'identifiant de requête lorsque la facturation est unconfirmed ou qu'une panne réseau laisse l'issue incertaine. | Ne renvoyez pas aveuglément tout le lot ; suivez d'abord les consignes sur les erreurs et la facturation. |
Choisir un mode d'inférence pour chaque contact
Cette requête exécutable applique trois règles différentes : jeu de données seul pour un nom complet, repli ordinaire sur l'IA pour une adresse e-mail et repli adapté aux surnoms pour un nom d'utilisateur. Il s'agit d'un exemple d'entrée, et non d'une promesse que les trois contacts recevront un genre. Choisissez un langage au-dessus du code et définissez GENDERAPI_API_KEY avant de l'exécuter.
Sans forceToGenderize, les éléments d'un lot utilisent off par défaut, contrairement aux recherches individuelles. Définissez explicitement fallback pour activer le repli ordinaire sur l'IA. off et le repli ordinaire coûtent tous deux 1 crédit par élément réussi ; always ignore le jeu de données et coûte 2 crédits. forceToGenderize coûte 1 crédit pour un résultat résolu par le jeu de données, ou 2 au total si l'IA est utilisée. Les résultats inconnus réussis sont également facturés. Ne combinez pas forceToGenderize avec off ou always.
Choisissez un langage de programmation. Configurez votre clé API, puis exécutez l'exemple sur votre serveur.
Chaque requête de prédiction est une nouvelle opération facturable, y compris les nouvelles tentatives. Ces exemples ne réessaient pas automatiquement. Vérifiez le statut de facturation avant d'envoyer une autre requête.
Avant l'exécution : accès et gestion des erreurs
Exécutez ces exemples sur votre serveur. Définissez GENDERAPI_API_KEY dans l'environnement du processus avec votre clé API existante. Vérifiez que meta.access.mode vaut api_key : une clé non reconnue peut basculer vers l'essai par IP.
Pour les réponses JSON HTTP 4xx et 5xx, les exemples conservent le corps de l'erreur et renvoient un code de sortie non nul. Vérifiez code, action et meta.usage.billing_status avant de réessayer. Pour une réponse de lot HTTP 200, examinez aussi data ou error dans chaque élément.
Guide des erreurs et des nouvelles tentatives →cURL 7.76+ dans un shell POSIX. À exécuter dans votre terminal. Documentation de l'environnement d'exécution
Node.js 22+ ; fetch intégré. Enregistrez sous example.mjs et exécutez node example.mjs. Documentation de l'environnement d'exécution
Python 3.10+ ; bibliothèque standard. Enregistrez sous example.py et exécutez python3 example.py. Documentation de l'environnement d'exécution
PHP 8+ avec l'extension cURL. Enregistrez sous example.php et exécutez php example.php. Documentation de l'environnement d'exécution
Java 17+ ; client HTTP standard. Enregistrez sous GenderApiExample.java et exécutez java GenderApiExample.java. Documentation de l'environnement d'exécution
Application console .NET 8+. Utilisez-le comme Program.cs dans un projet console, puis exécutez dotnet run. Documentation de l'environnement d'exécution
Go 1.22+ ; bibliothèque standard. Enregistrez sous main.go et exécutez go run main.go. Documentation de l'environnement d'exécution