Naar hoofdinhoud springen
ShieldID

Webhooks en integraties

Webhooks voor identiteitsverificatie, een gehoste pagina en een widget.

Stuur een aanvrager naar een gehoste verificatiepagina of plaats de widget in uw eigen proces, ontvang een ondertekende webhook zodra een resultaat binnen is, en laat iedereen met de link het bevestigen op een openbare pagina voor referentiecontrole. Een KYC API-integratie die is gebouwd om binnen een middag live te gaan.

  • Met HMAC-SHA256 ondertekende callbacks
  • QR-overdracht van desktop naar telefoon
  • Sandbox-sessies worden nooit gefactureerd

Gehoste verificatiepagina

Eén link doet de hele flow.

Maak een sessie aan via de API en u krijgt een verificatie-URL terug. Verstuur deze per e-mail, sms of in uw eigen app — de pagina regelt de rest.

Desktop

De aanvrager opent de link aan zijn bureau.

QR-overdracht

De pagina toont een QR-code en een korte instructiekaart.

Opname met de telefoon

Door te scannen schakelt dezelfde sessie over op het vastleggen van document en selfie.

Geverifieerd

De sessie bereikt VERIFIED, nog steeds op de telefoon.

Terug naar u

Een redirect naar uw return-URL, plus een ondertekende webhook, in beide gevallen.

Werkt als een betalingsredirect

De aanvrager komt terecht op een pagina op de eigen URL van uw sessie. Geen account, geen app om te installeren.

QR-overdracht, van desktop naar telefoon

Wanneer de pagina op een desktop wordt geopend, toont deze een QR-code en een korte instructiekaart in plaats van om cameratoegang te vragen. Door de code te scannen opent dezelfde link op de telefoon, die direct overschakelt naar het vastleggen van het document en de selfie.

Keert terug naar u, met het antwoord

Zodra de sessie VERIFIED bereikt, stuurt de pagina door naar uw return-URL met het sessie-ID en de status toegevoegd, zodat uw app weet wat er is gebeurd zonder ergens anders op te hoeven wachten.

Met uw huisstijl, bij in aanmerking komende abonnementen

Uw bedrijfsnaam, logo, accentkleur en links naar voorwaarden en privacybeleid, toegepast op de gehoste pagina en de pagina voor de controle van inloggegevens.

Webhooks

Een ondertekende callback, zodra er een resultaat is.

Geef ons een webhook-URL op wanneer u een sessie aanmaakt en wij sturen het resultaat ernaartoe zodra de sessie is afgerond, zonder dat polling nodig is.

Ondertekend, niet alleen verzonden

Elke levering bevat een X-Bio-Signature-header: een HMAC-SHA256 van de request body, zodat u kunt aantonen dat deze van ons afkomstig is voordat u hem vertrouwt.

Opnieuw geprobeerd, niet fire-and-forget

Een mislukte levering wordt drie keer opnieuw geprobeerd, met telkens een langere wachttijd vóór elke poging.

Elke poging wordt vastgelegd

Succes of mislukking, wij houden aan onze kant een registratie van de poging bij.

Binnenkort beschikbaar Een leveringslogboek in de portal, zodat u zelf elke poging kunt inzien, volgt binnenkort.

Beschouw de meest recente VERIFIED als de waarheid

Door nieuwe pogingen kan een levering in zeldzame gevallen in een andere volgorde aankomen. Laat uw logica niet afhangen van het ontvangen van een webhook, maar van het sessie-ID, en laat een latere VERIFIED een eerdere overschrijven. Als u uw eigen status bijhoudt, ontdubbel dan op basis van het sessie-ID in plaats van op basis van de ontvangst van de webhook.

Controleer de handtekening

Vertrouw de payload voordat u erop handelt.

Bereken de HMAC-SHA256 opnieuw over de ruwe request body en vergelijk deze met X-Bio-Signature voordat u iets parseert.

javascript
const crypto = require("crypto");

function verifySignature(rawBody, signatureHeader, secret) {
  const expected = crypto.createHmac("sha256", secret).update(rawBody).digest("hex");
  const a = Buffer.from(expected, "hex");
  const b = Buffer.from(signatureHeader || "", "hex");
  return a.length === b.length && crypto.timingSafeEqual(a, b);
}

// Read the raw body — don't let a JSON body-parser touch it first.
app.post("/hooks/shieldid", express.raw({ type: "application/json" }), (req, res) => {
  const signature = req.header("X-Bio-Signature") || "";
  if (!verifySignature(req.body, signature, process.env.SHIELDID_WEBHOOK_SECRET)) {
    return res.status(401).send("invalid signature");
  }
  const event = JSON.parse(req.body);
  // Treat the latest VERIFIED status as authoritative; de-duplicate by session_id.
  res.status(200).send("ok");
});

JS-widget

De gehoste flow, geplaatst in uw eigen pagina.

De widget maakt een sessie aan en toont dezelfde gehoste flow inline, in een iframe, zodat aanvragers uw site nooit verlaten.

  • Wordt weergegeven in een iframe met toegang tot camera en microfoon, afgestemd op de grootte van de container.
  • Leest de sessiestatus op dezelfde manier uit als de gehoste pagina: via uw return-URL en uw webhook, zodra de sessie is afgerond.

Binnenkort beschikbaar Callbacks voor voltooiing binnen de pagina (onComplete, onCancel, onStep, automatisch aanpassen van de grootte) volgen binnenkort. Gebruik tot die tijd return_url en webhooks om te weten wanneer een sessie is afgerond — die werken vandaag al.

Voordat u dit in productie neemt

De widget accepteert momenteel een API-sleutel rechtstreeks in de browser. Beschouw dat als een gemak voor de sandbox, niet als patroon voor productie: maak de sessie aan vanuit uw eigen backend met uw sleutel aan de serverzijde, en geef de widget alleen de resulterende sessie, nooit een live sleutel die de browser van een bezoeker kan lezen.

html
<script src="https://cdn.shieldid.ca/sdk/v1/widget.js"></script>
<div id="shieldid-verify"></div>
<script>
  TLVerify.init({
    apiKey: "vk_sand_your_key", // sandbox only — see the note above for production
    containerId: "shieldid-verify",
    returnUrl: "https://yourapp.example/verified",
    webhookUrl: "https://yourapp.example/hooks/shieldid",
    locale: "en",
  });
</script>

Pagina voor referentiecontrole

Een openbare pagina voor een geverifieerde sessie.

Zodra een sessie VERIFIED bereikt, toont de eigen referentiecontrolelink een bevestiging in duidelijke taal: de naam van de aanvrager, het documenttype en de status. Iedereen met de link — een medeondertekenaar, een baliemedewerker, een wederpartij — kan het resultaat bevestigen zonder in te loggen op uw dashboard.

Jordan Reyes

Voorbeeldgegevens

Rijbewijs uit Californië

Geverifieerd

  • Aanmelden is niet nodig om de pagina te bekijken.
  • Er verschijnt nooit een ruwe ID-afbeelding of betrouwbaarheidsscore op — alleen een status en de identiteit, niets meer.
  • In dezelfde huisstijl als de gehoste pagina, bij daarvoor in aanmerking komende abonnementen.

Integratiepatronen

Hoe zes soorten bedrijven dit aansluiten.

De bouwstenen zijn overal hetzelfde: een sessie, een link of een widget, een webhook. Welk patroon past, hangt af van hoe en wanneer u het antwoord nodig hebt.

Verhuur en vastgoedbeheer

Stuur de gehoste link mee in dezelfde e-mail als het huuraanvraagformulier. De webhook zet de aanvrager in uw systeem op geverifieerd voordat u het dossier beoordeelt.

Juridisch en advocatenkantoren

Stuur de link tijdens de intake van de cliënt en bewaar de webhookbevestiging bij het dossier, zodat de identificatie van de cliënt is vastgelegd voordat de opdracht begint.

Condo- en HOA-verenigingen

Verwijs door vanuit het registratieformulier voor eigenaren of huurders dat het bestuur al gebruikt; het resultaat is binnen voordat de eenheid aan het register wordt toegevoegd.

Fintech en kredietverlening

De webhook activeert automatisch uw eigen acceptatiestap, zodat een aanvrager nooit hoeft te wachten tot iemand opmerkt dat er een resultaat is binnengekomen.

Marktplaatsen en gigplatforms

Integreer de widget in de onboarding van verkopers of chauffeurs voor een flow die uw app nooit verlaat; maak de sessie aan vanuit uw backend, zoals hierboven aanbevolen.

E-signature

Laat de gehoste flow draaien voordat de ondertekening begint en laat het vrijgeven van documenten afhangen van de webhook, niet van wat de aanvrager zelf beweert.

Vragen

Duidelijke antwoorden over de integratie.

Aan de slag

Koppel een webhook. Zie hem afgaan.

Maak een sandbox-sessie aan met een webhook-URL, voer een verificatie uit op uw eigen telefoon en lees de ondertekende callback die wordt verzonden.