Voor mensen

Verifieer jezelf op je telefoon. Geen app nodig.

Tik op één Verihop-link of scan een QR-code. Verifieer met je telefoon, keur alleen de gevraagde velden goed en ga verder zonder account aan te maken.

Probeer de demo

Hoe het werkt

Start met één veilige link. Verihop kiest automatisch de beste route: volledige app, App Clip, Android App Link, QR of webfallback.

1

Tik op Verifiëren of scan een QR-code

Verihop opent en laat zien wat er wordt gevraagd.

2

Verifieer op je telefoon

Wil je je gegevens delen, dan tik je om goed te keuren.

3

Keer geverifieerd terug

De goedgekeurde velden worden gedeeld en je gaat direct verder. Wil je hergebruik? Bewaar de verificatie in de volledige app wanneer daarom wordt gevraagd.

PROBEER DEMO Open de live filmcheckout. Bekijk de terugkeerflow en de developer request trace.

Voor developers

Eén Sessions API. Wij orkestreren de flow.

Of de gebruiker nu op iOS, Android of desktop zit, Verihop al heeft of een App Clip/App Link-route nodig heeft: je backend maakt één sessie en toont de launch URL of QR-vriendelijke payload.

Basis

Path: https://api.verihop.com

Authenticeer partnerrequests alleen vanaf je backend:

Authorization: Bearer <api_key>

Maak eerst een testaccount om een API-key voor integratie te krijgen. Testresponses zijn bewust geredigeerd en hetzelfde account kan later naar productie worden gezet.

Maak een testaccount

Snelle integratiestappen

  1. Maak een sessie via POST /v1/sessions met callback-URL en gevraagde velden.
  2. Stuur de gebruiker naar de teruggegeven launch_url.
  3. Verwerk de callback en leg session_id en result_token vast.
  4. Optioneel: poll GET /v1/sessions/{id} voor statusupdates.
  5. Haal geverifieerde data server-to-server op via GET /v1/sessions/{id}/result.
Bekijk integratieflow
Bekijk gebruikersflow

Postman-collectie

Importeer de Verihop API-collectie.

Stel je API-key en callback-URL in, maak een sessie en plak daarna de result token om het geverifieerde resultaat op te halen.

Download Postman-collectie

POST /v1/sessions

Maak een verificatiesessie en ontvang een launch URL plus ondertekende sessietoken.

Headers

Authorization: Bearer <api_key>
Content-Type: application/json
Idempotency-Key: <uuid>  // recommended

Body

{
  "app": "RideNow",
  "header": "Age check",
  "fields": ["legalName", "over18", "document"],
  "callback": "ridenow://verified"
}
Uitleg bij body-elementen
  • app: weergavenaam van de partnerapp binnen Verihop (max. 80 tekens).
  • header: korte verificatietitel die de gebruiker ziet (max. 120 tekens).
  • fields: gevraagde veldtokens; bij leeg/ontbrekend gebruikt Verihop legalName en over18.
  • callback: basis-retour-URL uit POST /v1/sessions. Verihop opent deze na afronding en voegt session_id, result_token (success path) en optioneel callback_jwt toe; verplicht en gevalideerd tegen je productie-allowlist.
Uitleg bij headers
  • Authorization: partner-API-key in bearer-formaat.
  • Content-Type: gebruik application/json voor request body parsing.
  • Idempotency-Key: retry-key voor create-session dedupe; stuur UUID v4/v7 en hergebruik alleen voor retries met dezelfde payload.
Success 201 response
{
  "session_id": "sess_123",
  "expires_at": 1730000000,
  "jwt": "",
  "launch_url": "https://www.verihop.com/verify.html?session_id=sess_123&token=h_abc123",
  "qr_url": "https://www.verihop.com/verify.html?session_id=sess_123&token=h_abc123",
  "status_url": "https://api.verihop.com/v1/sessions/sess_123",
  "requested_claims": ["legalName", "over18"],
  "assurance_required": "basic",
  "deep_link": "verihop://share?session="
}
Uitleg bij response-elementen
  • session_id: unieke sessie-ID voor tracking en result retrieval.
  • expires_at: vervaltijd van de sessie (Unix epoch seconds).
  • launch_url: primaire URL voor knoppen, QR-codes, e-mail, SMS, webflows en native appflows.
  • qr_url: QR-veilige URL; momenteel gelijk aan launch_url.
  • jwt: ondertekende sessietoken voor Verihop. Partnerclients valideren deze token normaal niet direct.
  • deep_link: legacy/native-only compatibiliteitsveld voor installed-app integraties.
Veelvoorkomende fouten
  • 401 missing_bearer_token, 401 invalid_api_key
  • 403 customer_inactive
  • 400 missing_callback_url, invalid_callback_url, callback_host_not_allowed
  • 400 field_not_allowed, invalid_field_token, request_too_large
  • 409 idempotency_key_conflict, idempotency_key_in_progress
  • 429 rate_limit_exceeded, daily_quota_exceeded

GET /v1/sessions/{id}

Niet-PII sessiestatus-endpoint voor desktoporkestratie en monitoring.

Authorization: Bearer <api_key>
Success 200 response
{
  "session_id": "sess_123",
  "status": "issued",
  "issued_at": 1730000000,
  "expires_at": 1730000300,
  "last_status": null,
  "last_status_at": null,
  "result_available": false,
  "result_token_expires_at": null
}

GET /.well-known/jwks.json

Publieke signing keyset om callback_jwt op partnerbackends te verifiëren.

Success 200 response
{
  "keys": [
    {
      "kty": "RSA",
      "kid": "kid_2025_01",
      "alg": "RS256",
      "use": "sig",
      "n": "...",
      "e": "AQAB"
    }
  ]
}

GET /v1/sessions/{id}/result

Haal de geverifieerde result payload server-to-server op met een eenmalige result token.

Authorization: Bearer <api_key>
X-Result-Token: <result_token>
Success 200 response
{
  "session_id": "sess_123",
  "status": "success",
  "result": {
    "legalName": "Jane Doe",
    "over18": "yes"
  }
}
Veelvoorkomende fouten
  • 401 missing_bearer_token, invalid_api_key, missing_result_token
  • 403 customer_mismatch, invalid_result_token
  • 410 result_token_expired
  • 409 result_token_used
  • 404 result_not_available, session_not_found

Veldcatalogus

Request field tokens (fields)

legalName, dateOfBirth, over18, over21, document, passport, residencePermit

Response result fields

legalName, dateOfBirth, over18, over21, documentType, documentNumber, documentExpiry, documentCountry, documentNationality, nationality

Veelgestelde vragen

Kan de flow starten vanaf een desktopwebsite met een QR-code?

Ja. Je backend maakt een sessie met POST /v1/sessions en toont de teruggegeven qr_url als QR op de desktoppagina. De gebruiker scant die QR met de telefoon en Verihop opent de beste beschikbare ervaring.

Moet de QR eerst een website openen of direct Verihop?

De beste UX is direct launch: encodeer de teruggegeven qr_url. Dit is dezelfde universele HTTPS-handoff als launch_url en ondersteunt app, lichte ervaring en webfallback.

Is de deep link hetzelfde voor iOS en Android?

Ja. Verihop gebruikt dezelfde launch_url op beide platformen. De callback-vorm is ook gelijk: Verihop voegt session_id, success-path result_token en optioneel callback_jwt toe.

Wat moeten Android partnerapps registreren voor callbacks?

If you use a custom callback such as ridenow://verified, the Android partner app must declare an intent filter for that scheme and host. If you use an https:// callback for desktop or web-started flows, treat it as a backend endpoint unless your Android app owns that domain with verified App Links.

Welke callback gebruik ik voor desktop- of webgestarte flows?

Use an https:// callback endpoint on your backend. After Verihop completes, your server receives session_id and result_token, then fetches GET /v1/sessions/{id}/result server-to-server.

Moeten partnerclients de jwt uit POST /v1/sessions verifiëren?

Nee. Die token is bedoeld voor Verihop. Partners behandelen deze als opaque transportdata en gebruiken launch_url om Verihop te starten.

Waarom bevat callback alleen session_id en result_token?

Callback query parameters are transport metadata only. Verified personal data is intentionally not sent in callback URLs. Your backend must exchange the one-time result_token to fetch the result payload securely. If enabled, callback_jwt can be verified via JWKS for callback authenticity.

Should partners verify callback_jwt, and where?

Yes, on partner backend when present. Verify signature and claims using Verihop JWKS at GET /.well-known/jwks.json. Validate issuer/audience/expiry and ensure JWT claims match callback query values.

Can my frontend call GET /v1/sessions/{id}/result directly?

No. Keep API keys server-side and fetch results from your backend only. The frontend/web client should only handle UI and pass state to your backend session.

Hoe gaan we om met expiratie en retries?

Create a new session when a session expires or the user abandons the flow. result_token is short-lived and single-use; if consumed or expired, restart with a new POST /v1/sessions.

Wat als Verihop niet op de telefoon is geïnstalleerd?

Provide a fallback page behind your QR flow that can explain how to install/open Verihop and then continue. After install, create a new session and show a fresh QR (do not reuse stale sessions).

Hoe werkt idempotency en is misbruik beperkt?

POST /v1/sessions supports Idempotency-Key for retry-safe create-session calls: same key + same payload replays the original response, while same key + different payload returns 409 idempotency_key_conflict. Misuse is further mitigated with API-key auth, callback allowlist policy, field allowlist checks, per-customer rate limits/quota, short session TTL, and one-time result_token.

Voorbeeld

Open Movie Age-Check Demo

Voor bedrijven

Vraag datapoints. Ontvang geverifieerde resultaten. Wij regelen de rest.

Verihop vervangt upload-zware verificatie door een one-hop reboundmodel: je gebruiker verifieert op de telefoon, keert terug met tokenized resultaten en je backend ontvangt alleen de goedgekeurde datapoints.

Vraag demo aan
Verihop flow overview on device Verihop flow step for document and profile checks

Hoe het werkt voor je bedrijf

1

Maak een testaccount

Krijg een testaccount en een test API-key om de implementatie te testen. Data uit testmodus blijft geredigeerd.

2

Vraag productie aan

Vraag in je portal productie aan en dien de productiegegevens in. Verihop beoordeelt het account vóór activatie.

3

Ontvang geverifieerde gegevens

Zodra het account Live is, geeft je live API-key geverifieerde gegevens terug. Gebruik en facturatie blijven zichtbaar in de portal.

PROBEER DEMO Bekijk de API-gedreven reboundflow. Open de filmdemo om sessiecreatie, callback-handoff en result exchange op één plek te zien.

Voordelen voor bedrijven

Wat je wint door verificatie buiten je eigen stack te houden.

Onboarding met weinig frictie

Verminder afhakers met een begeleide reboundflow die sneller en duidelijker voelt dan upload-zware verificatie.

Geen KYC-operatielast

Onderhoud geen MRZ, NFC, liveness, document parsing en lange lijst integratie-edgecases zelf.

Dataminimalisatie by design

Ontvang alleen de goedgekeurde velden die je vroeg, niet ruwe scans en fotoarchieven die je blijvend moet beschermen.

Sterke assurance checks

Documentauthenticiteit, veilige chipchecks en biometrische liveness gebeuren in één vertrouwde on-device flow.

Direct terug naar je product

Gebruikers ronden verificatie af en keren direct terug naar je app of site met schone callbackmetadata.

Minder herhaling voor terugkerende gebruikers

Vertrouwde checks blijven klaarstaan, zodat herhaalde verificaties soepeler voelen voor je team en gebruikers.

Veelzijdig by design

Start dezelfde vertrouwde verificatie vanuit een knop, QR-code of customer-success chat zonder het handoffmodel te veranderen.

Geen typfoutloops meer

Geverifieerde gegevens komen uit MRZ-reads en veilige chipdata, waardoor handmatige invoerfouten en downstream verwarring afnemen.