Zum Hauptinhalt springen

Übersicht

Jedes Berichtsobjekt pro Funktion folgt der V3-Serializer-Struktur, die in service-didit-verification definiert ist. Dasselbe Objekt erscheint an drei Stellen, daher ist das Schema hier die einzige maßgebliche Quelle für alle drei:
  • GET /v3/session/{sessionId}/decision/: Jede Funktion wird als Array mit einem Pluralnamen zurückgegeben (id_verifications[], nfc_verifications[], liveness_checks[], face_matches[], poa_verifications[], phone_verifications[], email_verifications[], aml_screenings[], ip_analyses[], database_validations[], questionnaire_responses[], signatures[], bank_verifications[] (siehe Bankverifizierungsmethoden) sowie die entsprechenden KYB-Arrays registry_checks[], document_verifications[], key_people_checks[]).
  • Webhook-Payloads (status.updated, data.updated): gleiche Struktur innerhalb der decision-Hülle.
  • Eigenständige APIs: Antworten mit einem einzelnen Objekt (Gesichtssuche, Altersschätzung, biometrische Authentifizierung) verwenden dieselben Felder.
V3 hat Multi-Instance-Workflows eingeführt: Jedes Funktionsobjekt enthält eine node_id, die den Bericht dem Workflow-Graph-Knoten zuordnet, der ihn erzeugt hat. V2-Endpoints (im Singular kyc, face, aml usw.) bleiben abwärtskompatibel, geben aber nur die erste Instanz zurück.

Gemeinsame Felder

Jedes Berichtsobjekt enthält die folgenden Felder: Medienfelder (portrait_image, front_image, document_file, …) sind vorsignierte URLs mit begrenzter Gültigkeitsdauer. Laden Sie diese zeitnah herunter, statt die URL dauerhaft zu speichern. Beispiele zeigen sie als https://<media-host>/....

Warnungsobjekt

Wird in jedem warnings[]-Array zurückgegeben. Schema aus logs/serializers/log.py:8-65 (LogV3Serializer).

Berichtsobjekte

Die übrigen Abschnitte behandeln jedes funktionsspezifische Berichtsobjekt. Die Überschriften der dritten Ebene (H3) sind bewusst stabil gehalten, damit andere Dokumente direkt darauf verlinken können.

Ausweisverifizierung

Wird für jedes KYC-/Ausweisdokument zurückgegeben, das ein Benutzer einreicht. Erscheint als id_verifications[] in GET /v3/session/{sessionId}/decision/ und innerhalb des Felds kyc bei V2-Antworten. Quelle: kyc/serializers/kyc.py:383-414 (IDVerificationV3Serializer, erweitert IDVerificationV2Serializer aus kyc/serializers/kyc.py:320-380).
Dasselbe Objekt bei einer Nicht-Dokument-Methode. Nur die methodenspezifischen Schlüssel ändern sich: Alles, was ein Dokumentenlesevorgang ausfüllt, wird stattdessen aus dem Registereintrag oder den Wallet-Attributen befüllt, und die nicht zutreffenden Schlüssel sind null.

NFC-Verifizierung

Wird für jeden Chip-Lesevorgang gegen ein Ausweisdokument zurückgegeben: ein ICAO-9303-ePassport- oder eID-Chip oder eine über JPKI gelesene Japan My Number Card (chip_protocol: "jpki"). Erscheint als nfc_verifications[] in GET /v3/session/{sessionId}/decision/ (eine je übergeordnetem KYC-Datensatz). Quelle: kyc/serializers/epassport.py:121-139 (NFCV3Serializer, erweitert NFCV2Serializer bei kyc/serializers/epassport.py:83-118).

Liveness-Prüfung

Wird pro Liveness-Sitzung zurückgegeben. Erscheint als liveness_checks[] in GET /v3/session/{sessionId}/decision/. Quelle: face/serializers/face.py:301-320 (LivenessV3Serializer, erweitert LivenessV2Serializer unter face/serializers/face.py:216-298).

Gesichtsabgleich

Wird pro Gesichtsabgleich zurückgegeben (typischerweise das Liveness-Gesicht des Benutzers gegen das Dokumentenporträt). Erscheint als face_matches[] in GET /v3/session/{sessionId}/decision/. Quelle: face/serializers/face.py:367-389 (FaceMatchV3Serializer, erweitert FaceMatchV2Serializer unter face/serializers/face.py:323-364).

Gesichtssuche

Wird von der eigenständigen Gesichtssuche-API (POST /v3/face-search/) zurückgegeben. Die Gesichtssuche erscheint nie als Array mit mehreren Elementen in /v3/session/{sessionId}/decision/. Wenn sie mit save_api_request=true gespeichert wird, taucht die Sitzung dort als Eintrag FACE_SEARCH in features[] auf, zusammen mit einem Element liveness_checks[], das die gespeicherten matches enthält. Quellen: apis/serializers/face_search.py:8-79 (FaceSearchResponseSerializer, das FaceSearchDetailsSerializer umschließt); die Trefferobjekte (Dictionaries) werden in face/utils/utils.py:869-884 erzeugt. Antwort auf oberster Ebene: face_search-Objekt:

Gesichtssuche-Trefferobjekt

AML-Screening

Wird pro geprüfter Entität zurückgegeben. Erscheint als aml_screenings[] in GET /v3/session/{sessionId}/decision/ sowohl für KYC- als auch für KYB-Sitzungen. Quelle: aml/serializers/aml.py:63-85 (AMLV3Serializer, erweitert AMLV2Serializer in aml/serializers/aml.py:28-60).

IP-Analyse

Wird pro erfasstem Netzwerkstandort zurückgegeben. Erscheint als ip_analyses[] in GET /v3/session/{sessionId}/decision/ für KYC- und KYB-Sitzungen. Quelle: kyc/serializers/location.py:196-243 (IPAnalysisSerializerV3).

Standortverifizierung

Wird pro Standortverifizierung-Schritt zurückgegeben. Erscheint als geolocation_checks[] in GET /v3/session/{sessionId}/decision/: ein Eintrag pro Schritt, und zwar dessen akzeptierter Versuch. geolocation_attempts[] listet jeden Versuch jedes Schritts auf, wobei der älteste zuerst aufgeführt wird. Beide sind null bei einem Workflow ohne diesen Schritt. Quelle: GeolocationDecisionSerializer. Alle Felder und Beispiele finden sich im Bericht zur Standortverifizierung.

Adressnachweis

Wird pro eingereichtem Adressdokument zurückgegeben. Erscheint als poa_verifications[] in GET /v3/session/{sessionId}/decision/. Quelle: poa/serializers/poa.py:212-227 (POAV3Serializer, erweitert POAV2Serializer unter poa/serializers/poa.py:173-209).

Telefonverifizierung

Wird pro Telefonverifizierungsversuch zurückgegeben. Erscheint als phone_verifications[] in GET /v3/session/{sessionId}/decision/ für KYC- und KYB-Sitzungen. Quelle: phone/serializers/phone.py:251-266 (PhoneV3Serializer, erweitert PhoneV2Serializer unter phone/serializers/phone.py:103-248).

E-Mail-Verifizierung

Wird pro E-Mail-Verifizierungsversuch zurückgegeben. Erscheint als email_verifications[] in GET /v3/session/{sessionId}/decision/ für KYC- und KYB-Sitzungen. Quelle: email_verification/serializers/email.py:149-164 (EmailV3Serializer, erweitert EmailV2Serializer unter email_verification/serializers/email.py:38-146).

Datenbankvalidierung

Wird pro Datenbankabfrage zurückgegeben, die mit den übermittelten Daten des Benutzers ausgeführt wurde. Erscheint als database_validations[] in GET /v3/session/{sessionId}/decision/. Quelle: database_validation/serializers/database_validation.py:21-142 (DatabaseValidationV3Serializer, erweitert DatabaseValidationV2Serializer).

Fragebogen-Antwort

Wird pro Fragebogen-Übermittlung zurückgegeben. Erscheint als questionnaire_responses[] in GET /v3/session/{sessionId}/decision/ für KYC- und KYB-Sitzungen. Quelle: questionnaires/serializers/questionnaire.py:591-597 (QuestionnaireResponseV3Serializer, erweitert QuestionnaireResponseSerializer unter questionnaires/serializers/questionnaire.py:520-588).

E-Signatur

Wird pro Unterzeichner eines E-Signatur-Schritts zurückgegeben. Erscheint als signatures[] in GET /v3/session/{sessionId}/decision/ für KYC- und KYB-Sitzungen, nur wenn der Workflow diesen Schritt enthält. Anders als die übrigen Berichtsobjekte ist sein status die Unterschriftsphase, und das Ergebnis steht in verdict. Die Einträge in warnings[] sind { code, node_id } statt Warnungsobjekte. Der E-Signatur-Bericht enthält ein vollständiges Beispiel und alle verschachtelten Felder.

Altersschätzung

Wird von der eigenständigen Altersschätzungs-API (POST /v3/age-estimation/) zurückgegeben. Die Antwort enthält einen Teil der Struktur von Liveness check in einer age_estimation-Hülle: status, method, score, age_estimation, warnings. Dazu kommt ein nur im eigenständigen Modus verfügbarer user_image-Block zur Gesichtsdetektion. Sie enthält nicht reference_image, video_url, matches, face_quality oder face_luminance. In Workflow-Sitzungen gibt es kein separates Array: Das geschätzte Alter erscheint als liveness_checks[].age_estimation in GET /v3/session/{sessionId}/decision/. Quelle: apis/serializers/age_estimation.py:50-55 (AgeEstimationResponseSerializer). Die Hülle wird in apis/views/age_estimation.py:138-174 zusammengesetzt.

Biometrische Authentifizierung

Die biometrische Authentifizierung führt dieselbe Liveness- und Gesichtsabgleich-Pipeline aus, die beim Standard-KYC verwendet wird. Das erfasste Gesicht wird jedoch mit dem vorhandenen Referenzbild des Benutzers verglichen, statt mit einem frisch per OCR ausgelesenen Dokumentporträt. Dafür gibt es keinen eigenen Serializer: GET /v3/session/{sessionId}/decision/ liefert die Standardobjekte Liveness-Prüfung und Gesichtsabgleich unter liveness_checks[] und face_matches[]. Der Workflow der Sitzung ist mit workflow_type = "biometric_authentication" konfiguriert (WorkflowTypeChoices, common/config/choices.py:636).

KYB-Unternehmensregister

Wird pro im Unternehmensregister bestätigtem Unternehmen in einem KYB-Workflow zurückgegeben. Erscheint als registry_checks[] in GET /v3/session/{sessionId}/decision/ für Unternehmenssitzungen. Quelle: kyb/serializers/kyb.py:939-964 (RegistryCheckV3Serializer).

Unternehmensobjekt

Aus kyb/serializers/kyb.py:220-321 (KYBCompanyResponseSerializer).

KYB-Dokument

Wird pro Knoten zurückgegeben, der KYB-Nachweisdokumente erfasst. Erscheint als document_verifications[] in GET /v3/session/{sessionId}/decision/ für Unternehmenssitzungen: ein Eintrag pro node_id, wobei items[] jedes hochgeladene Dokument auflistet. Quelle: kyb/serializers/kyb.py:1053-1068 (DocumentVerificationV3Serializer); jedes Element entspricht kyb/serializers/kyb.py:811-851 (KYBDocumentResponseSerializer).

KYB-Dokumentelement-Objekt

KYB-Schlüsselperson

Wird pro Knoten „Key People“ in einem KYB-Workflow zurückgegeben. Erscheint als key_people_checks[] in GET /v3/session/{sessionId}/decision/ für Unternehmenssitzungen. Quelle: kyb/serializers/kyb.py:967-1050 (KeyPeopleCheckV3Serializer).

Felder auf Entscheidungsebene

Diese Schlüssel stehen neben den Funktions-Arrays bei GET /v3/session/{sessionId}/decision/ und innerhalb von decision in einem Webhook. Informationen zum Lesen dieser Felder finden Sie unter Sitzung abrufen.

Biometrische Einwilligung

Jede Entscheidung zur Benutzerverifizierung und jeder Sitzungs-Webhook enthält ein einzelnes biometric_consent-Objekt (kein Array). Es gibt an, ob die Sitzung eine ausdrückliche biometrische Einwilligung erforderte, warum dies erforderlich war und welcher Nachweis für die Antwort vorliegt. Es ist null, wenn die Sitzung nie ausgewertet wurde, zum Beispiel bei einem Workflow ohne Gesichtsaufnahme. Quelle: BiometricConsentDecisionSerializer (sessions/serializers/biometric_consent.py). Wann der Schritt erscheint und was die einzelnen Fälle bedeuten, wird unter Biometrische Einwilligung erklärt. Felder ohne erfassten Wert sind null, niemals ein leerer String. Eine Sitzung in Illinois, die mit einem nativen SDK unterhalb von 4.10.0 durchgeführt wurde und bei der das Selfie ohne den Schritt aufgenommen wurde:
Eine Person über ein VPN mit Ausgang außerhalb der USA, die auf der gehosteten Verifizierungsseite zugestimmt hat:

Status-Aufzählung

Zwei verwandte Wertebereiche verwenden den Feldnamen status. Jedes Berichtsobjekt auf Funktionsebene auf dieser Seite verwendet die Aufzählung auf Funktionsebene. Der Top-Level-status der übergeordneten Sitzung verwendet die umfassendere Sitzungsaufzählung.

Status auf Funktionsebene

Wird vom Feld status jedes Berichtsobjekts verwendet. Quelle: common/config/choices.py:343-348 (FeatureStatusChoices). Telefonverifizierung, E-Mail-Verifizierung und Ausweisverifizierung können zusätzlich Expired zurückgeben, wenn ihr Schritt abläuft (PhoneStatusChoices in common/config/choices.py:377-382, EmailStatusChoices in common/config/choices.py:434-439).

Status auf Sitzungsebene

Wird vom Top-Level-status der übergeordneten Sitzung verwendet. Quelle: common/config/choices.py:106-117 (StatusChoices).
Die endgültigen Sitzungswerte sind Approved, Declined, In Review, Expired, Kyc Expired und Abandoned. Eine Sitzung kann ihre Gesamtentscheidung erreichen, während eine einzelne Funktion weiterhin In Review ist.
Zuletzt geändert am 7. November 2026