Slik utsteder du Open Badges fra en CSV på under 5 minutter
Trinn for trinn: last opp en CSV med mottakere, velg merket ditt, trykk Utsted. Sett på pause og gjenoppta midt i en batch, prøv feil på nytt, eksporter resultater. Fungerer for kull 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 noen gang har utstedt credentials til et kull én mottaker om gangen, kjenner du allerede problemet: det skalerer ikke forbi rundt ti personer før det blir til en hel ettermiddag med å kopiere og lime inn navn og e-poster. Et bootcamp-kull på 40 personer, en deltakerliste på 500 personer for en konferanse, eller en bedriftsopplæring for 5 000 personer trenger alle det samme — last opp en liste, velg et merke, klikk Utsted, og gå din vei.
Det er akkurat det Bulk Credentials på https://badges.ninja gjør. Denne gjennomgangen dekker hele flyten: å forberede CSV-en din, konfigurere batchen, se den kjøre og håndtere de rotete situasjonene fra den virkelige verden — en mottakerrad med en skrivefeil, en batch som blir avbrutt halvveis, eller et program som vil utstede på samme måte fra sine egne systemer i stedet for fra dashbordet.
Før du starter: Hva du trenger
To ting, som du sannsynligvis allerede har:
- Et merke — designet én gang i den visuelle designeren og gjenbrukt for hver mottaker i batchen. Hvis du ikke har bygget ett ennå, se veiledningen vår om å designe ditt første verifiserbare sertifikat.
- En CSV med mottakere — navn, e-post og (valgfritt) en utstedelsesdato. Det er hele skjemaet.
Du trenger ikke en utstederkonto per mottaker, en e-postserver eller noen kode. Alt i denne delen skjer i dashbordet.
Trinn 1: Forbered CSV-en din
Formatet for mottakerlisten er bevisst 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åkrevd. Fyller ut mottakerfeltet på assertionen og sertifikatet.
- email — påkrevd. Dette blir mottakeridentiteten på Open Badge v2.0-assertionen — hashet med et salt per credential før det lagres, aldri lagret i klartekst.
- issued_on — valgfritt. La det stå tomt, og batchen bruker øyeblikket hver rad behandles; angi det eksplisitt hvis du etterutsteder til et kull som faktisk ble ferdig forrige måned.
De fleste programeiere eksporterer dette rett fra der de allerede sporer fullføringer — Airtable, Google Sheets, et regneark levert av en instruktør, eller en CSV hentet fra en LMS-karakterbok. Det kreves ikke noe spesielt eksportverktøy; enhver CSV med de tre kolonnene fungerer.
Vanlige CSV-fallgruver (og hvordan forhåndsvisningen fanger dem)
En håndfull problemer dukker stadig opp i mottakerlister fra den virkelige verden, vanligvis fordi CSV-en ble satt sammen ved å slå sammen to eller tre kildeark:
- Etterfølgende mellomrom i e-postadresser — en kopiering fra en PDF-liste eller en Google Forms-eksport bærer ofte med seg et usynlig mellomrom. Det ser greit ut i en regnearkcelle, men feiler e-postvalidering ved opplasting.
- Duplikate rader — den samme mottakeren som dukker opp to ganger fordi en kullliste og en liste over sene påmeldinger ble slått sammen uten deduplisering.
- Inkonsekvente datoformater — én kolonne med
2026-07-01blandet med07/01/2026fra en annen eksport. Hold deg til ISO 8601 (YYYY-MM-DD), og dette forsvinner helt. - Uoverensstemmelser i store/små bokstaver i overskrifter —
Emailvs.emailvs.E-mail. Parseren er tilgivende overfor vanlige varianter, men et helt egendefinert overskriftsnavn blir ikke automatisk tilordnet.
Ingen av disse er fatale — forhåndsvisningstrinnet (nedenfor) løfter frem hver enkelt før noe blir utstedt, så løsningen er «rediger regnearket, last opp på nytt» i stedet for «finn ut hvem av 3 000 mottakere som fikk et ødelagt merke».
Trinn 2: Konfigurer batchen
Åpne Credentials → Bulk Credentials fra dashbordet og velg merket du utsteder. Dette er trinnet der du stiller inn alt som gjelder hele batchen: selve merket, en felles utstedelsesdato hvis du ikke legger datoer per rad i CSV-en, og (hvis utstederprofilen din har én) LinkedIn-organisasjons-ID-en som lar hver mottaker legge credentialet til profilen sin med ett klikk.

Dette er et godt tidspunkt til å dobbeltsjekke at merket du har valgt er den endelige versjonen — mottakerne vil se bildet og kriteriene som er knyttet til det i øyeblikket du utsteder, ikke det du oppdaterer det til senere.
Trinn 3: Last opp og forhåndsvis
Slipp CSV-en din inn, og plattformen parser den, viser deg en forhåndsvisningstabell og flagger alt den ikke kan behandle — en manglende e-post, en feilformatert dato, en duplikatrad. Ingenting blir utstedt før du bekrefter forhåndsvisningen.

Dette forhåndsvisningstrinnet betyr mer enn det ser ut til. En skrivefeil i én rad av en CSV med 2 000 rader er lett å overse med det blotte øye, og det er mye billigere å fange den før 1 999 korrekte rader allerede er utstedt enn å prøve å reversere det etterpå. Rett de flaggede radene i regnearket ditt, last opp på nytt, og forhåndsvisningen oppdateres.
Trinn 4: Kjør batchen
Trykk Utsted, og batchen begynner å behandle. En fremdriftslinje sporer fullførte vs. gjenstående rader, og batchen kjører på serversiden — du trenger ikke holde fanen åpen, og å lukke den bærbare midt i en batch mister ikke plassen din.
Den siste delen er verdt å skrive ut, fordi det er detaljen som faktisk betyr noe for store kull: batchtilstanden ligger på serveren, ikke i nettleseren din. Hvis forbindelsen din faller ut, den bærbare går i dvale, eller du bare lukker fanen fordi et møte starter, fortsetter batchen å kjøre (eller gjenopptar akkurat der den slapp hvis du satte den på pause) i stedet for å starte fra null. For et bootcamp-kull på 40 personer er dette en fin-å-ha. For en bedriftsutrulling på 5 000 rader er det forskjellen mellom «det bare fungerer» og «noen må passe på en nettleserfane i tjue minutter».
Du kan også bevisst sette en pågående batch på pause — for eksempel hvis noen påpeker at teksten med merkets kriterier trenger en justering halvveis i en kjøring på 3 000 rader — rette problemet og gjenoppta uten å utstede radene som allerede er fullført på nytt.
Trinn 5: Håndter feil
Ekte mottakerlister har dårlige rader: et e-postdomene med skrivefeil, et navnefelt som faktisk er tomt, en duplikatoppføring fra to eksporterte ark som blir slått sammen. Når en rad feiler, stopper ikke batchen — den fortsetter å behandle resten og flagger feilen for gjennomgang etterpå. Du får en resultateksport som viser nøyaktig hvilke rader som lyktes og hvilke som ikke gjorde det, slik at du bare kan rette de feilede radene og kjøre en liten oppfølgingsbatch i stedet for å sjekke hele listen på nytt.
Dette betyr noe for CSV-eksportvanen som allerede er vanlig på credentials-dashbordet — du kan hente en CSV over hva som faktisk ble utstedt når som helst, kryssreferere den mot kildelisten din og vite nøyaktig hvem som fortsatt mangler et merke.
API-veien: Samme flyt, uten dashbord
Alt ovenfor forutsetter at noen sitter ved dashbordet og klikker seg gjennom veiviseren. Hvis fullføringene dine allerede finnes i et system — et LMS, et CRM, en regnearkautomatisering — kan du drive den samme bulk-credential-flyten direkte fra Awards API-et i stedet.
Et minimalt utstedelseskall per mottaker ser slik ut:
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 rader lest fra den samme CSV-en du ellers ville lastet opp for hånd:
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 verdt å ty til når utstedelse av credentials utløses av noe helt annet — et webhook for kursfullføring, en endring av et CRM-trinn, en skjemainnsending — snarere enn en person som manuelt eksporterer en CSV. Vi dekker autentisering og hele request/response-strukturen i API-hurtigstarten. Hvert credential som opprettes på denne måten er identisk med ett som opprettes gjennom dashbord-veiviseren: samme Open Badge v2.0-assertion, samme verifiserings-URL, samme PDF-sertifikat.
Dashbord-veiviser vs. API: Hvilken vil du egentlig ha?
| Dashboard Bulk Credentials | Awards API | |
|---|---|---|
| Best for | En engangs- eller sporadisk batch (kull-avgang, konferansedeltakelse) | En tilbakevendende utløser (hver kursfullføring, hvert kjøp) |
| Oppsettsinnsats | Ingen — eksporter en CSV, last den opp | Engangs integrasjonsarbeid (webhook eller skript) |
| Hvem kjører den | Programeier, ingen kode | Den som eier det utløsende systemet |
| Feilhåndtering | Forhåndsvisning + resultateksport per rad | HTTP-status per request, håndtert i din egen retry-logikk |
De fleste team starter med dashbord-veiviseren fordi den ikke krever noe utover en CSV, og går først over til API-et når den samme batchen har blitt kjørt manuelt tre eller fire ganger og mønsteret åpenbart er verdt å automatisere.
Personvern: Hva som faktisk blir lagret
En CSV med navn og e-poster er personopplysninger, og det er verdt å vite hva som skjer med den etter opplasting. Mottakerens e-postadresse lagres aldri i klartekst på selve credentialet — den hashes med et salt per credential som en del av Open Badge v2.0-assertionen, i tråd med spesifikasjonens hashed-format for mottakeridentitet. Det er den hashen en verifiserer sjekker mot, ikke den rå adressen. Navnefeltet lagres slik det ble skrevet inn, siden det er ment å være synlig på sertifikatet og verifiseringssiden. Hvis en rad trenger retting etter utstedelse — et feilstavet navn, oftest — kan du redigere eller tilbakekalle det enkelte credentialet fra credentials-dashbordet uten å røre resten av batchen.
Etter batchen: Varsle mottakerne
Å utstede merket og å fortelle mottakeren om det er to forskjellige trinn. Hvis CSV-en din ikke allerede utløser en e-post gjennom ditt eget system, lar dashbordets bulk-delingsflyt deg multivelge credentialene du nettopp opprettet og sende en personalisert dele-e-post til dem alle i én omgang — se masseutsending av dele-e-poster for hele gjennomgangen, inkludert hvordan personalisering per mottaker (navn, merkebilde, verifiseringslenke) settes inn automatisk.
Når Bulk Credentials er det rette verktøyet
Masseutstedelse er det rette valget når «batch»-rammen passer til den virkelige verden: et kull som ble ferdig samme dag, en konferanse som nettopp er slutt, en opplæringsutrulling som treffer en compliance-frist. Hvis du i stedet utsteder engangs-credentials etter hvert som individuelle milepæler nås — en enkelt forfremmelse, en enkelt prosjektfullføring — er enkelt-credential-skjemaet raskere enn å sette sammen en CSV med én rad.
For alt tilbakevendende — det samme kurset som kjører hver måned, en løpende onboarding-pipeline — er API-veien ovenfor verdt å sette opp én gang. Den gjør «kjør bulk credentials manuelt for hvert kull» til «fullføringer utsteder allerede credentials automatisk», som er den versjonen av denne arbeidsflyten de fleste programeiere faktisk vil ha etter den andre eller tredje manuelle batchen.
Klar til å utstede ditt første verifiserbare credential? Kom i gang gratis på badges.ninja — visuell designer, offentlig verifiseringsside, PDF-sertifikat, Open Badge v2.0-utdata. Ingen kredittkort kreves.
Slik ble denne artikkelen laget
Enkelte innlegg på denne bloggen er utarbeidet med hjelp av en KI-assistent, og deretter gjennomgått, faktasjekket og redigert av Badges Ninja-teamet før publisering. Alle kodeeksempler og priser er verifisert mot det faktiske produktet. Les mer om vår redaksjonelle prosess og KI-bruk på vår side om redaksjonell prosess .

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.
Mer fra Nacho Coll
- Slik legger du til en LinkedIn «Legg til i profil»-knapp på dine Open Badges20. aug. 2026 · 9min lesing
- Open Badges vs. PDF-sertifikater: Hva passer best for programmet ditt i 2026?10. aug. 2026 · 6min lesing
- Open Badge v2 vs v3 forklart: Hvilken spesifikasjon bør du bruke i dag?6. aug. 2026 · 9min lesing


