Sådan udsteder du Open Badges fra en CSV på under 5 minutter
Trin for trin: upload en CSV med modtagere, vælg dit badge, tryk på Udsted. Sæt på pause og genoptag midt i en batch, prøv fejl igen, eksportér resultater. Virker til hold på 10 eller 10.000.
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.
Hvis du nogensinde har udstedt credentials til et hold én modtager ad gangen, kender du allerede problemet: det skalerer ikke ud over cirka ti personer, før det bliver til en hel eftermiddag med at kopiere og indsætte navne og e-mails. Et bootcamp-hold på 40 personer, en konferencedeltagerliste på 500 personer eller en virksomhedsuddannelse for 5.000 personer har alle brug for det samme — upload en liste, vælg et badge, klik på Udsted, og gå din vej.
Det er præcis, hvad Bulk Credentials på https://badges.ninja gør. Denne gennemgang dækker hele flowet: at forberede din CSV, konfigurere batchen, se den køre og håndtere de rodede situationer fra den virkelige verden — en modtagerrække med en tastefejl, en batch der bliver afbrudt halvvejs, eller et program der vil udstede på samme måde fra sine egne systemer i stedet for fra dashboardet.
Før du starter: Hvad du har brug for
To ting, som du sandsynligvis allerede har:
- Et badge — designet én gang i den visuelle designer og genbrugt for hver modtager i batchen. Hvis du ikke har bygget et endnu, så se vores guide til at designe dit første verificerbare certifikat.
- En CSV med modtagere — navn, e-mail og (valgfrit) en udstedelsesdato. Det er hele skemaet.
Du behøver ikke en udstederkonto pr. modtager, en mailserver eller nogen kode. Alt i denne sektion sker i dashboardet.
Trin 1: Forbered din CSV
Formatet for modtagerlisten er bevidst minimalt:
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 — påkrævet. Udfylder modtagerfeltet på assertionen og certifikatet.
- email — påkrævet. Dette bliver modtageridentiteten på Open Badge v2.0-assertionen — hashet med et salt pr. credential, før det gemmes, aldrig opbevaret i klartekst.
- issued_on — valgfrit. Lad det stå tomt, og batchen bruger det øjeblik, hver række behandles; angiv det eksplicit, hvis du efterudsteder til et hold, der faktisk blev færdigt sidste måned.
De fleste programejere eksporterer dette direkte fra det sted, hvor de allerede sporer gennemførelser — Airtable, Google Sheets, et regneark udleveret af en underviser eller en CSV trukket ud af en LMS-karakterbog. Der kræves ikke noget særligt eksportværktøj; enhver CSV med de tre kolonner virker.
Almindelige CSV-faldgruber (og hvordan forhåndsvisningen fanger dem)
En håndfuld problemer dukker konstant op i modtagerlister fra den virkelige verden, som regel fordi CSV’en blev samlet ved at flette to eller tre kildeark:
- Mellemrum i slutningen af e-mailadresser — en kopiering fra en PDF-liste eller en Google Forms-eksport bærer ofte et usynligt mellemrum med sig. Det ser fint ud i en regnearkscelle, men fejler ved e-mailvalidering under upload.
- Duplikerede rækker — den samme modtager, der optræder to gange, fordi en holdliste og en liste over sene tilmeldinger blev sammensat uden deduplikering.
- Uensartede datoformater — én kolonne med
2026-07-01blandet med07/01/2026fra en anden eksport. Hold dig til ISO 8601 (YYYY-MM-DD), og dette forsvinder helt. - Uoverensstemmelser i overskrifternes store/små bogstaver —
Emailvs.emailvs.E-mail. Parseren er overbærende over for almindelige varianter, men et helt brugerdefineret overskriftsnavn bliver ikke automatisk knyttet.
Ingen af disse er fatale — forhåndsvisningstrinnet (nedenfor) fremhæver hver enkelt, før noget bliver udstedt, så løsningen er “rediger regnearket, upload igen” i stedet for “find ud af, hvem af 3.000 modtagere der fik et ødelagt badge.”
Trin 2: Konfigurer batchen
Åbn Credentials → Bulk Credentials fra dashboardet og vælg det badge, du udsteder. Dette er trinnet, hvor du indstiller alt, der gælder for hele batchen: selve badget, en fælles udstedelsesdato hvis du ikke lægger datoer pr. række i CSV’en, og (hvis din udstederprofil har et) det LinkedIn-organisations-ID, der giver hver modtager mulighed for at tilføje credentialet til sin profil med ét klik.

Dette er et godt tidspunkt til at dobbelttjekke, at det badge, du har valgt, er den endelige version — modtagerne vil se det billede og de kriterier, der er knyttet til det i det øjeblik, du udsteder, ikke det, du opdaterer det til senere.
Trin 3: Upload og forhåndsvis
Slip din CSV ind, og platformen parser den, viser dig en forhåndsvisningstabel og markerer alt, den ikke kan behandle — en manglende e-mail, en fejlformateret dato, en dubletrække. Intet bliver udstedt, før du bekræfter forhåndsvisningen.

Dette forhåndsvisningstrin betyder mere, end det ser ud til. En tastefejl i én række af en CSV med 2.000 rækker er let at overse med det blotte øje, og det er meget billigere at fange den, før 1.999 korrekte rækker allerede er udstedt, end at forsøge at rulle det tilbage bagefter. Ret de markerede rækker i dit regneark, upload igen, og forhåndsvisningen opdateres.
Trin 4: Kør batchen
Tryk på Udsted, og batchen begynder at behandle. En statuslinje sporer gennemførte vs. resterende rækker, og batchen kører på serversiden — du behøver ikke holde fanen åben, og at lukke din bærbare computer midt i en batch mister ikke din plads.
Den sidste del er værd at stave ud, fordi det er detaljen, der virkelig betyder noget for store hold: batchtilstanden ligger på serveren, ikke i din browser. Hvis din forbindelse falder ud, din bærbare går i dvale, eller du bare lukker fanen, fordi et møde starter, fortsætter batchen med at køre (eller genoptager præcis der, hvor den slap, hvis du satte den på pause) i stedet for at starte forfra. For et bootcamp-hold på 40 personer er dette et rart-at-have. For en virksomhedsudrulning på 5.000 rækker er det forskellen mellem “det bare virker” og “nogen skal babysitte en browserfane i tyve minutter.”
Du kan også bevidst sætte en kørende batch på pause — hvis for eksempel nogen påpeger, at teksten med badgets kriterier skal justeres halvvejs gennem en kørsel på 3.000 rækker — rette problemet og genoptage uden at genudstede de rækker, der allerede er gennemført.
Trin 5: Håndtér fejl
Ægte modtagerlister har dårlige rækker: et e-maildomæne med en tastefejl, et navnefelt der faktisk er tomt, en dubletpost fra to eksporterede ark der bliver flettet sammen. Når en række fejler, stopper batchen ikke — den fortsætter med at behandle resten og markerer fejlen til gennemgang bagefter. Du får en resultateksport, der viser præcis, hvilke rækker der lykkedes, og hvilke der ikke gjorde, så du kun kan rette de fejlede rækker og køre en lille opfølgningsbatch i stedet for at gentjekke hele listen.
Dette betyder noget for den CSV-eksportvane, der allerede er almindelig på credentials-dashboardet — du kan trække en CSV over, hvad der faktisk blev udstedt, på ethvert tidspunkt, krydsreferere den med din kildeliste og vide præcis, hvem der stadig mangler et badge.
API-vejen: Samme flow, intet dashboard
Alt ovenfor antager, at nogen sidder ved dashboardet og klikker sig gennem guiden. Hvis dine gennemførelser allerede findes i et system — et LMS, et CRM, en regnearksautomatisering — kan du drive det samme bulk-credential-flow direkte fra Awards API’et i stedet.
Et minimalt udstedelseskald pr. modtager ser sådan ud:
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"
}'
Eller i Python, med en løkke over rækker læst fra den samme CSV, du ellers ville uploade manuelt:
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,
},
)
Dette er værd at gribe fat i, når udstedelse af credentials udløses af noget helt andet — et webhook for kursusgennemførelse, en ændring af et CRM-trin, en formularindsendelse — snarere end en person, der manuelt eksporterer en CSV. Vi dækker autentificering og den fulde request/response-struktur i API-quickstarten. Hvert credential, der oprettes på denne måde, er identisk med et, der er oprettet gennem dashboard-guiden: samme Open Badge v2.0-assertion, samme verifikations-URL, samme PDF-certifikat.
Dashboard-guide vs. API: Hvilken vil du egentlig have?
| Dashboard Bulk Credentials | Awards API | |
|---|---|---|
| Bedst til | En engangs- eller lejlighedsvis batch (dimission af et hold, konferencedeltagelse) | En tilbagevendende udløser (hver kursusgennemførelse, hvert køb) |
| Opsætningsindsats | Ingen — eksportér en CSV, upload den | Engangs-integrationsarbejde (webhook eller script) |
| Hvem kører det | Programejer, ingen kode | Den, der ejer det udløsende system |
| Fejlhåndtering | Forhåndsvisning + resultateksport pr. række | HTTP-status pr. request, håndteret i din egen retry-logik |
De fleste teams starter med dashboard-guiden, fordi den ikke kræver andet end en CSV, og går først over til API’et, når den samme batch er blevet kørt manuelt tre eller fire gange, og mønstret åbenlyst er værd at automatisere.
Privatliv: Hvad der faktisk bliver gemt
En CSV med navne og e-mails er personoplysninger, og det er værd at vide, hvad der sker med den efter upload. Modtagerens e-mailadresse gemmes aldrig i klartekst på selve credentialet — den hashes med et salt pr. credential som en del af Open Badge v2.0-assertionen efter specifikationens hashed-format for modtageridentitet. Det er den hash, en verifikator tjekker imod, ikke den rå adresse. Navnefeltet gemmes, som det er indtastet, da det er meningen, at det skal være synligt på certifikatet og verifikationssiden. Hvis en række skal rettes efter udstedelse — et forkert stavet navn, oftest — kan du redigere eller tilbagekalde det enkelte credential fra credentials-dashboardet uden at røre resten af batchen.
Efter batchen: Underret modtagerne
At udstede badget og at fortælle modtageren om det er to forskellige trin. Hvis din CSV ikke allerede udløser en e-mail gennem dit eget system, lader dashboardets bulk-delingsflow dig multi-vælge de credentials, du lige har oprettet, og sende en personaliseret delings-e-mail til dem alle på én gang — se masseudsendelse af delings-e-mails for den fulde gennemgang, herunder hvordan personalisering pr. modtager (navn, badge-billede, verifikationslink) bliver indsat automatisk.
Hvornår Bulk Credentials er det rigtige værktøj
Masseudstedelse er det rigtige valg, når “batch”-rammen passer til den virkelige verden: et hold der blev færdigt på samme dag, en konference der lige er slut, en uddannelsesudrulning der rammer en compliance-deadline. Hvis du i stedet udsteder engangs-credentials, efterhånden som individuelle milepæle nås — en enkelt forfremmelse, en enkelt projektgennemførelse — er enkelt-credential-formularen hurtigere end at sammensætte en CSV med én række.
For alt tilbagevendende — det samme kursus der kører hver måned, en løbende onboarding-pipeline — er API-vejen ovenfor værd at sætte op én gang. Den forvandler “kør bulk credentials manuelt for hvert hold” til “gennemførelser udsteder allerede credentials automatisk,” hvilket er den version af dette workflow, de fleste programejere faktisk ønsker efter den anden eller tredje manuelle batch.
Klar til at udstede dit første verificerbare credential? Kom gratis i gang på badges.ninja — visuel designer, offentlig verifikationsside, PDF-certifikat, Open Badge v2.0-output. Intet kreditkort påkrævet.
Sådan blev denne artikel til
Nogle indlæg på denne blog udarbejdes med hjælp fra en AI-assistent og gennemgås, faktatjekkes og redigeres af Badges Ninja-teamet inden udgivelse. Alle kodeeksempler og priser verificeres mod det live produkt. Læs mere om vores redaktionelle proces og AI-proces på vores side om vores redaktionelle proces .

Om forfatteren
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.
Mere fra Nacho Coll
- Sådan tilføjer du en LinkedIn “Add to Profile”-knap til dine Open Badges20. aug. 2026 · 9min. læsning
- Open Badges vs. PDF-certifikater: Hvad er det rigtige valg til dit program i 2026?10. aug. 2026 · 6min. læsning
- Open Badge v2 vs v3 forklaret: Hvilken specifikation bør du bruge i dag?6. aug. 2026 · 9min. læsning


