ID
Scan
API voor identiteitsverificatie via NFC • Privacy voorop • Klaar voor API-integratie

Integreer identiteitscontrole in uw eigen software.

Maak vanuit uw eigen systeem beveiligde NFC-identiteitsverificatieverzoeken aan. Nodig gebruikers uit via e-mail of sms, of verstuur de gegenereerde link zelf. De gebruiker scant de NFC-chip in de mobiele app en u haalt alleen de velden op die uw proces nodig heeft.

Controle van de NFC-chipLees de DG1/DG2-gegevens en controleer de documentchip.
GegevensminimalisatieVraag alleen de velden en controles op die nodig zijn voor uw workflow.
Eigen workflowGebruik externe bronnen om de resultaten te koppelen aan je eigen dossiers.
Voorbeeldstroom
1POST /scan-requests
2Invite email / SMS / own channel
3App NFC + optional selfie check
4GET /scan-requests/{id}/details

API-stroom

ID Scan is bedoeld voor softwareleveranciers en organisaties die identiteitsverificatie willen toevoegen zonder zelf het volledige mobiele scanproces te hoeven ontwikkelen.

1

Een verzoek indienen

Maak een scanverzoek aan vanuit je backend. Voeg een externe referentie, taal, vervaldatum, bezorginstellingen, vereiste velden en controles toe.

2

Nodig de gebruiker uit

Laat ID Scan de e-mail of sms versturen, of gebruik je eigen communicatiekanaal met de teruggestuurde verificatielink.

3

Scan in de app

De gebruiker opent de mobiele app, scant de MRZ, leest de NFC-chip en voert eventueel een live selfiecontrole uit aan de hand van de portretfoto in DG2.

4

Het resultaat ophalen

Haal de status, controles, opgevraagde velden en auditgegevens op via de API. Alleen geconfigureerde velden worden weergegeven.

Basis-URL en authenticatie

API-aanroepen worden verzonden naar de basis-URL van de ID Scan API en geauthenticeerd met behulp van een API-sleutel die is gegenereerd in het ID Scan-portaal. De API-sleutel wordt via een speciale request-header verzonden en mag alleen aan de serverzijde worden gebruikt. Maak API-sleutels nooit zichtbaar in frontend-code of mobiele applicaties.

Base URL https://api.id-scan.app Example request GET https://api.id-scan.app/api/scan-requests/{id}/details X-API-KEY: YOUR_API_KEY Accept: application/json

Verzoek-antwoord genereren

Wanneer een scanverzoek wordt aangemaakt, retourneert de API het verzoek-ID, de verzoeksleutel, de vervaltijd en verificatielinks. Gebruik de geretourneerde WebUrl in je eigen e-mail, sms, portaal of workflow wanneer je gebruikmaakt van zelfaflevering. Op mobiele apparaten kan de DeepLinkUrl de app direct openen.

{ "ScanRequestId": "2153ae29-0b77-4601-87b6-17ce9037ef3d", "Status": "requested", "LanguageCode": "nl", "ExternalReference": "customer-12345", "RequestKey": "ab6f1c05de29", "ExpiresAtUtc": "2026-05-28T06:58:17.9384521Z", "DeepLinkUrl": "idcheck://scan/ab6f1c05de29", "WebUrl": "https://id-scan.app/ab6f1c05de29", "IsTest": false }

Bezorging opties

U kunt zelf bepalen hoe de gebruiker het verificatieverzoek ontvangt. Hierdoor past ID Scan zowel in volledig geautomatiseerde als in op maat gemaakte communicatiestromen.

Platform-e-mail

ID Scan verstuurt een uitnodigingsmail met uw bedrijfslogo en een beveiligde verificatielink.

Platform-sms

ID Scan stuurt de verificatielink via sms. Handig voor onboardingprocessen waarbij de mobiele telefoon centraal staat.

Zelf afhalen

Uw systeem ontvangt de link en stuurt deze door via uw eigen e-mail, sms, portaal of berichtenworkflow.

Status van verzoeken

Een verificatieverzoek doorloopt een aantal statussen. Integraties kunnen deze statussen gebruiken om de voortgang weer te geven, herinneringen te activeren of te bepalen of er een nieuw verzoek nodig is.

StatusOmschrijving
requestedThe request has been created and is waiting for the user to start or complete the verification.
completedThe user completed the flow. Use IsSuccess and the check fields to determine whether verification passed.
expiredThe request expired before the user completed the verification.
deletedThe request was deleted and is no longer available for completion.
failedThe request could not be completed successfully because of an error or failed verification step.

Externe referentie

Gebruik een externe referentie om een verificatieverzoek te koppelen aan uw eigen klant, medewerker, dossier, bestelling of onboarding-record. Dezelfde referentie wordt weergegeven wanneer u de details van het verzoek opvraagt.

Klant-ID

Koppel de aanvraag aan uw eigen klant- of cliëntdossier.

Zaak- of dossiernummer

Koppel het resultaat aan een Wwft-, HR- of compliance-dossier.

Order- of workflow-ID

Gebruik de verwijzing om de geautomatiseerde workflows voort te zetten nadat de verificatie is voltooid.

Verplichte velden

ID Scan ondersteunt gegevensminimalisatie. U kunt precies instellen welke velden naar uw systeem moeten worden teruggestuurd. De gebruiker kan vóór het verzenden zien welke gegevens worden gedeeld.

VeldOmschrijvingBron
surnameSurname / family name from the identity document.NFC DG1
given_namesGiven names from the identity document.NFC DG1
date_of_birthDate of birth. Can also be used for age checks.NFC DG1
date_of_expiryDocument expiry date.NFC DG1
document_numberDocument number. Can be returned full or masked depending on template settings.NFC DG1
document_typeDocument type, such as passport or identity card.NFC DG1
issuing_countryCountry that issued the document.NFC DG1
country_of_issueCountry of issue when available.NFC DG1
nationalityNationality from the identity document.NFC DG1
genderGender marker from the document, if requested.NFC DG1
photoPortrait photo from the NFC chip. Only return when explicitly needed.NFC DG2
mrz_masked_imageMasked MRZ image as proof of scan without exposing all MRZ data.Camera/MRZ
selfie_imageLive selfie image. Usually only included for manual review.Camera/selfie

Beschikbare controles

Controles kunnen worden aangevraagd als onderdeel van het verificatieproces. Sommige controles zijn technische NFC-controles, terwijl andere betrekking hebben op bedrijfsregels, zoals de minimumleeftijd of verificatie via een selfie.

ControleerOmschrijvingGeresulteerde uitkomst
nfc_read_successIndicates whether the NFC chip was successfully read.true / false
chip_authentication_successIndicates whether chip authentication or chip verification succeeded.true / false
document_not_expiredChecks if the document expiry date is in the future.true / false
minimum_ageChecks whether the person meets a configured minimum age without necessarily returning the date of birth.{ required, passed }
sod_signature_validChecks the SOD signature when available.true / false
dg1_hash_validChecks whether DG1 data matches the signed document data.true / false
dg2_hash_validChecks whether the portrait photo data matches the signed document data.true / false
active_auth_okOptional active authentication result when supported by the document.true / false / not available
selfie_checkOptional live selfie verification matched against the DG2 portrait photo.{ requested, consent_given, passed, status, method }

Resultaten- en retourvelden

Het eindpunt ‘result’ retourneert de status van het verzoek, de verificatiestatus, de externe referentie, de geselecteerde identiteitsvelden, de geselecteerde afbeeldingen en de controleresultaten. Velden waar niet om is gevraagd, worden niet geretourneerd.

Status van de aanvraag

Aangevraagd, voltooid, verlopen, verwijderd of mislukt, inclusief tijdstempels voor het aanmaken en voltooien.

Geselecteerde velden

Alleen vastgelegde persoonsgegevens, zoals naam, nationaliteit, geboortedatum of de vervaldatum van het document.

Controles en audits

NFC-leesstatus, chipverificatie, geldigheid van documenten, selfie-controle en optionele PDF-/rapportagegegevens.

Afbeeldingsvelden

Afbeeldingsvelden zoals de DG2-pasfoto, de afgeschermde MRZ-afbeelding en de selfie worden op verzoek inline weergegeven als Base64-gecodeerde gegevens. Afbeeldingen worden niet als openbare URL’s weergegeven.

Base64-gecodeerd

Gebruik de gegevenswaarde als in Base64 gecodeerde binaire afbeeldingsgegevens.

Inhoudstype

Gebruik het content_type, zoals image/jpeg, om de afbeelding correct weer te geven.

Alleen op verzoek

Beeldgegevens worden alleen opgenomen als het veld expliciet in de sjabloon wordt gevraagd.

Het verbergen van documentnummers

Het documentnummer kan volledig of gemaskeerd worden weergegeven. Door het nummer te maskeren wordt onnodige openbaarmaking van documentnummers beperkt, terwijl u in uw eigen systeem nog steeds kunt controleren of nummers overeenkomen of auditcontroles kunt uitvoeren.

WaardeOptieOmschrijving
(empty)No maskingReturn the document number as read from the identity document. Only use when the full document number is required.
last4_visibleLast 4 visibleMask the document number and only return the last four characters, for example *****7P44.
first4_visibleFirst 4 visibleMask the document number and only return the first four characters.

Voorbeeld van een API-verzoek

In het onderstaande voorbeeld wordt een verificatieverzoek aangemaakt, wordt ID Scan gevraagd de uitnodiging per e-mail te versturen en worden alleen de geselecteerde velden en controles teruggestuurd.

POST /api/scan-requests X-API-KEY: YOUR_API_KEY Content-Type: application/json { "externalReference": "customer-12345", "language": "en", "expiresInHours": 72, "delivery": { "mode": "platform", "channels": ["email"], "emailAddress": "client@example.com", "phoneNumber": null }, "template": { "fields": { "given_names": { "requested": true }, "surname": { "requested": true }, "document_number": { "requested": true, "masking": "last4_visible" }, "country_of_issue": { "requested": true }, "photo": { "requested": true }, "date_of_expiry": { "requested": true }, "nationality": { "requested": true }, "mrz_masked_image": { "requested": true } }, "checks": { "document_not_expired": true, "nfc_read_success": true, "chip_authentication_success": true, "selfie_check": true, "minimum_age": 18 } } }

Voorbeeldresultaat

Zodra het proces is voltooid, kunt u het resultaat opvragen aan de hand van het verzoek-ID of de verzoekcode. De externe referentie kunt u gebruiken om het resultaat aan uw eigen systeem te koppelen.

GET /api/scan-requests/{id}/details X-API-KEY: YOUR_API_KEY { "VerificationRequestId": "912eef5b-7ec7-4825-9125-b5a0e68eb878", "Name": "Jane Doe", "EmailAddress": "jane@example.com", "PhoneNumber": "31612345678", "PreferredLanguage": "en", "Status": "completed", "RequestType": "identity_check", "DeliveryMode": "platform", "DeliveryChannels": "sms,email", "ResultJson": { "fields": { "country_of_issue": "NLD", "nationality": "NLD", "given_names": "JANE MARIA", "surname": "DOE", "date_of_expiry": "2034-01-03", "document_number": "*****7P44", "photo": { "available": true, "content_type": "image/jpeg", "data": "/9j/..." }, "mrz_masked_image": { "available": true, "content_type": "image/jpeg", "data": "/9j/4AAQSQ==..." } }, "checks": { "nfc_read_success": true, "chip_authentication_success": true, "document_not_expired": true, "minimum_age": { "required": 18, "passed": true }, "selfie_check": { "requested": true, "consent_given": true, "passed": true, "status": "passed", "method": "on_device_face_match" } } }, "CreatedDateTimeUtc": "2026-05-26T06:14:26", "InvitationSentDateTimeUtc": "2026-05-26T06:14:26", "CompletedDateTimeUtc": "2026-05-26T06:16:04", "HasResult": true, "IsSuccess": true, "NfcReadSuccess": true, "ChipAuthenticationSuccess": true, "Summary": "Passport chip successfully read", "DocumentType": "PASSPORT" }

Gegevensbewaring en privacy

De bewaartermijnen kunnen per tenant worden ingesteld. Verificatiegegevens kunnen na een vaste periode, na het lezen of volgens uw geconfigureerde privacybeleid worden verwijderd. Dit helpt onnodige opslag van gevoelige identiteitsgegevens te beperken.

Vaste dagen

Verwijder verificatiegegevens na een ingesteld aantal dagen.

Na het lezen

Markeer gegevens als gelezen zodra ze zijn opgehaald en plan de verwijdering in voor daarna.

Instellingen voor het portaal en de API

Gebruik indien nodig aparte bewaartermijnen voor portaal- en API-workflows.

Aanvullende eindpunten

Naast het aanmaken en ophalen van verzoeken kunnen integraties ook uitnodigingen opnieuw versturen of een verzoek verwijderen. Het verwijderen van een verzoek kan worden gebruikt wanneer een workflow wordt geannuleerd of een verificatie niet langer nodig is.

Uitnodiging opnieuw verzenden

POST /api/scan-requests/{id}/resend

Verwijder aanvraag

DELETE /api/scan-requests/{id}

Lees meer

GET /api/scan-requests/{id}/details

Testmodus

De testmodus kan worden gebruikt om de volledige integratiestroom te valideren voordat deze live gaat. Testverzoeken worden in het API-antwoord gemarkeerd met IsTest, zodat uw systeem testgegevens kan onderscheiden van productieworkflows.

Veilig testen

Controleer het aanmaken van verzoeken, de verzending, het scannen van apps en het ophalen van resultaten zonder gebruik te maken van productieworkflows.

Te zien in het antwoord

Het antwoord op het aanmaakverzoek bevat parameter IsTest, waardoor testverzoeken gemakkelijk te herkennen zijn.

Later live gaan

Begin met het instellen van een test-API-sleutel of een testtenant en schakel na validatie over naar live-verificatie.

Mislukkingen en onvolledige resultaten

Niet elk verzoek leidt tot een succesvolle verificatie. Een gebruiker kan het proces afbreken, het verzoek kan verlopen of het NFC-lezen kan mislukken. Gebruik Status, HasResult, IsSuccess en de controlevelden om de uiteindelijke uitkomst te bepalen.

{ "VerificationRequestId": "912eef5b-7ec7-4825-9125-b5a0e68eb878", "Status": "completed", "HasResult": true, "IsSuccess": false, "NfcReadSuccess": false, "ChipAuthenticationSuccess": false, "Summary": "NFC chip could not be read", "DocumentType": null, "ResultJson": { "checks": { "nfc_read_success": false, "chip_authentication_success": false, "document_not_expired": null, "selfie_check": { "requested": true, "consent_given": false, "passed": false, "status": "not_completed", "method": "on_device_face_match" } } } }

Klaar om NFC-identiteitscontrole te integreren?

Maak een gratis account aan, genereer een API-sleutel en test het volledige proces voordat je live gaat.