Zum Hauptinhalt springen
Der Bericht zur Telefonverifizierung erfasst das vollständige Ergebnis einer Telefon-OTP-Abfrage: an wen der Code gesendet wurde, welcher Mobilfunkanbieter und welcher Kanal ihn übermittelt haben, wie viele Versuche erforderlich waren, ob es sich um eine Wegwerf- oder VoIP-Nummer handelt, sowie alle sitzungsübergreifenden Übereinstimmungen mit Ihrer Sperrliste oder Sitzungen anderer Benutzer. Diese Seite dokumentiert die JSON-Struktur, die vom Entscheidungs-Endpoint zurückgegeben wird, damit Sie OTP-Ergebnisse, Mobilfunkanbieter-Metadaten und Risikoflags für jede verifizierte Nummer parsen können.
Didit-Bericht zur Telefonverifizierung mit OTP-Ergebnis, Mobilfunkanbieter-Metadaten und Risikoflags

Übersicht

Ein Telefonbericht wird jedes Mal erstellt, wenn ein Workflow-Knoten die Funktion „Telefonverifizierung“ ausführt. Jeder Bericht stellt eine OTP-Abfrage für eine Telefonnummer dar und enthält:
  • Die Telefonnummer, aufgeschlüsselt in Vorwahl, nationale Rufnummer und vollständiges E.164-Format, sowie ISO-Ländercode und Ländername.
  • Mobilfunkanbieter-Metadaten (name, type), die über das Zielnetzwerk ermittelt wurden.
  • Boolesche Risikoflags (is_disposable, is_virtual), die aus der Leitungstypanalyse abgeleitet werden.
  • Den tatsächlich verwendeten Zustellkanal (verification_method) und die Anzahl der OTP-Sendeversuche.
  • Ein chronologisches lifecycle[]-Protokoll jedes Sende-, Wiederholungs- und Zustellungsereignisses sowie jedes Code-Prüfungsversuchs.
  • Ein matches[]-Array, das dieselbe Nummer in anderen Sitzungen anzeigt – unabhängig vom Status, über KYC, KYB und eigenständige API-Verifizierungen hinweg – oder auf Ihrer Sperrliste.
  • Ein warnings[]-Array – Risikoereignisse, die während der Verifizierung ausgegeben wurden (siehe Warnungen der Telefonverifizierung).
  • Eine node_id, die angibt, welcher Workflow-Graph-Knoten den Bericht erstellt hat (nur V3-Sitzungen).
Bei gehosteten Verifizierungsabläufen führt Didit den OTP-Austausch für Sie durch. Bei direkten API-Integrationen besteht derselbe Ablauf aus zwei Aufrufen – POST /v3/phone/send/ zur Zustellung des Codes und POST /v3/phone/check/ zur Validierung der Benutzereingabe. Ein ausstehendes OTP ist ab dem ersten Senden 5 Minuten lang gültig (Wiederholungsversuche verlängern das Zeitfenster nicht). In Workflow-Sitzungen stehen Benutzern standardmäßig 2 OTP-Sendeversuche (phone_max_retries) und 2 Codeeingabeversuche (phone_max_check_attempts) zur Verfügung – beides lässt sich pro Workflow-Knoten anpassen; das Erreichen eines der beiden Limits schließt den Schritt als Declined mit VERIFICATION_CODE_ATTEMPTS_EXCEEDED ab. Die eigenständige Telefon-API erlaubt 3 Codeeingabeversuche pro Verifizierung.

Wo es in API-Antworten erscheint

Der Entscheidungs-Endpoint (GET /v3/session/{sessionId}/decision/) gibt Telefonberichte unter dem Plural-Array-Schlüssel phone_verifications zurück. Das Array enthält einen Eintrag pro Telefonverifizierungsknoten im Workflow-Graph – typischerweise einen; Step-up-Abläufe können jedoch mehrere erzeugen.
Ein null-Wert bedeutet, dass noch kein Telefonverifizierungsschritt ausgeführt wurde. Iterieren Sie über das Array (anstatt phone_verifications[0] auszulesen), wenn Ihr Workflow mehr als eine Telefonnummer erfassen kann.

Schema

Das kanonische feldbasierte Schema finden Sie auf der Seite Datenmodelle.

Statuswerte

Lifecycle-Ereignistypen

lifecycle[] ist chronologisch sortiert. Jedes Ereignis enthält type, timestamp, details und eine abrechenbare fee (sofern zutreffend): Die details-Payload hängt von der Ereignisfamilie ab:
  • Sendeereignisse (PHONE_VERIFICATION_MESSAGE_SENT, PHONE_VERIFICATION_RETRY_MESSAGE_SENT, PHONE_VERIFICATION_BLOCKED) – { status, reason, channel, actual_channel }. status ist Success, Retry oder Blocked; reason ist null, es sei denn, der Versand wurde blockiert (invalid_phone_number, repeated_attempts, suspicious, spam, unknown); channel ist der angeforderte Kanal und actual_channel der Kanal, über den tatsächlich zugestellt wurde (z. B. ein WhatsApp-Versand mit Fallback auf SMS).
  • Zustellungsereignisse (PHONE_DELIVERY_DELIVERED, PHONE_DELIVERY_UNDELIVERABLE) – { channel, status } mit status als delivered oder undeliverable.
  • Prüfungsereignisse (VALID_CODE_ENTERED, INVALID_CODE_ENTERED) – { code_tried, status } mit status als Approved, Declined, Failed oder Expired or Not Found.
  • Endstatusereignisse – null, außer PHONE_VERIFICATION_DECLINED / PHONE_VERIFICATION_IN_REVIEW, die { "reason": "<risk code>" } enthalten (z. B. PHONE_NUMBER_IN_BLOCKLIST).
fee bei einem Sendeereignis ist der Gesamtpreis dieses Versands: der Carrier- oder WhatsApp-Preis zuzüglich der Didit-Gebühr von $0.02 bzw. nur die Didit-Gebühr von $0.02 für einen WhatsApp-Code, der über Ihre eigene WhatsApp Business-Nummer gesendet wurde. Es ist der geschätzte Preis, bis die Zustellung bestätigt wird, und danach der tatsächlich in Rechnung gestellte Betrag. Nur Blocked-Sendungen sind garantiert kostenlos: Jeder andere Versand wird berechnet, sobald die Verifizierung abgeschlossen ist oder abläuft, selbst wenn die Zustellung nie bestätigt wurde oder die Nachricht unzustellbar war. Zustellungs-, Prüfungs- und Statusereignisse enthalten immer fee: 0.

Sitzungsübergreifende Übereinstimmungen

matches[] erfasst andere Sitzungen in derselben Anwendung, bei denen dieselbe Nummer aufgetreten ist – über KYC-, KYB- und eigenständige API-Verifizierungen hinweg, unabhängig von ihrem Status – sowie Sperrlistentreffer, die in den Management-API-Listen konfiguriert sind. Sitzungen, die dieselben vendor_data wie die aktuelle Sitzung aufweisen, werden ausgeschlossen (derselbe Endbenutzer wird nicht mit sich selbst abgeglichen), und das Array ist auf 5 Einträge begrenzt. Wenn die Nummer auf Ihrer Sperrliste steht, aber keine der übereinstimmenden Sitzungen auf der Sperrliste geführt wird, wird dem Array ein synthetischer Eintrag mit source: "list_entry" (alle Sitzungsfelder null) vorangestellt.

Beispiele

Approved – WhatsApp-OTP, Mobilfunkanbieter

Declined – VoIP-Nummer auf Sperrliste

Der Benutzer hat ein gültiges OTP eingegeben, aber beim Abschluss wurde die Nummer auf der Sperrliste der Anwendung gefunden (automatische Ablehnung) und der Leitungstyp der Nummer als VoIP gekennzeichnet (voip_number_action verblieb auf NO_ACTION, weshalb sie als information protokolliert wird). Da keine der übereinstimmenden Sitzungen auf der Sperrliste steht, erscheint der Sperrlistentreffer als synthetischer list_entry-Treffer.

Verwandte Themen

Zuletzt geändert am 7. November 2026