Comment émettre des Open Badges depuis un CSV en moins de 5 minutes
Pas à pas : importez un CSV de destinataires, choisissez votre badge, cliquez sur Émettre. Mettez en pause et reprenez en cours de lot, relancez les échecs, exportez les résultats. Fonctionne pour des cohortes de 10 ou de 10 000 personnes.
Nacho founded Badges Ninja to make issuing verifiable digital credentials as simple as a single API call — Open Badge v2.0 badges and certificates, minted, hosted, and verifiable without standing up your own issuer infrastructure.
Si vous avez déjà émis des credentials à une cohorte un destinataire à la fois, vous connaissez déjà le problème : ça ne tient pas la charge au-delà d’une dizaine de personnes avant de se transformer en un après-midi de copier-coller de noms et d’e-mails. Une cohorte de bootcamp de 40 personnes, une liste de 500 participants à une conférence ou un déploiement de formation en entreprise pour 5 000 personnes ont tous besoin de la même chose : importer une liste, choisir un badge, cliquer sur Émettre, et repartir.
C’est exactement ce que font les Bulk Credentials sur https://badges.ninja. Ce guide couvre tout le déroulé : préparer votre CSV, configurer le lot, le regarder tourner et gérer les cas concrets un peu chaotiques — une ligne de destinataire avec une faute de frappe, un lot interrompu à mi-parcours, ou un programme qui veut émettre de la même manière depuis ses propres systèmes plutôt que depuis le tableau de bord.
Avant de commencer : ce qu’il vous faut
Deux choses, que vous avez probablement déjà toutes les deux :
- Un badge — conçu une seule fois dans l’éditeur visuel, réutilisé pour chaque destinataire du lot. Si vous n’en avez pas encore créé, consultez notre guide sur la conception de votre premier certificat vérifiable.
- Un CSV de destinataires — nom, e-mail et (facultativement) une date d’émission. C’est tout le schéma.
Vous n’avez pas besoin d’un compte émetteur par destinataire, d’un serveur de messagerie, ni du moindre code. Tout ce qui se passe dans cette section se déroule dans le tableau de bord.
Étape 1 : préparez votre CSV
Le format de la liste des destinataires est volontairement minimal :
name,email,issued_on
Maria Gonzalez,maria@example.com,2026-07-01
David Kim,david@example.com,2026-07-01
Priya Patel,priya@example.com,
- name — obligatoire. Remplit le champ destinataire sur l’assertion et sur le certificat.
- email — obligatoire. Il devient l’identité du destinataire sur l’assertion Open Badge v2.0 — hachée avec un sel propre à chaque credential avant d’être stockée, jamais conservée en clair.
- issued_on — facultatif. Laissez-le vide et le lot utilise l’instant où chaque ligne est traitée ; renseignez-le explicitement si vous rattrapez une cohorte qui a réellement terminé le mois dernier.
La plupart des responsables de programme exportent cela directement depuis l’endroit où ils suivent déjà les fins de formation — Airtable, Google Sheets, un tableur transmis par un formateur, ou un CSV extrait d’un carnet de notes de LMS. Aucun outil d’export particulier n’est requis ; n’importe quel CSV avec ces trois colonnes fonctionne.
Pièges CSV fréquents (et comment l’aperçu les détecte)
Une poignée de problèmes reviennent constamment dans les listes de destinataires du monde réel, généralement parce que le CSV a été assemblé en fusionnant deux ou trois feuilles sources :
- Espaces superflus dans les adresses e-mail — un copier-coller depuis une liste PDF ou un export de Google Form embarque souvent un espace invisible. Ça a l’air correct dans une cellule de tableur mais échoue à la validation de l’e-mail lors de l’import.
- Lignes en double — le même destinataire apparaissant deux fois parce qu’une liste de cohorte et une liste d’inscrits tardifs ont été concaténées sans dédoublonnage.
- Formats de date incohérents — une colonne de
2026-07-01mélangée à des07/01/2026d’un autre export. Tenez-vous-en à l’ISO 8601 (YYYY-MM-DD) et ça disparaît complètement. - Casse d’en-têtes non concordante —
EmailvsemailvsE-mail. Le parseur tolère les variantes courantes, mais un nom d’en-tête entièrement personnalisé ne se mappera pas automatiquement.
Aucun de ces cas n’est fatal — l’étape d’aperçu (ci-dessous) fait remonter chacun d’eux avant toute émission, de sorte que la correction est « modifiez le tableur, réimportez » plutôt que « trouvez lequel des 3 000 destinataires a reçu un badge cassé ».
Étape 2 : configurez le lot
Depuis le tableau de bord, ouvrez Credentials → Bulk Credentials et choisissez le badge que vous émettez. C’est l’étape où vous définissez tout ce qui s’applique à l’ensemble du lot : le badge lui-même, une date d’émission commune si vous ne mettez pas de dates par ligne dans le CSV, et (si votre profil d’émetteur en possède un) l’identifiant d’organisation LinkedIn qui permettra à chaque destinataire d’ajouter le credential à son profil en un clic.

C’est un bon moment pour revérifier que le badge sélectionné est bien la version finale — les destinataires verront l’image et les critères qui y sont attachés au moment où vous émettez, et non ce que vous y modifierez ensuite.
Étape 3 : importez et prévisualisez
Déposez votre CSV et la plateforme l’analyse, vous montre un tableau d’aperçu et signale tout ce qu’elle ne peut pas traiter — un e-mail manquant, une date mal formée, une ligne en double. Rien n’est émis tant que vous n’avez pas confirmé l’aperçu.

Cette étape d’aperçu compte plus qu’il n’y paraît. Une faute de frappe dans une ligne d’un CSV de 2 000 lignes est facile à manquer à l’œil, et il est bien moins coûteux de la repérer avant que 1 999 lignes correctes ne soient déjà émises que d’essayer de la corriger après coup. Corrigez les lignes signalées dans votre tableur, réimportez, et l’aperçu se met à jour.
Étape 4 : lancez le lot
Cliquez sur Émettre et le lot commence à être traité. Une barre de progression suit les lignes terminées par rapport aux lignes restantes, et le lot tourne côté serveur — vous n’avez pas besoin de garder l’onglet ouvert, et fermer votre ordinateur portable en pleine exécution ne vous fait pas perdre votre place.
Ce dernier point mérite d’être précisé car c’est le détail qui compte vraiment pour les grandes cohortes : l’état du lot vit sur le serveur, pas dans votre navigateur. Si votre connexion tombe, que votre ordinateur portable se met en veille, ou que vous fermez simplement l’onglet parce qu’une réunion commence, le lot continue de tourner (ou reprend exactement là où il s’était arrêté si vous l’aviez mis en pause) au lieu de repartir de zéro. Pour une cohorte de bootcamp de 40 personnes, c’est un confort appréciable. Pour un déploiement d’entreprise de 5 000 lignes, c’est la différence entre « ça marche tout seul » et « quelqu’un doit surveiller un onglet de navigateur pendant vingt minutes ».
Vous pouvez aussi mettre délibérément en pause un lot en cours — disons que quelqu’un signale que le texte des critères du badge a besoin d’un ajustement à mi-chemin d’une exécution de 3 000 lignes — corriger le problème, puis reprendre sans réémettre les lignes déjà terminées.
Étape 5 : gérez les échecs
Les vraies listes de destinataires ont de mauvaises lignes : un domaine d’e-mail mal saisi, un champ nom en fait vide, une entrée en double issue de la fusion de deux feuilles exportées. Quand une ligne échoue, le lot ne s’arrête pas — il continue de traiter le reste et signale l’échec pour révision par la suite. Vous obtenez un export des résultats montrant exactement quelles lignes ont réussi et lesquelles ont échoué, afin de corriger uniquement les lignes en échec et de relancer un petit lot de suivi plutôt que de revérifier toute la liste.
C’est important pour l’habitude d’export CSV déjà répandue sur le tableau de bord des credentials — vous pouvez extraire à tout moment un CSV de ce qui a réellement été émis, le recouper avec votre liste source, et savoir précisément qui a encore besoin d’un badge.
La voie API : même déroulé, sans tableau de bord
Tout ce qui précède suppose que quelqu’un est assis devant le tableau de bord à cliquer dans l’assistant. Si vos fins de formation vivent déjà dans un système — un LMS, un CRM, une automatisation de tableur — vous pouvez piloter le même flux de credentials en masse directement depuis l’API Awards.
Un appel minimal d’émission par destinataire ressemble à ceci :
curl -X POST https://api.badges.ninja/awards \
-H "X-Api-Key: bws_1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d" \
-H "Content-Type: application/json" \
-d '{
"badgeId": "badge_9f8e7d6c5b4a",
"recipient": {
"name": "Maria Gonzalez",
"email": "maria@example.com"
},
"issuedOn": "2026-07-01T00:00:00Z"
}'
Ou en Python, en bouclant sur les lignes lues depuis le même CSV que vous importeriez sinon à la main :
import csv
import requests
API_KEY = "bws_1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d"
BADGE_ID = "badge_9f8e7d6c5b4a"
with open("recipients.csv") as f:
for row in csv.DictReader(f):
requests.post(
"https://api.badges.ninja/awards",
headers={"X-Api-Key": API_KEY},
json={
"badgeId": BADGE_ID,
"recipient": {"name": row["name"], "email": row["email"]},
"issuedOn": row.get("issued_on") or None,
},
)
Cela vaut le coup d’y recourir quand l’émission des credentials est déclenchée par tout autre chose — un webhook de fin de cours, un changement d’étape de CRM, une soumission de formulaire — plutôt que par une personne exportant manuellement un CSV. Nous couvrons l’authentification et la forme complète des requêtes/réponses dans le démarrage rapide de l’API. Chaque credential créé de cette manière est identique à un credential créé via l’assistant du tableau de bord : même assertion Open Badge v2.0, même URL de vérification, même certificat PDF.
Assistant du tableau de bord vs. API : lequel voulez-vous vraiment ?
| Dashboard Bulk Credentials | Awards API | |
|---|---|---|
| Idéal pour | Un lot ponctuel ou occasionnel (remise de diplômes d’une cohorte, participation à une conférence) | Un déclencheur récurrent (chaque fin de cours, chaque achat) |
| Effort de mise en place | Aucun — exportez un CSV, importez-le | Un travail d’intégration ponctuel (webhook ou script) |
| Qui l’exécute | Le responsable de programme, sans code | Celui qui possède le système déclencheur |
| Gestion des échecs | Aperçu + export des résultats par ligne | Statut HTTP par requête, géré dans votre propre logique de relance |
La plupart des équipes commencent par l’assistant du tableau de bord parce qu’il ne demande rien de plus qu’un CSV, et ne passent à l’API qu’une fois que le même lot a été exécuté manuellement trois ou quatre fois et que le schéma vaut manifestement la peine d’être automatisé.
Confidentialité : ce qui est réellement stocké
Un CSV de noms et d’e-mails est une donnée personnelle, et il vaut la peine de savoir ce qu’il en advient après l’import. L’adresse e-mail du destinataire n’est jamais stockée en clair sur le credential lui-même — elle est hachée avec un sel propre à chaque credential dans le cadre de l’assertion Open Badge v2.0, suivant le format d’identité de destinataire hashed de la spécification. C’est ce hachage qu’un vérificateur contrôle, pas l’adresse brute. Le champ nom est stocké tel que saisi, puisqu’il est destiné à être visible sur le certificat et la page de vérification. Si une ligne doit être corrigée après émission — un nom mal orthographié, le cas le plus courant — vous pouvez modifier ou révoquer le credential individuel depuis le tableau de bord des credentials sans toucher au reste du lot.
Après le lot : prévenez les destinataires
Émettre le badge et l’annoncer au destinataire sont deux étapes distinctes. Si votre CSV ne déclenche pas déjà un e-mail via votre propre système, le flux de partage en masse du tableau de bord vous permet de sélectionner en multi-choix les credentials que vous venez de créer et d’envoyer à tous un e-mail de partage personnalisé en une seule passe — voir l’envoi en masse d’e-mails de partage pour le guide complet, y compris la manière dont la personnalisation par destinataire (nom, image du badge, lien de vérification) est substituée automatiquement.
Quand Bulk Credentials est le bon outil
L’émission en masse est le bon choix chaque fois que le cadrage « lot » colle à la réalité : une cohorte terminée le même jour, une conférence qui vient de s’achever, un déploiement de formation atteignant une échéance de conformité. Si au contraire vous émettez des credentials ponctuels à mesure que des jalons individuels sont atteints — une seule promotion, la fin d’un seul projet — le formulaire de credential unique est plus rapide que d’assembler un CSV d’une seule ligne.
Pour tout ce qui est récurrent — le même cours donné chaque mois, un pipeline d’onboarding continu — la voie API ci-dessus mérite d’être mise en place une bonne fois. Elle transforme « exécuter les credentials en masse manuellement à chaque cohorte » en « les fins de formation émettent déjà des credentials automatiquement », qui est la version de ce workflow que la plupart des responsables de programme veulent réellement après le deuxième ou le troisième lot manuel.
Prêt à émettre votre premier credential vérifiable ? Commencez gratuitement sur badges.ninja — éditeur visuel, page de vérification publique, certificat PDF, sortie Open Badge v2.0. Aucune carte bancaire requise.
Comment cet article a été créé
Certains articles de ce blog sont rédigés avec l'aide d'un assistant IA, puis relus, vérifiés et édités par l'équipe Badges Ninja avant publication. Chaque exemple de code et chaque prix est vérifié sur le produit réel. Pour en savoir plus sur notre processus éditorial et d'IA, consultez notre page sur le processus éditorial .

À propos de l'auteur
Nacho Coll
Founder & Engineer at Badges Ninja
Nacho founded Badges Ninja to make issuing verifiable digital credentials as simple as a single API call — Open Badge v2.0 badges and certificates, minted, hosted, and verifiable without standing up your own issuer infrastructure. Writes about the Open Badges spec, credential verification, and running a credentialing platform serverless on AWS, from the operator side of the wire.
Plus de Nacho Coll
- Comment ajouter un bouton LinkedIn « Ajouter au profil » à vos Open Badges20 août 2026 · 11min de lecture
- Open Badges vs certificats PDF : lequel choisir pour votre programme en 2026 ?10 août 2026 · 7min de lecture
- Open Badge v2 vs v3 expliqué : quelle spécification utiliser aujourd'hui ?6 août 2026 · 11min de lecture


