Für Menschen

Verifizieren auf dem Gerät. Keine App nötig.

Tippe auf einen Verihop-Link oder scanne einen QR-Code. Verifiziere dich mit dem Smartphone, gib nur die angefragten Felder frei und fahre ohne Konto fort.

Demo testen

So funktioniert es

Starte mit einem sicheren Link. Verihop wählt automatisch den besten Weg: vollständige App, App Clip, Android App Link, QR oder Web-Fallback.

1

Auf Verifizieren tippen oder QR-Code scannen

Verihop öffnet sich und zeigt, was angefragt wird.

2

Auf dem Gerät verifizieren

Wenn du deine Daten teilen möchtest, bestätigst du die Freigabe.

3

Verifiziert zurückkehren

Die freigegebenen Felder werden geteilt und du machst sofort weiter. Für Wiederverwendung speicherst du die Verifikation bei Aufforderung in der vollständigen App.

DEMO TESTEN Live-Filmcheckout öffnen. Sieh dir den Rücksprung-Flow und den Developer Request Trace an.

Für Devs

Eine Sessions API. Wir orchestrieren den Flow.

Egal ob iOS, Android, Desktop, installierte App oder App Clip/App Link: dein Backend erstellt eine Session und rendert die zurückgegebene Launch URL oder QR-fähige Payload.

Grundlagen

Path: https://api.verihop.com

Authentifiziere Partner-Requests ausschließlich über dein Backend:

Authorization: Bearer <api_key>

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.

Testkonto erstellen

Schnelle Integrationsschritte

  1. Erstelle eine Session über POST /v1/sessions mit Callback-URL und angefragten Feldern.
  2. Sende den Nutzer zur zurückgegebenen launch_url.
  3. Verarbeite den Callback und speichere session_id und result_token.
  4. Optional: frage GET /v1/sessions/{id} für Statusupdates ab.
  5. Rufe verifizierte Daten serverseitig ab über GET /v1/sessions/{id}/result.
Integrationsflow anzeigen
User Flow anzeigen

Postman Collection

Importiere die Verihop API Collection.

Setze API-Key und Callback-URL, erstelle eine Session und füge danach den Result Token ein, um das verifizierte Ergebnis abzurufen.

Postman Collection herunterladen

POST /v1/sessions

Erstelle eine Verifikationssession und erhalte Launch URL plus signierten Session Token.

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"
}
Erklärung der Body-Elemente
  • app: Anzeigename der Partner-App in Verihop (max. 80 Zeichen).
  • header: kurzer Verifikationstitel für den Nutzer (max. 120 Zeichen).
  • fields: angefragte Feldtokens; leer/fehlend fällt auf legalName und over18 zurück.
  • 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.
Erklärung der Header
  • Authorization: Partner-API-Key im Bearer-Format.
  • Content-Type: nutze application/json für Request-Body-Parsing.
  • Idempotency-Key: Retry-Key für Create-Session-Dedupe; sende UUID v4/v7 und nutze ihn nur für Retries derselben 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="
}
Erklärung der Response-Elemente
  • 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 Buttons, QR-Codes, E-Mail, SMS, Webflows und native Appflows.
  • qr_url: QR-sichere URL; aktuell identisch mit launch_url.
  • jwt: signierter Session Token für Verihop. Partnerclients validieren diesen normalerweise nicht direkt.
  • deep_link: Legacy/native-only Kompatibilitätsfeld für Installed-App-Integrationen.
Häufige Fehler
  • 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}

Nicht-PII Session-Status-Endpunkt für Desktop-Orchestrierung und 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

Öffentlicher Signing-Keyset-Endpunkt zur Verifikation von callback_jwt auf Partnerbackends.

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

GET /v1/sessions/{id}/result

Rufe die verifizierte Result Payload serverseitig mit einem einmaligen Result Token ab.

Authorization: Bearer <api_key>
X-Result-Token: <result_token>
Success 200 response
{
  "session_id": "sess_123",
  "status": "success",
  "result": {
    "legalName": "Jane Doe",
    "over18": "yes"
  }
}
Häufige Fehler
  • 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

Feldkatalog

Request field tokens (fields)

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

Response result fields

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

Häufige Fragen

Kann der Flow von einer Desktop-Website mit QR-Code starten?

Yes. Your backend creates a session using POST /v1/sessions, then renders the returned qr_url inside a QR shown on the desktop page. The user scans that QR with their phone and Verihop opens the best available experience.

Soll der QR zuerst eine Website öffnen oder direkt Verihop?

Best UX is direct launch: encode the returned qr_url. It is the same universal HTTPS handoff as launch_url and supports app, lightweight, and web fallback paths.

Ist der Deep Link für iOS und Android gleich?

Yes. Verihop uses the same launch_url on both platforms. Your callback shape is also the same: Verihop appends session_id, success-path result_token, and optional callback_jwt.

Was müssen Android-Partnerapps für Callbacks registrieren?

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.

Welche Callback-URL nutze ich für Desktop- oder Web-initiierte 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.

Müssen Partnerclients die jwt aus POST /v1/sessions verifizieren?

Nein. Dieser Token ist für Verihop bestimmt. Partner behandeln ihn als opaque Transportdaten und nutzen launch_url, um Verihop zu starten.

Warum enthält der Callback nur session_id und 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.

Wie gehen wir mit Ablauf und Retries um?

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.

Was passiert, wenn Verihop nicht auf dem Telefon installiert ist?

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).

Wie funktioniert Idempotency und ist Missbrauch begrenzt?

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.

Beispiel

Open Movie Age-Check Demo

Für Unternehmen

Datenpunkte anfragen. Verifizierte Ergebnisse erhalten. Wir übernehmen den Rest.

Verihop ersetzt upload-lastige Verifikation durch ein One-Hop-Rebound-Modell: Nutzer verifizieren sich auf dem Smartphone, kehren mit tokenisierten Ergebnissen zurück und dein Backend erhält nur die freigegebenen Datenpunkte.

Demo anfragen
Verihop flow overview on device Verihop flow step for document and profile checks

So funktioniert es für dein Unternehmen

1

Testkonto erstellen

Erhalte ein Testkonto und einen Test-API-Key, um die Implementierung zu testen. Daten im Testmodus bleiben redigiert.

2

Go-live beantragen

Beantrage im Portal den Go-live und reiche die Produktionsinformationen ein. Verihop prüft das Konto vor der Aktivierung.

3

Verifizierte Daten erhalten

Sobald das Konto live ist, liefert dein Live-API-Key verifizierte Daten. Nutzung und Abrechnung bleiben im Portal sichtbar.

DEMO TESTEN Sieh den API-gestützten Rebound-Flow in Aktion. Starte die Film-Demo, um Session-Erstellung, Callback-Handoff und Ergebnisaustausch an einem Ort zu sehen.

Vorteile für Unternehmen

Was du gewinnst, wenn Verifikation nicht in deinem eigenen Stack liegt.

Onboarding mit wenig Reibung

Reduziere Abbrüche mit einem geführten Rebound-Flow, der schneller und klarer wirkt als upload-lastige Verifikation.

Kein KYC-Ops-Aufwand

Spare dir MRZ, NFC, Liveness, Dokumentenparsing und lange Integrations-Edgecases.

Datensparsamkeit by Design

Erhalte nur die freigegebenen verifizierten Felder, nicht Rohscans und Fotoarchive, die du dauerhaft schützen musst.

Prüfungen mit hoher Sicherheit

Dokumentenechtheit, sichere Chip-Prüfungen und biometrische Liveness laufen in einem vertrauenswürdigen On-Device-Flow.

Direkt zurück in dein Produkt

Nutzer schließen die Verifikation ab und kehren mit sauberer Callback-Metadaten direkt in App oder Website zurück.

Weniger Wiederholung für wiederkehrende Nutzer

Vertrauenswürdige Prüfungen bleiben bereit, sodass wiederholte Verifikation für Teams und Nutzer reibungsloser wird.

Flexibel by Design

Starte denselben vertrauenswürdigen Flow per Button, QR-Code oder Customer-Success-Chat, ohne das Handoff-Modell zu ändern.

Keine Tippfehler-Schleifen mehr

Verifizierte Daten kommen aus MRZ-Lesung und sicherer Chipdaten, wodurch manuelle Fehler und downstream Verwirrung sinken.