Met de anonid-API anonimiseert u ID-kopieën vanuit uw eigen software en haalt u alle gegevens en bestanden van uw organisatie op: documenten, PDF's, pasfoto's, compliance-rapporten, dossiers, uploadverzoeken, inbox, verbruik en het logboek.
Alle endpoints staan onder https://anonid.nl/api/public/v1. Antwoorden zijn JSON, behalve bestanden (PDF en JPEG). Alle tijden zijn ISO 8601 in UTC; datums op het document zijn altijd JJJJ-MM-DD.
Snel starten: maak een API-sleutel aan, test die met GET /me en anonimiseer daarna uw eerste document met POST /anonymize.
GET/api/public/v1/me
Geeft informatie over de gebruikte sleutel en de organisatie. Handig om een sleutel te testen.
Elk verzoek bevat een API-sleutel in de header X-API-Key. Sleutels maakt u aan in het dashboard onder Instellingen → API-sleutels. De sleutel wordt één keer getoond; wij bewaren alleen een SHA-256-hash.
Elke sleutel hoort bij precies één organisatie. U ziet via de API uitsluitend gegevens van die organisatie. Een ingetrokken sleutel werkt direct niet meer.
Bewaar de sleutel als geheim op uw server (bijv. ANONID_API_KEY). Gebruik hem nooit in een browser of app.
Maak per koppeling een aparte sleutel, zodat u er één kunt intrekken zonder de rest te raken.
Stuur een scan of foto van een identiteitsbewijs. U ontvangt een PDF waarin de velden van het wettelijk profiel zijn afgeschermd. Het origineel wordt na verwerking direct verwijderd.
Welke velden worden afgeschermd en welke gegevens worden bewaard, bepaalt het wettelijk profiel van het dossier: employer (werkgever), agency_intake (uitzendbureau), wwft (Wwft-instelling), masked_copy (afgeschermde kopie) of record_only (alleen registratie, geen kopie). Zonder dossier_id geldt het standaardprofiel van uw organisatie. Voor employer en agency_intake is een vooraf bevestigd dossier verplicht (anders 409). Bij alle andere profielen worden BSN en MRZ (de machineleesbare code onderaan het document) altijd afgeschermd.
POST/api/public/v1/anonymize
Anonimiseert één identiteitsbewijs (voorkant, optioneel achterkant). Body als multipart/form-data.
Parameters
Naam
Type
Verplicht
Uitleg
file
bestand
ja
Voorkant of het hele document. JPG, PNG of PDF, maximaal 10 MB.
file_back
bestand
nee
Achterkant. Wordt alleen samengevoegd als u twee bestanden stuurt; verplicht bij profielen die de achterkant nodig hebben (anders 400).
dossier_id
uuid
nee
Dossier waarvan het wettelijk profiel de afscherming, bewaarde gegevens en bewaartermijn bepaalt.
purpose
string
nee
Doel van de kopie (3–200 tekens), bijv. "Huurcontract Prinsengracht 42". Wordt als diagonaal watermerk "KOPIE – doel" op elke pagina gezet en bij het document bewaard.
extract
boolean
nee
1 of true: geef ook de uitgelezen gegevens terug. Gelijk aan header X-Extract: 1.
format
string
nee
json: ontvang een JSON-antwoord met de PDF in base64. Gelijk aan header Accept: application/json.
Headers bij elk PDF-antwoord: X-Document-Id, X-Document-Type en Content-Disposition met een nette bestandsnaam (voornamen-achternaam-vervaldatum.pdf).
Met extract=1 extra: X-Anonymid-Extracted (base64-JSON van de uitgelezen gegevens) en X-Anonymid-Expired (true/false), plus leesbare headers X-Extracted-Full-Name, X-Extracted-Surname, X-Extracted-Given-Names (URL-gecodeerd), X-Extracted-Date-Of-Birth en X-Extracted-Date-Of-Expiry.
X-anonid-Extracted en X-anonid-Expired zijn verouderde namen die nog worden meegestuurd. Gebruik in nieuwe code de X-Anonymid-namen.
name_confidence is high als de gedrukte naam en de MRZ overeenkomen; bij medium of low is de splitsing afgeleid en controleert u de naam beter.
Alle gegevens van één document, inclusief alle uitgelezen velden en links naar de bestanden. anonymized_url is een tijdelijke downloadlink (10 minuten).
Parameters
Naam
Type
Verplicht
Uitleg
id
uuid
ja
Het id van het item (in het pad).
Uitgelezen velden zijn alleen gevuld als het wettelijk profiel die gegevens laat bewaren. Lege velden zijn null.
expired is true als de vervaldatum van het document vandaag of eerder is.
Het compliance-rapport (PDF, één A4) met afgeschermde velden, bewaarde gegevens, bewaartermijn, bron en hash. Met ?format=json dezelfde gegevens als JSON.
Een dossier legt vast onder welk wettelijk profiel, met welke afscherming, bewaarde gegevens en bewaartermijn een persoon is verwerkt. Deze vastlegging verandert niet als u later uw standaardinstellingen aanpast.
GET/api/public/v1/dossiers
Lijst van dossiers, nieuwste eerst.
Parameters
Naam
Type
Verplicht
Uitleg
status
string
nee
active, ended of destroyed.
legal_profile
string
nee
employer, agency_intake, wwft, masked_copy of record_only.
created_after
datum
nee
Alleen items aangemaakt op of na dit moment (ISO 8601, bijv. 2026-01-01).
created_before
datum
nee
Alleen items aangemaakt vóór dit moment (ISO 8601).
limit
integer
nee
Aantal resultaten per pagina, 1–100. Standaard 25.
cursor
string
nee
Waarde van next_cursor uit het vorige antwoord, voor de volgende pagina.
Uploadverzoeken zijn de magic links waarmee u iemand vraagt zelf een ID-kopie aan te leveren. U kunt ze in de app of via de API aanmaken; geheime codes en tokens worden nooit teruggegeven.
Belangrijk: de upload_url wordt uitsluitend in het antwoord op het aanmaken (POST) teruggegeven. Wij bewaren alleen een hash van de link, dus daarna is hij nooit meer op te vragen. Bewaar of verstuur hem direct.
Aanmaken is begrensd op 30 verzoeken per uur per API-sleutel (429 met Retry-After). Elk aangemaakt verzoek telt mee voor uw documentquotum en komt in het logboek als upload_request.created.
POST/api/public/v1/upload-requests
Maak een uploadverzoek (magic link) aan. Met send_email=true verstuurt anonid de uitnodiging in de huisstijl van uw organisatie; met send_email=false verstuurt u de link zelf.
Parameters
Naam
Type
Verplicht
Uitleg
recipient_email
string
ja
E-mailadres van de persoon die het ID aanlevert. Ook nodig bij send_email=false: de verificatiecode gaat naar dit adres.
label
string
nee
Eigen kenmerk, max. 120 tekens (bijv. naam of dossiernummer).
purpose
string
nee
Doel van de verwerking, 3–200 tekens. Wordt in de uitnodiging en het rapport getoond.
dossier_id
uuid
nee
Bestaand dossier. Verplicht voor de profielen employer en agency_intake (eerst bevestigen in de app).
legal_profile
string
nee
masked_copy, wwft of record_only als u geen dossier_id meegeeft. Zonder beide geldt het standaardprofiel van uw organisatie.
expires_in_days
integer
nee
Geldigheid van de link, 1–90 dagen. Standaard 7.
reminder_interval_days
integer
nee
Automatische herinnering elke N dagen (1–30). Leeg = geen herinneringen.
retention_days
integer
nee
Bewaartermijn in dagen (0–3650) voor een nieuw dossier. Leeg = organisatiestandaard.
send_email
boolean
nee
Standaard true. false = geen mail; u verstuurt de upload_url zelf.
Uploadverzoek aanmaken — u verstuurt de link zelf (send_email: false)
curl -X POST https://anonid.nl/api/public/v1/upload-requests \
-H "X-API-Key: $ANONID_API_KEY" \
-H "Content-Type: application/json" \
-d '{"recipient_email":"m.jansen@example.nl","dossier_id":"a3e0…","send_email":false}'
# Bewaar upload_url direct: deze is later niet meer op te vragen.
Lijsten zijn gesorteerd op created_at, nieuwste eerst.
Elk lijstantwoord heeft de vorm { "data": [...], "next_cursor": "..." }. Geef next_cursor mee als cursor voor de volgende pagina; null betekent dat u alles hebt.
limit is maximaal 100 (standaard 25).
Filters combineert u vrij als queryparameters. Datums in ISO 8601. Een ongeldige waarde geeft 400 invalid_parameter.
Fouten komen terug als JSON: { "error": "leesbare uitleg", "code": "machinecode" }. Tijdelijke fouten (429 en 5xx) mag u opnieuw proberen: maximaal 3 keer met oplopende wachttijd (ongeveer 1, 2 en 4 seconden). Bij 429 wacht u het aantal seconden uit Retry-After. Andere fouten zijn blijvend; opnieuw proberen helpt dan niet.
Status
Code
Betekenis
Opnieuw proberen
400
invalid_parameter
Een parameter of bestand ontbreekt of is ongeldig.
nee
401
invalid_api_key / revoked_api_key
Geen, onjuiste of ingetrokken API-sleutel.
nee
402
plan_required / payment_past_due
De API vereist een actief Business-abonnement, of er staat een betaling open.
nee
404
not_found
Het item bestaat niet of hoort niet bij uw organisatie.
nee
404
file_expired / no_portrait
Het bestand is door de bewaartermijn verwijderd, of er is geen pasfoto.
nee
402
quota_over_monthly / quota_over_lifetime
Het documentquotum van uw abonnement is bereikt (ook bij het aanmaken van uploadverzoeken).
nee
409
dossier_required
Het wettelijk profiel vereist eerst een bevestigd dossier (dossier_id).
nee
413
—
Bestand groter dan 10 MB.
nee
415
—
Bestandstype niet ondersteund (alleen JPG, PNG of PDF).
nee
422
—
Het document kon niet worden herkend of verwerkt.
nee
429
rate_limited
Limiet bereikt of tijdelijk druk. Volg de Retry-After-header.
De API geeft alleen gegevens terug die volgens het wettelijk profiel van het dossier zijn bewaard. Wat niet bewaard mocht worden, bestaat ook niet in onze database.
Het BSN (burgerservicenummer) wordt alleen bewaard en teruggegeven bij het profiel employer, waar de wet dat voor de loonadministratie vraagt. In alle andere gevallen is bsn null.
Elke opvraging van persoonsgegevens wordt in het logboek vastgelegd als api.data_read, met de sleutel, het item en welke velden (nooit de waarden). Bevat een antwoord een BSN, dan komt er een extra regel api.bsn_read bij. U ziet dit via GET /audit-log.
Downloadlinks in anonymized_url verlopen na 10 minuten. Bestanden worden na de bewaartermijn definitief verwijderd; de API geeft dan 404 file_expired.
Gebruik de API alleen vanaf uw eigen server. Stuur nooit een API-sleutel naar een browser of mobiele app.