Klar
Sieh, wer anfragt und was genau benötigt wird.
Verlässliche Angaben, kontrolliert geteilt
Verifiziere dich auf deinem Smartphone, sieh genau, was angefragt wird, und stimme zu, bevor etwas geteilt wird.
Zum Beispiel:
Sieh dir die Anfrage an
Der Dienst startet eine Verihop-Anfrage. Du durchläufst die geführte Prüfung, prüfst die angefragten Angaben und machst dort weiter, wo du aufgehört hast.
Ein Dienst fragt bestimmte Angaben an. Du verifizierst dich auf deinem Smartphone, prüfst die Anfrage und stimmst der Weitergabe zu. Nach der Prüfung kehrst du zum Dienst zurück.
Was dich erwartet
Sieh, wer anfragt und was genau benötigt wird.
Erfolgreiche unterstützte Prüfungen landen nicht in einer routinemäßigen Prüfschlange.
Nutze eine gespeicherte gültige Verifikation, wenn der Dienst sie akzeptiert.
Gib nur die angefragten Angaben frei.
Starte über einen Verihop-Link oder QR-Code. Du siehst vor jeder Freigabe, wer anfragt und welche Angaben benötigt werden.
Verihop zeigt den anfragenden Dienst und die exakt benötigten Angaben.
Folge den für die Anfrage verfügbaren geführten Ausweis- und Live-Inhaberprüfungen.
Anfrage freigebened details and continue where you left off.
Für den Alltag gemacht
Alter
Bestätige dein Alter und mach weiter.
Vermietung & Dienste
Teile die angefragten verifizierten Angaben.
Konto-Onboarding
Schließe die Prüfung ab und kehre direkt zum Dienst zurück.
Kontozugang
Verifiziere dich für sensible Aktionen, Support oder Kontowiederherstellung.
Entwickelst du eines dieser Erlebnisse? Sieh, wie Verihop für Unternehmen, Integrationen und Customer Journeys funktioniert. Zu FÜR UNTERNEHMEN →
Deine Entscheidung
Dokument prüfenLies MRZ und sicheren Chip aus, sofern unterstützt.
Inhaber prüfenNutze geführte Liveness-Prüfung und Gesichtsabgleich für die aktive Verifikation.
Anfrage freigebenDer Dienst erhält die Angaben, die du freigibst.
Bereit, wenn du es bist
Teste die Altersprüfungsdemo, sieh dir die genau angefragten Angaben an und schließe den Smartphone-Ablauf ab.
API für persönliche Identität
Erstelle eine Session. Teile die Start-URL. Rufe das freigegebene Ergebnis ab. Verifikation, Einwilligung und Geräterouting werden für dich übernommen.
Suchst du die Produkt- und Geschäftsübersicht? Zu FÜR UNTERNEHMEN →
INTEGRATIONSSCHRITTE
POST /v1/sessions
Nutze launch_url oder qr_url; native iOS-Apps öffnen app_clip_url unverändert.
session_id + result_token
GET /v1/sessions/{id}/result
Einmaliger Abruf über dein Backend.
Optional: Session-Status prüfen GET /v1/sessions/{id}
API-Schlüssel bleiben in deinem Backend. Verifizierte personenbezogene Daten werden nicht in Callback-URLs eingefügt.
Eine vom Backend verwaltete Sitzung startet den Ablauf; freigegebene Identitätsinformationen werden Server-zu-Server abgerufen.
Im Customer Portal testen
Nutze ein Testkonto, um angefragte Felder auszuwählen, einen Callback einzurichten, das Session Beispiel auszuführen und echte Anfrage, Antwort, Sitzungsstatus und strukturiertes Ergebnis zu prüfen.
Integrations-Skill für Agents
Eine sichere Quelle für Testeinrichtung, serverseitige Sessions, Callbacks, Ergebnisse, Startverhalten und kompakte Muster für Node, Python, Swift, Kotlin, Java, Go, PHP, Ruby und cURL.
Postman Collection
Probiere die Sammlung mit einem Testschlüssel aus. Behalte den Idempotenzschlüssel für Wiederholungen und rufe das Ergebnis einmal über dein Backend ab.
Die Beispielwerte unten sind keine wiederverwendbaren Zugangsdaten. Nutze die tatsächlich zurückgegebenen URLs, IDs und Fristen.
Basis-URL: https://api.verihop.com
Authentifiziere Partner-Requests ausschließlich über dein Backend:
Authorization: Bearer <api_key>
GET-Anfragen haben keinen Anfrageinhalt. Nutze für Sitzungsstatus und Ergebnis den passenden Test- oder Live-Schlüssel; JWKS benötigt keinen API-Schlüssel.
Erstelle zuerst ein Testkonto, um einen API-Key für die Integration zu erhalten. Testantworten sind absichtlich redigiert; dasselbe Konto kann später für Produktion aktiviert werden.
Test redigiert zurückgegebene persönliche Werte; Smartphone-Prüfungen verarbeiten weiterhin Identitätsdaten. Live-Zugang erfordert eine gesonderte Freigabe von Anwendungsfall, Feldern, Callback und Produktivstart.
/v1/sessionsCreate a verification session and receive the public launch fields.
Die Beispiele verwenden einen Testschlüssel. Die Einstellungen für Live-Verifikationen erhältst du bei der Aktivierung deines Kontos.
Dieses Beispiel fordert persönliche Angaben und Dokumentdetails aus einem Personalausweis oder Reisepass an; beide sind nicht erforderlich.
expires_at als absolute Frist. Das Öffnen des Links oder Fortsetzen der Verifikation verlängert diese Frist nie.Authorization: Bearer <api_key>
Content-Type: application/json
Idempotency-Key: <uuid>
{
"app": "RideNow",
"header": "Identity details",
"fields": ["legalName", "over18", "documentNumber", "documentExpiry"],
"allowedDocuments": ["idCard", "passport"],
"callback": "https://partner.example/verihop/callback"
}
app: Anzeigename der Partner-App in Verihop (max. 80 Zeichen).header: kurzer Verifikationstitel für den Nutzer (max. 120 Zeichen).fields: Liste die benötigten Katalog-Tokens auf. Eine fehlende oder leere Liste fordert keine Felder an.allowedDocuments: Optionale Liste zulässiger Dokumenttypen: passport, idCard, driverLicense oder residencePermit. Lasse sie weg, um alle unterstützten Dokumenttypen zuzulassen; sende kein leeres Array.callback: Basis-Rücksprung-URL aus POST /v1/sessions. Verihop öffnet sie nach Abschluss und ergänzt session_id, result_token (Success Path) und optional callback_jwt; erforderlich und gegen deine Produktions-Allowlist validiert.fields says which verified values you request. allowedDocuments says which document types may provide evidence.
{
"fields": ["legalName", "over18"],
"allowedDocuments": ["passport", "idCard"]
}
This means Passport OR ID Card is eligible. It does not require both. The user chooses the concrete document used by each relevant section in the Verihop app.
passport, idCard, driverLicense, and residencePermit are cumulative document-type assertions (AND). A request such as ["legalName", "passport", "idCard"] requires Passport + ID Card.documentNumber, documentExpiry, documentCountry, and documentNationality are one detail bundle. With explicit required types, they apply to each compatible required contributor; without one, the holder chooses one eligible document for the whole bundle. Driving licences do not supply documentNationality.type is not a unique identifier; receipt-backed partner evidence is distinguished by receiptId.documentNationality is also invalid.Authorization: Partner-API-Key im Bearer-Format.Content-Type: nutze application/json für Request-Body-Parsing.Idempotency-Key: Für Wiederholungen der Erstellung empfohlen. Erzeuge für jeden neuen Versuch eine UUID und verwende sie nur mit identischem Anfrageinhalt erneut.201-Antwort{
"session_id": "sess_123",
"expires_at": 1893456900,
"launch_url": "https://www.verihop.com/verify.html?session_id=sess_123&token=h_example123456789",
"app_clip_url": "https://appclip.apple.com/id?p=KycBox.VerifyBox.Clip&session_id=sess_123&token=h_example123456789",
"qr_url": "https://www.verihop.com/verify.html?session_id=sess_123&token=h_example123456789",
"status_url": "https://api.verihop.com/v1/sessions/sess_123"
}
session_id: eindeutige Session-ID für Tracking und Ergebnisabruf.expires_at: Ablaufzeit der Session (Unix Epoch Seconds).launch_url: primäre URL für Web, Android, QR-Codes, E-Mail, SMS und allgemeine Handoffs.app_clip_url: direkte native App-Clip-URL für iOS-Partnerapps. Öffne sie exakt wie zurückgegeben und rekonstruiere sie nicht.qr_url: QR-sichere URL; aktuell identisch mit launch_url.status_url: Session-Status-Endpunkt für serverseitiges Polling.401 missing_bearer_token, 401 invalid_api_key403 customer_inactive400 missing_callback_url, invalid_callback_url, callback_host_not_allowed400 field_not_allowed, invalid_field_token, invalid_allowed_documents409 idempotency_key_conflict, idempotency_key_in_progress, idempotency_key_expired413 request_too_large429 rate_limit_exceeded, daily_quota_exceeded/v1/sessions/{id}Optional: Verfolge den Session-Fortschritt ohne personenbezogene Daten abzurufen.
Authorization: Bearer <api_key>
200-Antwort{
"session_id": "sess_123",
"status": "issued",
"issued_at": 1893456000,
"expires_at": 1893456900,
"last_status": null,
"last_status_at": null,
"opened_at": null,
"result_available": false,
"result_token_expires_at": null
}
Eine abgeschlossene Sitzung kann status: "used" und last_status: "success" zeigen. result_available bedeutet, dass ein Ergebnis gespeichert wurde; es kann nach Abruf oder Ablauf true bleiben. Rufe das Ergebnis einmal vor Ablauf ab.
Polling ist schreibgeschützt und markiert keine Sitzung als geöffnet. Eine abgeschlossene Sitzung mit Testschlüssel enthält auch result_token, damit du das redigierte Ergebnis in Postman abrufen kannst. Live-Ergebnistokens kommen über den Callback.
/v1/sessions/{id}/resultRufe die verifizierte Result Payload serverseitig mit einem einmaligen Result Token ab.
A launch token starts with h_ and cannot be used here. X-Result-Token requires the short-lived res_ token from a live callback or completed test-key status response.
Authorization: Bearer <api_key>
X-Result-Token: <result_token>
200-AntwortBeispiel einer Testantwort auf die Anfrage oben: Der Nutzer wählte einen Personalausweis. Persönliche Werte sind redigiert; IDs und Zeitangaben sind Beispiele.
{
"session_id": "sess_123",
"status": "success",
"result": {
"legalName": "XXXTEST_USERXXX",
"over18": "XXXTEST_USERXXX"
},
"personalDetailsDocument": {
"type": "idCard",
"issuingCountry": "ESP",
"receiptId": "dr_AAAAAAAAAAAAAAAAAAAAAAAA"
},
"documents": [
{
"type": "idCard",
"issuingCountry": "ESP",
"receiptId": "dr_AAAAAAAAAAAAAAAAAAAAAAAA",
"details": {
"documentNumber": "XXXTEST_USERXXX",
"documentExpiry": "XXXTEST_USERXXX"
}
}
]
}
result contains requested Personal Details only. personalDetailsDocument identifies the verified document selected by the user as their Personal Details source. The same document also appears in documents[]; that duplication is deliberate and is not an additional verification.
Reine Dokumentergebnisse enthalten kein personalDetailsDocument.
documents[] contains every unique document that supported the Session: the Personal Details source, generic Document Details source, and each exact required-document source. Every entry contains type, issuingCountry, receiptId, and details. When no document details were requested, details is {}. Internal field attribution is never exposed.
receiptId verweist auf den historischen Verifikationsnachweis dieses Dokuments.documents[].receiptId independently with GET /v1/document-receipts/{receipt_id}. There is no combined receipt endpoint or combined JWS.410 result_token_expired; Receipt-Abruf und -Verifikation bleiben unabhängig.verified_at; reuse is not represented as a new document verification.Test mode preserves this exact structure and redacts only actual Personal Details and document-detail values with XXXTEST_USERXXX. It does not redact type, issuingCountry, receiptId, or structural keys.
401 missing_bearer_token, invalid_api_key, missing_result_token403 customer_inactive, api_key_environment_mismatch, invalid_result_token410 result_token_expired409 result_token_used404 result_not_available, session_not_found503 document_receipt_unavailable/.well-known/jwks.jsonÖffentliche Prüfschlüssel für Callback-JWTs und Document Receipts.
Ein API-Schlüssel ist nicht erforderlich. Die Cachezeit beträgt 300 Sekunden. Prüfe Signaturen und Claims im Backend; brich bei fehlgeschlagenem Schlüsselabruf oder unbekanntem Schlüssel ab.
200-Antwort{
"keys": [
{
"kty": "RSA",
"kid": "example-key-id",
"alg": "RS256",
"use": "sig",
"n": "...",
"e": "AQAB"
}
]
}
DOCUMENT RECEIPTS · OPTIONAL
/v1/document-receipts/{receipt_id}Retrieve an already-issued Document Receipt from your partner backend. Persistent retrieval is an optional extension to the four-step Sessions integration.
Authorization: Bearer <api_key>
receiptId-Werte aus GET /v1/sessions/{id}/result, um sie abzurufen.dr_.... Internal receipt identifiers and data-model terminology are not part of the public contract.200-Antwort{
"receiptId": "dr_AAAAAAAAAAAAAAAAAAAAAAAA",
"receiptVersion": 1,
"issuedAt": "2026-09-11T12:00:00.000Z",
"document": {
"type": "idCard",
"issuingCountry": "ESP"
},
"receipt": "eyJhbGciOiJSUzI1NiIsImtpZCI6InZocmNwdC1yczI1Ni0yMDI2MDkxMS0wMSIsInR5cCI6InZlcm...eyJyZWNlaXB0X3ZlcnNpb24iOjEsInZlcmlmaWNhdGlvbiI6ey4uLn19.signature-placeholder"
}
The abbreviated signature above is a display placeholder, not a cryptographically valid sample receipt. receipt contains the original compact signed JWS, not a URL. The response identifies the document by type and issuing country without identity PII.
dr_ identifier does not authorize access.404 document_receipt_not_found.verihop_v1 methodology and signature verificationThe partner-facing methodology is verihop_v1, version 1. Verihop obtains document information from the supported document, runs its holder-verification flow, checks liveness, and matches the presented person against the document-holder evidence.
verified, holder verification passed, and liveness passed.Das Dekodieren einer kompakten JWS prüft keine Signatur. Verifiziere im Backend mit dem konfigurierten Verihop-JWKS-Endpunkt. Verlange alg=RS256, typ=verihop-document-receipt+jwt, einen bekannten Receipt-Schlüssel mit kid, den konfigurierten Issuer und die Audience aus deiner vertrauenswürdigen Partnerkonfiguration. Übernimm keine Schlüssel-URL, erwartete Audience oder Vertrauensentscheidung aus dem ungeprüften Token. Callback- und Document Receipt-Schlüssel haben getrennte Zwecke.
400 invalid_document_receipt_id401 missing_bearer_token, 401 invalid_api_key403 customer_inactive, 403 api_key_environment_mismatch404 document_receipt_not_found409 document_receipt_revoked, 423 document_receipt_held, 410 document_receipt_erased503 document_receipt_verification_unavailable, 503 document_receipt_unavailablefields)legalName, dateOfBirth, over18, over21, passport, idCard, driverLicense, residencePermit, documentNumber, documentExpiry, documentCountry, documentNationality
result enthält die angefragten persönlichen Angaben: legalName, dateOfBirth, over18 und over21. Angefragte Dokumentattribute stehen in documents[].details. Typanforderungen wie passport und idCard verlangen diese Dokumente; sie ergänzen weder einen booleschen Wert in result noch sämtliche Dokumentattribute.
Ja. Dein Backend erstellt eine Sitzung mit POST /v1/sessions und rendert die zurückgegebene qr_url als QR-Code auf der Desktopseite. Der Nutzer scannt den QR-Code mit dem Telefon und Verihop öffnet die bestmögliche Erfahrung.
Die beste UX ist ein direkter Start: Kodiere die zurückgegebene qr_url. Sie ist dieselbe universelle HTTPS-Übergabe wie launch_url und unterstützt App-, schlanke und Web-Fallbackpfade.
Verwende launch_url auf Android und für allgemeine Web-Handoffs. Eine iOS-Partnerapp, die die native App-Clip-Karte anzeigen möchte, öffnet die zurückgegebene app_clip_url. Die Callback-Struktur bleibt gleich: Verihop ergänzt session_id, im Erfolgsfall result_token und optional callback_jwt.
Erstelle die Session auf deinem Backend und sende die zurückgegebene app_clip_url an deine iOS-App. Öffne diese URL unter iOS 17 oder neuer mit SwiftUI Link oder UIApplication.open. Parse launch_url nicht, kopiere den Token nicht und hardcode die App-Clip-Bundle-ID von Verihop nicht. Ist die vollständige Verihop-App installiert, öffnet iOS stattdessen diese mit derselben Session.
Wenn du einen Custom Callback wie ridenow://verified nutzt, muss die Android-Partnerapp einen Intent Filter für dieses Scheme und diesen Host deklarieren. Wenn du für Desktop- oder Web-gestartete Flows einen https:// Callback nutzt, behandle ihn als Backend-Endpunkt, außer deine Android-App besitzt diese Domain über verifizierte App Links.
Verwende einen https://-Rückkehrendpunkt in deinem Backend. Verihop öffnet diese URL auf dem Smartphone mit session_id und bei Erfolg result_token in der Query. Dies ist die Rückkehr des Nutzers, kein Server-zu-Server-Webhook. Dein Backend prüft die gespeicherte Sitzungszuordnung und ruft GET /v1/sessions/{id}/result ab. Die Desktopseite kann den Abschluss bei deinem Backend abfragen.
Nein. Die Erstellung liefert Orchestrierungsfelder und undurchsichtige Launch-URLs, kein JWT und keine privaten Identitätsdaten. Öffne die zurückgegebene URL unverändert.
Eine erfolgreiche Rückkehr enthält session_id und result_token sowie gegebenenfalls callback_jwt. Manche App-Abläufe ergänzen Status- oder Quellenmetadaten. Dies sind weder persönliche Ergebnisse noch ein Verifikationsnachweis. Prüfe die Sitzungszuordnung und jedes mitgelieferte Callback-JWT und rufe das freigegebene Ergebnis im Backend ab.
callback_jwt verifizieren, und wo?Ja, auf dem Partnerbackend, wenn vorhanden. Verifiziere Signatur und Claims mit Verihop JWKS unter GET /.well-known/jwks.json. Prüfe Issuer, Audience und Expiry und stelle sicher, dass JWT-Claims zu den Callback-Querywerten passen.
Nein. API-Keys bleiben serverseitig und Ergebnisse werden nur über dein Backend abgerufen. Der Frontend/Web-Client sollte nur UI anzeigen und State an deine Backend-Session weitergeben.
Kläre zuerst einen verbrauchten, abgelaufenen oder unklaren Ergebnisaustausch. Wiederhole result GET nie automatisch und erstelle keine automatische Ersatz-Session. Nur eine bewusst neue Aktion startet einen neuen Versuch.
Öffne die zurückgegebene launch_url oder qr_url; die gehostete Seite führt zur unterstützten App, zum App Clip oder zur Installation. Unter Android kann der Nutzer nach der Installation zurückkehren und während der gültigen Sitzung auf Open Verihop tippen. Erstelle nicht allein wegen der Installation eine Ersatzsitzung. Nach Ablauf startet der Nutzer bewusst einen neuen Versuch.
POST /v1/sessions unterstützt Idempotency-Key für retry-sichere Create-Session-Aufrufe: gleicher Key plus gleiche Payload spielt die ursprüngliche Antwort erneut aus, während gleicher Key plus andere Payload 409 idempotency_key_conflict zurückgibt. Missbrauch wird zusätzlich durch API-Key-Auth, Callback-Allowlist, Field-Allowlist-Prüfungen, kundenspezifische Rate Limits/Quota, kurze Session-TTL und einmalige result_token begrenzt.
Im Testmodus starten
Use a redacted Testkonto, keep credentials on your backend, and move to production only after callback and field controls are approved.
Datenschutzorientierte Identitätsprüfung
Fordere verifizierte Identitäts- oder Berechtigungsangaben an. Kunden schließen die Prüfung auf ihrem Smartphone ab und geben frei, was geteilt wird.
Zum Beispiel:
keine Ausweisbilder oder Selfie-Dateien.
Von der Prüfung zu verlässlichen Angaben
Ein Dienst fragt bestimmte Angaben an. Der Kunde verifiziert sich auf dem Smartphone, prüft die Anfrage und stimmt der Weitergabe zu. Der Dienst erhält das freigegebene Ergebnis.
Warum das wichtig ist
Verifikation sollte Kunden weiterbringen, ohne aus einer einzelnen Entscheidung ein weiteres Dokumentenarchiv zu machen.
der befragten britischen Verbraucher hatten einen Kontoeröffnungsprozess abgebrochen.
FullCircl, State of Identity Verification 2025der Befragten in den Niederlanden gaben an, niemals eine Kopie ihres Passes, Personalausweises oder Führerscheins online zu teilen.
CBS, 2025In derselben FullCircl-Studie dauerte das Onboarding durchschnittlich 35 Minuten, 2,8-mal länger als von Kunden gewünscht. FullCircl, State of Identity Verification 2025
Die niederländische Datenschutzbehörde meldete 2025 insgesamt 39.407 Meldungen zu Verletzungen personenbezogener Daten. Autoriteit Persoonsgegevens, 2026
Deine Vorteile
Wähle einen Vorteil, um zu sehen, wie er entsteht.
Das Auslesen von MRZ und NFC-Chip unterstützt den Inhaberabgleich.
Die Dauer kann je nach Gerät, Dokument und Verbindung variieren.
Eine erfolgreiche Verifikation liefert das Ergebnis ohne routinemäßige manuelle Prüfschlange.
Erhalte freigegebene Felder statt Passbild oder Selfie des Kunden.
Kunden können eine auf ihrem Gerät gespeicherte Verifikation freigeben, wenn sie gültig bleibt und deine Richtlinie sie akzeptiert.
Beginne mit der Entscheidung
Alter & Berechtigung
Fordere ein verifiziertes Altersergebnis an.
Konto-Onboarding
Prüfe die Angaben, die du für deine Onboarding-Entscheidung brauchst.
Vermietung und Zugang
Prüfe die Identität, bevor Zugang gewährt wird.
Kontowiederherstellung
Fordere für sensible Aktionen eine neue Prüfung an.
Verihop prüft die freigegebenen Angaben. Dein Unternehmen trifft die Entscheidung.
Customer Portal
Führe redigierte Sitzungen aus und prüfe die Übergabe.
Reiche deine Produktionseinrichtung und deinen Feldumfang zur Prüfung ein.
Überwache Sitzungen, Callbacks, Nutzung und Teamzugriff.
Mit einem Anwendungsfall starten
Bring deine Customer Journey und Entscheidung mit. Wir skizzieren die kleinste sinnvolle Anfrage und einen Weg zum Testen.