78 Dokumentationen verfügbar

Wissensdatenbank

Enjyn KYC Dokumentation

Zuletzt aktualisiert: 28.12.2025 um 12:14 Uhr

Enjyn KYC – API Dokumentation

Enjyn KYC ist eine deutsche Identitätsverifizierungslösung, die Ausweisprüfung, Liveness-Check und biometrische Gesichtserkennung in einer einfachen REST API vereint. Diese Dokumentation erklärt alle Funktionen, Endpunkte und Best Practices für die Integration.

💡 Tipp: Mit Enjyn KYC können Sie bis zu 100 Verifizierungen pro Monat kostenlos durchführen. Perfekt zum Testen und für kleinere Projekte.

Übersicht

Enjyn KYC bietet eine mehrstufige Identitätsprüfung:

  • Dokumentenprüfung: Automatische OCR-Erkennung deutscher Personalausweise und Reisepässe
  • Datenabgleich: Vergleich der erkannten Daten mit den erwarteten Personendaten
  • Liveness-Check: Video-basierte Lebenderkennung zum Schutz vor Fotos und Deepfakes
  • Gesichtserkennung: Biometrischer Abgleich zwischen Ausweisfoto und Live-Video

Basis-URL

https://api.verify.enjyn.de

Authentifizierung

Die API verwendet Domain-basierte Authentifizierung. Ihre Domain muss vor der Nutzung freigeschaltet werden. Anfragen von nicht autorisierten Domains werden mit einem 403 Forbidden Fehler abgelehnt.

ℹ️ Domain freischalten: Kontaktieren Sie uns unter support@enjyn.de oder über das Kontaktformular, um Ihre Domain freizuschalten.

Schnellstart

So integrieren Sie Enjyn KYC in 3 Schritten:

  1. Session erstellen: Senden Sie die zu prüfenden Personendaten an die API
  2. Nutzer verifizieren: Leiten Sie den Nutzer zum Verifizierungslink weiter
  3. Ergebnis abrufen: Holen Sie das Verifizierungsergebnis per API oder Webhook

Beispiel: Session erstellen

// JavaScript / Node.js
const response = await fetch('https://api.verify.enjyn.de/api/v1/verify', {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json'
    },
    body: JSON.stringify({
        vorname: 'Max',
        nachname: 'Mustermann',
        geburtsdatum: '01.01.1990',
        return_url: 'https://ihre-seite.de/callback'
    })
});

const data = await response.json();
console.log(data.verify_url); // Link für den Nutzer

Beispiel: Ergebnis abrufen

// Ergebnis mit Session-ID abrufen
const result = await fetch('https://api.verify.enjyn.de/api/v1/get-result/' + sessionId);
const data = await result.json();

if (data.status === 'verified') {
    console.log('Verifizierung erfolgreich!');
} else if (data.status === 'failed') {
    console.log('Verifizierung fehlgeschlagen');
}

API Endpunkte

POST /api/v1/verify

Erstellt eine neue Verifizierungs-Session.

Request Body

Parameter Typ Pflicht Beschreibung
vorname String Ja Vorname wie auf dem Ausweis
nachname String Ja Nachname wie auf dem Ausweis
geburtsdatum String Ja Geburtsdatum im Format TT.MM.JJJJ
return_url String Nein URL für Redirect nach Abschluss

Response (Erfolg)

{
    "success": true,
    "session_id": "550e8400-e29b-41d4-a716-446655440000",
    "token": "abc123xyz...",
    "verify_url": "https://api.verify.enjyn.de/verify/abc123xyz...",
    "qr_url": "https://api.verify.enjyn.de/api/v1/qr-code/abc123xyz..."
}

Response Felder

Feld Beschreibung
session_id Eindeutige ID der Session (zum späteren Abrufen des Ergebnisses)
token Einmaliger Token für die Verifizierungs-URL
verify_url Link, den der Nutzer öffnen muss
qr_url URL zu einem QR-Code-Bild (PNG) für mobile Nutzung

GET /api/v1/get-result/{session_id}

Ruft das Ergebnis einer Verifizierung ab.

Response (Erfolg)

{
    "success": true,
    "status": "verified",
    "vorname": "Max",
    "nachname": "Mustermann",
    "geburtsdatum": "01.01.1990",
    "face_confidence": 87.5,
    "verified_at": "2025-12-28T14:30:00Z",
    "created_at": "2025-12-28T14:25:00Z",
    "data_available": true
}

Status-Werte

Status Bedeutung
pending Session erstellt, Verifizierung noch nicht gestartet
processing Verifizierung läuft gerade
verified Verifizierung erfolgreich abgeschlossen
failed Verifizierung fehlgeschlagen
expired Session abgelaufen (nach 1 Stunde)
⚠️ Achtung: Personendaten (Vorname, Nachname, Geburtsdatum) werden nach 10 Minuten anonymisiert. Der Status bleibt bis zu 30 Tage abrufbar.

GET /api/v1/check-status/{token}

Prüft den aktuellen Status einer laufenden Verifizierung (z.B. für Polling).

Response

{
    "success": true,
    "status": "processing",
    "has_front_image": true,
    "has_back_image": true,
    "has_liveness": false,
    "face_confidence": null,
    "verified_at": null
}

GET /api/v1/qr-code/{token}

Generiert einen QR-Code als PNG-Bild für die Verifizierungs-URL.

Response

Gibt ein PNG-Bild zurück (Content-Type: image/png).

<img src="https://api.verify.enjyn.de/api/v1/qr-code/abc123xyz..." alt="QR-Code">

Callback / Redirect

Wenn Sie eine return_url angeben, wird der Nutzer nach Abschluss der Verifizierung dorthin weitergeleitet. Die URL erhält Query-Parameter mit dem Ergebnis:

Erfolgreiche Verifizierung

https://ihre-seite.de/callback?status=success&session_id=550e8400-e29b-41d4-a716-446655440000

Fehlgeschlagene Verifizierung

https://ihre-seite.de/callback?status=failed&session_id=550e8400-e29b-41d4-a716-446655440000

Abgelaufene Session

https://ihre-seite.de/callback?status=expired&session_id=550e8400-e29b-41d4-a716-446655440000
✅ Best Practice: Verlassen Sie sich nicht allein auf den Redirect-Status. Rufen Sie immer zusätzlich /api/v1/get-result/{session_id} auf, um das Ergebnis serverseitig zu verifizieren.

Verifizierungsprozess

So läuft die Verifizierung aus Sicht des Nutzers ab:

  1. Link öffnen: Der Nutzer öffnet den Verifizierungslink auf seinem Smartphone
  2. Ausweis-Vorderseite: Foto der Vorderseite des Personalausweises
  3. Ausweis-Rückseite: Foto der Rückseite des Personalausweises
  4. Liveness-Check: Kurzes Video mit Kopfbewegung zur Lebenderkennung
  5. Abschluss: Automatische Prüfung und Weiterleitung

Unterstützte Dokumente

  • Deutscher Personalausweis (Vorder- und Rückseite)
  • Deutscher Reisepass (Datenseite)

Prüfungen im Detail

OCR-Erkennung
Automatische Texterkennung auf dem Ausweisdokument. Extrahiert Name, Geburtsdatum und prüft auf "Bundesrepublik Deutschland".
Datenabgleich
Vergleich der OCR-Ergebnisse mit den bei der Session-Erstellung übermittelten Daten. Alle drei Felder (Vorname, Nachname, Geburtsdatum) müssen übereinstimmen.
Liveness-Detection
Analyse des Videos auf echte Kopfbewegungen, konsistente Gesichtserkennung über mehrere Frames und Schutz vor statischen Bildern oder Bildschirm-Wiedergaben.
Face-Match
Biometrischer Vergleich zwischen dem Gesicht auf dem Ausweis und dem Gesicht im Liveness-Video. Die Confidence wird als Prozentwert zurückgegeben.

Fehlerbehandlung

Die API gibt im Fehlerfall strukturierte JSON-Responses zurück:

{
    "success": false,
    "error": "Fehlerbeschreibung",
    "code": "ERROR_CODE"
}

HTTP Status Codes

Code Bedeutung
200 Erfolg
400 Ungültige Anfrage (fehlende Parameter)
403 Zugriff verweigert (Domain nicht autorisiert)
404 Session nicht gefunden
410 Session abgelaufen
429 Monatliches Limit erreicht
500 Interner Serverfehler

Fehler-Codes

Code Beschreibung Lösung
DOMAIN_NOT_WHITELISTED Ihre Domain ist nicht freigeschaltet Kontaktieren Sie uns zur Freischaltung
MONTHLY_LIMIT_REACHED Monatliches Kontingent aufgebraucht Upgrade auf höheres Kontingent
SESSION_EXPIRED Die Session ist abgelaufen (1h Limit) Neue Session erstellen
INVALID_DOCUMENT Dokument konnte nicht erkannt werden Nutzer soll besseres Foto machen
DATA_MISMATCH Daten stimmen nicht überein Eingabedaten prüfen
LIVENESS_FAILED Liveness-Check nicht bestanden Nutzer soll Video wiederholen
FACE_MISMATCH Gesicht stimmt nicht mit Ausweis überein Möglicherweise Betrugsversuch

Sicherheit & Datenschutz

Enjyn KYC wurde von Grund auf für maximalen Datenschutz entwickelt. Alle Daten werden auf deutschen Servern verarbeitet und unterliegen der DSGVO.

Datenlöschung

🔒 10-Minuten-Regel: Alle sensiblen Daten (Ausweisbilder, Videos, biometrische Daten) werden automatisch 10 Minuten nach Abschluss der Verifizierung unwiderruflich gelöscht.
Datentyp Löschung nach
Ausweisbilder (Vorder-/Rückseite) 10 Minuten
Liveness-Video 10 Minuten
Biometrische Daten 10 Minuten
Personendaten (Name, Geburtsdatum) 10 Minuten
Session-Metadaten (ID, Status) 30 Tage

Sicherheitsmaßnahmen

  • Ende-zu-Ende-Verschlüsselung: Alle Daten werden bei der Übertragung und Speicherung verschlüsselt
  • Kein Mitarbeiterzugriff: Sensible Daten werden ausschließlich von automatisierten Skripten verarbeitet
  • Deutsche Server: Alle Daten verbleiben auf Servern in Deutschland
  • DSGVO-konform: Vollständige Einhaltung der Datenschutz-Grundverordnung
  • SSL/TLS: Alle API-Verbindungen sind TLS-verschlüsselt

Warum wir das gebaut haben

💡 Hintergrund: Wir haben Enjyn KYC für ein internes Projekt entwickelt, weil wir keinen Anbieter finden konnten, bei dem wir verifizieren konnten, dass sensible Daten tatsächlich gelöscht werden. Bei den großen Anbietern war nie klar, was mit Ausweisbildern und biometrischen Daten passiert – und wie lange sie gespeichert werden.

Preise

Plan Preis Details
Kostenlos 0€ Bis 100 Verifizierungen pro Monat
Standard 25€ / 250 Verifizierungen + 15€ einmalige Freischaltgebühr
Custom Branding 280€ / Monat Eigenes Logo, Farben, Texte (Min. 3 Monate)

Preisvergleich

Anbieter Preis pro Verifizierung Kostenlos testen
Enjyn KYC ~0,10€ 100/Monat
IDnow ~1,50€ Nein
Veriff ~1,00€ Begrenzt
Onfido ~1,50€ Begrenzt

Code-Beispiele

PHP

<?php
// Session erstellen
$data = [
    'vorname' => 'Max',
    'nachname' => 'Mustermann',
    'geburtsdatum' => '01.01.1990',
    'return_url' => 'https://ihre-seite.de/callback'
];

$ch = curl_init('https://api.verify.enjyn.de/api/v1/verify');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = json_decode(curl_exec($ch), true);
curl_close($ch);

// Nutzer weiterleiten
header('Location: ' . $response['verify_url']);
?>

Python

import requests

# Session erstellen
response = requests.post('https://api.verify.enjyn.de/api/v1/verify', json={
    'vorname': 'Max',
    'nachname': 'Mustermann',
    'geburtsdatum': '01.01.1990',
    'return_url': 'https://ihre-seite.de/callback'
})

data = response.json()
print(f"Verifizierungs-Link: {data['verify_url']}")

# Später: Ergebnis abrufen
result = requests.get(f"https://api.verify.enjyn.de/api/v1/get-result/{data['session_id']}")
print(f"Status: {result.json()['status']}")

cURL

# Session erstellen
curl -X POST https://api.verify.enjyn.de/api/v1/verify \
  -H "Content-Type: application/json" \
  -d '{
    "vorname": "Max",
    "nachname": "Mustermann",
    "geburtsdatum": "01.01.1990",
    "return_url": "https://ihre-seite.de/callback"
  }'

# Ergebnis abrufen
curl https://api.verify.enjyn.de/api/v1/get-result/SESSION_ID

Häufige Fragen (FAQ)

Wie lange ist eine Session gültig?
Eine Session ist 1 Stunde nach Erstellung gültig. Danach wechselt der Status zu expired.
Kann ich das Design anpassen?
Ja, mit dem Custom Branding Paket (280€/Monat) können Sie Logo, Farben und Texte anpassen.
Werden auch österreichische/schweizer Ausweise unterstützt?
Aktuell werden nur deutsche Personalausweise und Reisepässe unterstützt. Weitere Dokumente sind in Planung.
Wie hoch ist die Erkennungsrate?
Bei guten Lichtverhältnissen und scharfen Fotos liegt die Erkennungsrate bei über 95%.
Was passiert bei schlechter Bildqualität?
Der Nutzer wird aufgefordert, ein neues Foto zu machen. Die OCR-Erkennung gibt Feedback zur Bildqualität.
Gibt es eine Sandbox/Testumgebung?
Nein, aber Sie können mit dem kostenlosen Kontingent (100/Monat) auf der Produktivumgebung testen.
Wie kann ich mein Kontingent erhöhen?
Kontaktieren Sie uns unter kontakt@enjyn.de für ein Upgrade.
Werden die Daten für KI-Training verwendet?
Nein. Alle Daten werden ausschließlich für die Verifizierung verwendet und danach gelöscht. Es findet kein Training statt.

Kunden-Dashboard

Als freigeschalteter Kunde erhalten Sie Zugang zum Kunden-Dashboard unter:

https://api.verify.enjyn.de/tenant/

Im Dashboard können Sie:

  • Ihre aktuelle Nutzung und das verbleibende Kontingent einsehen
  • Alle durchgeführten Verifizierungen (ohne persönliche Daten) sehen
  • Die Erfolgsrate Ihrer Verifizierungen überwachen
ℹ️ Info: Die Zugangsdaten für das Dashboard erhalten Sie bei der Domain-Freischaltung per E-Mail.

Support & Kontakt

Bei Fragen oder Problemen erreichen Sie uns unter:

🚀 Bereit loszulegen? Fordern Sie jetzt Ihren kostenlosen API-Zugang an: Domain freischalten